用VB编程实现,调用函数,想用Text1文本框向读卡器里写入数据,用Text2文本框向读卡器里读出数据,但是不知道要怎么实现,请求高手帮助!!!
代码如下:'读卡函数声明
Private Declare Function piccreadex Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal picckey As Long, ByVal piccdata0_2 As Long) As Byte'写卡函数声明
Private Declare Function piccwriteex Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal picckey As Long, ByVal piccdata0_2 As Long) As Byte'修改单区函数声明
Private Declare Function piccchangesinglekey Lib "OUR_MIFARE.dll" (ByVal ctrlword As Byte, ByVal serial As Long, ByVal area As Byte, ByVal keyA1B0 As Byte, ByVal piccoldkey As Long, ByVal piccnewkey As Long) As Byte'让设备发出声响函数声明
Private Declare Function pcdbeep Lib "OUR_MIFARE.dll" (ByVal xms As Long) As Byte'读取设备编号函数声明
Private Declare Function pcdgetdevicenumber Lib "OUR_MIFARE.dll" (ByVal devicenumber As Long) As BytePrivate Declare Function SetPort Lib "OUR_MIFARE.dll" (ByVal comport As Long) As Boolean
       
'控制字定义
Private Const BLOCK0_EN = &H1
Private Const BLOCK1_EN = &H2
Private Const BLOCK2_EN = &H4
Private Const NEEDSERIAL = &H8
Private Const EXTERNKEY = &H10
Private Const NEEDHALT = &H20
Private Sub Command1_Click()                '读卡
Dim status As Byte '存放返回值Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypicckey(0 To 5) As Byte '密码
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccdata(0 To 47) As Byte '卡数据缓冲'控制字指定
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = 8 '指定为第8区
'批定密码模式
authmode = 1 '大于0表示用A密码认证,推荐用A密码认证'指定密码
mypicckey(0) = &HFF
mypicckey(1) = &HFF
mypicckey(2) = &HFF
mypicckey(3) = &HFF
mypicckey(4) = &HFF
mypicckey(5) = &HFFstatus = piccreadex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypicckey(0)), VarPtr(mypiccdata(0)))
'在下面设定断点,然后查看mypiccserial、mypiccdata,
'调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
'根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
'处理返回函数Select Case status
    Case 0:  
        MsgBox "操作成功"      
    Case 8:  
        MsgBox "请将卡放在感应区"    
    Case 21 '没有动态库
        MsgBox "找不到动态库WY-ICUSB.DLL请将WY-ICUSB.DLL拷贝到VB安装后的目录VB98下" 
    Case Else
        MsgBox "异常"
End Select
End SubPrivate Sub Command2_Click()
'写卡
Dim i As Integer
Dim status As Byte '存放返回值
Dim myareano As Byte '区号
Dim authmode As Byte '密码类型,用A密码或B密码
Dim myctrlword As Byte '控制字
Dim mypicckey(0 To 5) As Byte '密码
Dim mypiccserial(0 To 3) As Byte '卡序列号
Dim mypiccdata(0 To 47) As Byte '卡数据缓冲'控制字指定,控制字的含义请查看本公司网站提供的动态库说明
myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY'指定区号
myareano = 8 '指定为第8区
'批定密码模式
authmode = 1 '大于0表示用A密码认证,推荐用A密码认证'指定密码
mypicckey(0) = &HFF
mypicckey(1) = &HFF
mypicckey(2) = &HFF
mypicckey(3) = &HFF
mypicckey(4) = &HFF
mypicckey(5) = &HFF'指定卡数据
For i = 0 To 47
    mypiccdata(i) = i
Next istatus = piccwriteex(myctrlword, VarPtr(mypiccserial(0)), myareano, authmode, VarPtr(mypicckey(0)), VarPtr(mypiccdata(0)))
'在下面设定断点,然后查看mypiccserial、mypiccdata,
'调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
'开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
'处理返回函数Select Case status
    Case 0:  
        MsgBox "操作成功"      
    Case 8:  
        MsgBox "请将卡放在感应区"    
    Case 21 '没有动态库
        MsgBox "找不到动态库WY-ICUSB.DLL请将WY-ICUSB.DLL拷贝到VB安装后的目录VB98下" 
    Case Else
        MsgBox "异常"
End Select
End Sub

解决方案 »

  1.   

    建议楼主先找一些mifare one 卡(也叫M1卡)的资料,先学习一下这种卡片的数据保存方式和key计算方法。
    其实你贴的代码已经写的很清楚了,只不过你还需要根据客户的卡片资料琢磨一下数据的结构。
    读写m1卡首先要清楚卡片结果,其次要搞清楚AB两套key的计算方法。不过看起来你的这个卡片似乎用的是默认的key,全都是FF。
    手机回帖真费劲啊
      

  2.   

    俺不知道怎么向读卡器里写数据,只知道通过读卡器向磁卡写数据,而且一般读卡器厂商都提供了相应的API,大多还有VB的应用示例。
      

  3.   

    呵呵,不好意思,不是向读卡器里写数据,而是向IC卡里写入数据,是非接触式的USB连线读写器,IC卡和读写器都能够正常使用了,就是不知道怎样才能添加文本框向IC卡写入或者读出数据..
      

  4.   

    那个读卡器应该有说明文档或者demo吧。对于这种很偏很具体的应用,别人很难测试
      

  5.   

    用函数piccwriteex你可以把工程代码压缩传给我 我给你修改