请开发过IC卡读写技术的同行们帮帮忙,现在我能够正确的读取IC卡内容,但却始终无法向IC卡内写入数据!

liu7537 2002-07-01 03:28:53
请开发过IC卡读写技术的同行们帮帮忙,现在我能够正确的读取IC卡内容,但却始终无法向IC卡内写入数据!
每次运行到向IC卡写数据的函数的时候,都返回一个错误代码(-129),正确的应该是(0)。我尝试了好长时间,一次也没有成功!但是往外读却没有毛病。
读卡器的故障基本可以排除。因此客户的一套Visual Foxpro应用程序一直在使用这个读卡器,读写都正常,可是当我用PB开发IC卡读写模块的时候就遇到了上述问题,只能读,不能写。请各位帮忙分析分析。谢谢。


附:写入数据的程序。

string ls_err,ls_data,ls_password
int ai_com=1,li_status1
long ll_baud,ll_icdev,st

if isnull(ai_com) or ai_com<=0 then ai_com=1

//¿ªÊ¼¡ª¡ª³õʼ»¯IC¿¨¶ÁдÆ÷¡£2002-06-30
ll_baud = chk_baud(ai_com)
if ll_baud<0 then
ls_err="ÎÞ·¨¼ì²â¶Á¿¨Æ÷µÄ²¨ÌØÂÊ£¡" ; return ls_err
end if

ll_icdev= ic_init(ai_com,ll_baud) //³õʼ»¯¶Á¿¨Æ÷£¬½¨Á¢Óë¶Á¿¨Æ÷µÄÁ¬½Ó¡£

st=get_status(ll_icdev,li_status1) //¼ì²â¶Á¿¨Æ÷µÄ״̬
If st<>0 Then
ls_err="ÎÞ·¨³õʼ»¯¶Á¿¨Æ÷£¬µ±Ç°¶Á¿¨Æ÷²»¿ÉÓã¡" ; goto err
End If
if li_status1=0 then
ls_err='Çë²å¿¨£¡' ; goto err
end if
//½áÊø¡ª¡ª³õʼ»¯IC¿¨¶ÁдÆ÷¡£2002-06-30

//¿ªÊ¼¡ª¡ªÐ´Èë¶Á¿¨Æ÷¡£2002-07-01
//****** ?? hex ffffff *****
//password=chr(255)+chr(255)+chr(255)
//st=callfn(csc_4442,icdev,3,@password)
//if st<>0
// ? chr(7)+chr(7)
// wait wind " "+CHR(13)+" ???? "+CHR(13) time 2
// st=callfn(ic_exit,icdev)
// retu
//endi
ls_password=char(255)+char(255)+char(255)
st = csc_4442(ll_icdev, 3, ref ls_password)
If st <> 0 Then
ls_err="¶Á¿¨Æ÷ÃÜÂëÑéÖ¤´íÎó£¡" +string(st); goto err
End If

ls_data=as_data
int ll_offset = 48,ll_length = 6
st = swr_4442(ll_icdev, ll_Offset, ll_length, ref ls_data)
If st < 0 Then
ls_err="ÎÄ×ÖÐÅÏ¢ÎÞ·¨Ð´Èë¶Á¿¨Æ÷¡£" +string(st); goto err
End If
//½áÊø¡ª¡ªÐ´Èë¶Á¿¨Æ÷¡£2002-07-01

//¿ªÊ¼¡ª¡ª¶Ï¿ªÓëIC¿¨¶ÁдÆ÷µÄÁ¬½Ó¡£2002-06-30
st=ic_exit(ll_icdev) //¶Ï¿ªÓëIC¿¨¶ÁдÆ÷µÄÁ¬½Ó¡£
//½áÊø¡ª¡ª¶Ï¿ªÓëIC¿¨¶ÁдÆ÷µÄÁ¬½Ó¡£2002-06-30

return 'OK'
err:
st=ic_exit(ll_icdev) //¶Ï¿ªÓëIC¿¨¶ÁдÆ÷µÄÁ¬½Ó¡£
return ls_err
...全文
928 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenglaotou 2002-08-18
  • 打赏
  • 举报
回复
gz
zhidian21 2002-07-02
  • 打赏
  • 举报
回复
一般是连续三次密码失败,会把卡锁死的。另外要注意必要使用一次性写函数,也是会写死的。
zhidian21 2002-07-02
  • 打赏
  • 举报
回复
这样的卡都需要见证密码的,才能写入。必须的。
zhidian21 2002-07-02
  • 打赏
  • 举报
回复
你可以读卡,说明的端口及读卡器的初始化是正确的,但要在操作的时候进行关闭初始化和进行从新初始化,另外读卡是不需要密码的,而写卡需要卡的验证密码,所以密码必须通过才可以。另外还有看看卡类别是不是正确,比如说是4428或4442等。还有调用的外部函数对于不同的类型卡函数是不同的。所以要注意,在读卡器的说明书上有说明,还用一张软盘,上面有例子。你要没有可以到网上或供应商提出所要。
yyhyan 2002-07-02
  • 打赏
  • 举报
回复
■■OK■■
llsyhy 2002-07-02
  • 打赏
  • 举报
回复
同意楼上的
hiddendragon21cn 2002-07-02
  • 打赏
  • 举报
回复
楼上说的是对的,写入时是需要注意校验密码的问题,一旦超过次数就会锁死IC卡. 卖IC卡读写器给你的厂商应该会有一份说明书给你的,也就是如何使用那些DLL函数,好象就有说明写入的流程问题,我记得以前开发的时候是有的,不知道你手上的是如何了,呵呵^_^
zqllyh 2002-07-02
  • 打赏
  • 举报
回复
呵呵,有些卡写入时要横放,而读卡时怎么放都可以。
zqllyh 2002-07-02
  • 打赏
  • 举报
回复
呵呵,有些卡写入时要横放,而读卡时怎么放都可以。
wallis 2002-07-02
  • 打赏
  • 举报
回复
liu7537 2002-07-02
  • 打赏
  • 举报
回复
感谢前面各位朋友的帮助,现在问题已经解决!

问题的原因就是前面朋友所说的那样,写入的时候必须校验密码,然后才能写入。而我最开始由于不知道校验密码的事情,胡乱尝试了几次,结果那张卡被锁死了,而我还不知道。后来换个新卡就没再出现那样的问题。

顺便告诉大家,如果4442卡写入函数返回值是(-129),就说明这张一被锁死,需要更换卡了。这可是我的经验总结呀,希望后来的朋友不要再走这个弯路。

再次表示感谢!
liulee 2002-07-02
  • 打赏
  • 举报
回复
你的代码怎么回事?全是foxpro中的宏。
检查如下环节:
1.试验卡已失效(三次密码错误即锁死);
2.调用函数有无问题;
3.分析foxpro的代码,一般可以照抄的。
liu7537 2002-07-01
  • 打赏
  • 举报
回复
非常感谢前面几位哥们的热心帮助,等到结帖的时候分数少不了大家的。

特别感谢wallis(wallis) 和ckc(火)两位兄弟,因为我感觉你们两个的回复更加有可能。

事实上我在调试的过程中一开始的确是没有调用校验密码的程序,尝试了多少次我记不清了,反正是超过三次了。明天我再弄一张卡试验一下。

那么现在就此问题,本人再发布一个问题,向各位高手确认一下。

我用的是4442卡,4442卡是不是真的必须先校验密码,然后才能写入?
ckc 2002-07-01
  • 打赏
  • 举报
回复
4442卡啊。4442卡要先校验密码,然后才可以写入。你的过程好象是对的。
校验密码后报告什么信息?是不是正常啊。
另外,4442卡3次校验失败就无法再写入了,我怀疑你的卡在你调试的时候已经被搞坏了,你可以换新卡试试。
wallis 2002-07-01
  • 打赏
  • 举报
回复
先要看你的ic卡是否是加密卡,一般ic卡无须密码便可以读取数据,但写数据一定要卡的密码。
Methodor 2002-07-01
  • 打赏
  • 举报
回复
除非做过相同的项目,否则没人看你的代码~
建议从可正常使用的foxpro代码入手~
blackcorbie 2002-07-01
  • 打赏
  • 举报
回复
你的卡没有问题吗?要看看连接的动态库是不是有代码错误!
zhangnanonnet 2002-07-01
  • 打赏
  • 举报
回复
哥们,你用的卡是不是被锁死了,拿去别的地方读读。你贴的代码没什么意义,IC卡这东西现在还没标准的规范,谁知道你用的是什么读卡器和卡,是是什么卡你还是查差卡吧

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧