当前位置: 代码迷 >> PB >> PB中读写IC卡4442有关问题
  详细解决方案

PB中读写IC卡4442有关问题

热度:21   发布时间:2016-04-29 08:50:02.0
PB中读写IC卡4442问题
代码如下,
Long Idev,li_Return,li_offset
integer counter
String pwd16,ls_oldpwd,ls_kh
String ls_temp,ls_temp2
IF IsNull(as_kh) THEN Return '卡号传入有为空.'
//判断卡号不能超过8位数
IF Len(as_kh)<>8 THEN Return '卡号需要8位.'

ls_kh = space(8)
ls_temp = space(3)
ls_oldpwd = space(6)
pwd16 = space(3)
//密码设置为8位

Idev = of_auto_init()
IF idev <0 THEN Return '读卡器初始化失败.'

li_Return = of_get_status(idev)

IF li_Return <>1 THEN
OF_IC_Exit(idev)
Return '请检查有无插入IC卡或检查设备是否开启.'
END IF

li_Return = chk_4442(idev) 
IF lI_Return <0 THEN
OF_IC_Exit(idev)
Return '检测到不是本公司IC卡,请确认.'
END IF


ls_oldpwd = '000000'//这白卡密码

//通过判断密码 然后是否已卖卡
li_Return = asc_hex(ls_oldpwd, pwd16,3)//把ASCII 密码转为16进制
IF li_Return <0 THEN
OF_IC_Exit(idev)
Return 'ASCII 密码转为16进制出错.'
END IF


li_Return = csc_4442(idev, 3,ref pwd16) //2010-05-24核对卡密码
IF li_Return <0 THEN
li_Return = rsct_4442(idev,ref counter)//读取错误次数
Messagebox('提示...','密码错误计数还剩次数['+String(counter)+'],为0后自动锁卡.')
OF_IC_Exit(idev)
Return '原卡密码不正确.'
END IF


li_offSet = 35 //写入卡号起始位置
//写入卡号
ls_kh = as_kh
//Messagebox('',ls_kh)
li_Return = swr_4442(idev, li_Offset, 8,ref ls_kh)
IF li_Return <>0 THEN
OF_IC_Exit(idev)
Messagebox('写卡失败代码',String(li_Return))
Return '卡号写入失败.'
END IF

//写入新的卡密码 
li_Return = asc_hex(is_pwd,pwd16,3)//把新的密码 ASCII 密码转为16进制
li_Return = wsc_4442(idev, 3, pwd16)
IF li_Return <>0 THEN
OF_IC_Exit(idev)
Return '卡密码写入出错.'
END IF  


//退出
OF_IC_Exit(idev)
//写好卡后需要保存记录到数据库中 K_LOG
of_save_KLOG(as_kh,0,0,'卖卡')

Return ''



___________________________________________________
以上红色代码是一直执行是错误的,三次就锁住卡了,
高手救小弟一把

------解决方案--------------------
li_Return = csc_4442(idev, 3, pwd16) //2010-05-24核对卡密码
IF li_Return <0 THEN
li_Return = rsct_4442(idev,ref counter)//读取错误次数
Messagebox('提示...','密码错误计数还剩次数['+String(counter)+'],为0后自动锁卡.')
OF_IC_Exit(idev)
Return '原卡密码不正确.'
END IF
这样试试看
------解决方案--------------------
探讨
li_Return = csc_4442(idev, 3, pwd16) //2010-05-24核对卡密码
IF li_Return <0 THEN
li_Return = rsct_4442(idev,ref counter)//读取错误次数
Messagebox('提示...','密码错误计数还剩次数['+String(counter)+'],为0后自动锁卡.')
OF_IC_Exi……
  相关解决方案