VB 明华读卡器对IC卡进行操作

眯眯豆儿 2010-07-28 01:05:48
最近在用明华读卡器写IC卡,结果调用自带dll是进行到选卡一步总是失败。请各位前辈指教一下下。

自带dll如下:

int rf_request(int icdev,unsigned char _Mode,unsigned int *TagType); 讯卡请求
int rf_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr); 防冲突
int rf_select(int icdev,unsigned long _Snr,unsigned char *_Size);选卡

我在VB调用是模块如下:

Declare Function rf_request Lib "mwrf32.dll" (ByVal icdev As Long, ByVal Mode$, ByRef TagType As Byte) As Integer
Declare Function rf_anticoll Lib "mwrf32.dll" (ByVal icdev As Long, ByVal Mode$, ByRef Snr As Byte) As Integer

Declare Function rf_select Lib "mwrf32.dll" (ByVal icdev As Long, ByRef Snr As Byte, ByRef Size As Byte) As Integer
选卡也试过
Declare Function rf_select Lib "mwrf32.dll" (ByVal icdev As Long, ByRef Snr As Byte, Byval Size$) As Integer
都是失败的

代码如下:

fh = rf_request(fd, &H1, &H4)

Dim Snr(3) As Byte

fh = rf_anticoll(fd, vbNullString, Snr(0)) '卡防冲突
Dim Size(4) As Byte
fh = rf_select(fd, Snr(0), Size(0))
或者
dim size
fh = rf_select(fd, Snr(0), Size)

执行到选卡总是失败,其他的都成功。急的抓耳挠腮的啊
...全文
871 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
眯眯豆儿 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yachong 的回复:]
引用 11 楼 wjzimu 的回复:
悲剧了,就这个问题,俺请教了明华总部技术人员。结果。。。。无奈的换了握奇的读卡器。。。。。

如果是大批采购,厂家技术人员肯定会帮你搞定。
[/Quote]

高见啊
用户 昵称 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wjzimu 的回复:]
悲剧了,就这个问题,俺请教了明华总部技术人员。结果。。。。无奈的换了握奇的读卡器。。。。。
[/Quote]
俺们基本上只用gemplus的读卡器。
yachong 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wjzimu 的回复:]
悲剧了,就这个问题,俺请教了明华总部技术人员。结果。。。。无奈的换了握奇的读卡器。。。。。
[/Quote]
如果是大批采购,厂家技术人员肯定会帮你搞定。
眯眯豆儿 2010-08-03
  • 打赏
  • 举报
回复
悲剧了,就这个问题,俺请教了明华总部技术人员。结果。。。。无奈的换了握奇的读卡器。。。。。
眯眯豆儿 2010-08-02
  • 打赏
  • 举报
回复
谢谢各位帮忙!我联系了一下,明华技术工作人员,他们也不知道,郁闷死了,无奈之下,换了读卡器了。嗨,VB6受歧视啊
用户 昵称 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sgb44 的回复:]
嗯,俺是德卡广州办事处
[/Quote]
再拉个爪,俺用过这个,不过不是德卡的。
sgb44 2010-08-02
  • 打赏
  • 举报
回复
嗯,俺是德卡广州办事处
用户 昵称 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sgb44 的回复:]
怎么不用我的设备啊,比明华的好用,而且是 U口无驱动的呢。。

Declare Function dc_request Lib "dcrf32.dll" (ByVal icdev As Long, ByVal mode%, tagtype As Long) As Integer
Declare Function dc_anticoll Lib "dcrf32.dll" (ByVal icde……
[/Quote]
拉个爪,德卡的dll?
sgb44 2010-07-31
  • 打赏
  • 举报
回复
怎么不用我的设备啊,比明华的好用,而且是 U口无驱动的呢。。

Declare Function dc_request Lib "dcrf32.dll" (ByVal icdev As Long, ByVal mode%, tagtype As Long) As Integer
Declare Function dc_anticoll Lib "dcrf32.dll" (ByVal icdev As Long, ByVal bcnt%, snr As Long) As Integer
Declare Function dc_select Lib "dcrf32.dll" (ByVal icdev As Long, ByVal snr As Long, size As Byte) As Integer
Declare Function dc_card Lib "dcrf32.dll" (ByVal icdev As Long, ByVal mode%, snr As Long) As Integer

照我的定义改一下就可以了

snr 就用 long 就可以了,溢出时是负值,这个时候不需要当心,转成 unsigned long 就可以了。


做做广告
欢迎使用我的智能卡设备 http://www.qiangsh.com
贝隆 2010-07-29
  • 打赏
  • 举报
回复
没有接触过,UP
眯眯豆儿 2010-07-29
  • 打赏
  • 举报
回复

of123:
我试了您的方法,可是执行的时候会提示溢出啊,在防冲突的阶段 snr 的值很大,超过了long类型的定义。。。。。。。
hongsongboy 2010-07-29
  • 打赏
  • 举报
回复
我也在找这方面的资料,希望高人指点下。
现在我的测试卡的0-3扇区不能读出来了,该怎么办,如何修改密码或者清空卡的信息

希望高手指点下,读内容、写内容的具体流程。
QQ:11533609
of123 2010-07-28
  • 打赏
  • 举报
回复
int rf_request(int icdev,unsigned char _Mode, unsigned int *TagType); 讯卡请求

Declare Function rf_request Lib "mwrf32.dll" (Byval icdev As Long, ByVal Mode As Byte, ByRef TagType As Long) As Long

int rf_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr); 防冲突

Declare Function rf_anticoll Lib "mwrf32.dll" (ByVal icdev As Long, ByVal Mode As Byte, ByRef Snr As Long) As Long

int rf_select(int icdev,unsigned long _Snr,unsigned char *_Size);选卡

Declare Function rf_select Lib "mwrf32.dll" (ByVal icdev As Long, ByRef Snr As Long, ByRef Size As Byte) As Integer

Dim Snr As Long, Type As Long, Size(3) As Byte

Type = 4
fh = rf_request(fd, 1, Type)

fh = rf_anticoll(fd, 0, Snr) '卡防冲突

fh = rf_select(fd, Snr, Size(0))

7,764

社区成员

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

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