我使用vb2005调用德卡提供的dll读取卡内信息时遇到了2个问题
一是在读某些块地址时,会报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
二是当返回到应答码为读取成功时,却接收不到任何数据
德卡提供的API里dll中读取卡内信息的函数定义为:
int dc_read(int icdev,unsigned char _Adr,unsigned char *_Data);
这里_Data就是返回数据的地方
我在vb2005中声明的函数为
Private Declare Function dc_read Lib "dcrf32.dll" (ByVal icdev As Integer, ByVal _adr As Char, ByRef dataBuf As String) As Integer
自定义读卡的函数为:
'读取单程票数据
Public Function ReadTkt() As Boolean
Dim st As Integer '读取结果
ReadTkt = False
frmCardReader.Log("开始读单程票数据...")
'单程票共占用48字节
Try
'读发行区,8字节
st = dc_read(icdev, ChrW(4), dataBuf)
If (st <> 0) Then ' 读卡失败
frmCardReader.Log("读取单程票(发行区)信息失败")
Exit Function
End If
'读发行区信息成功,截取dataBuf,转换为需要的数据
frmCardReader.Log("读取单程票(发行区)信息成功:" & dataBuf)
Catch ex As Exception
ReadTkt = False
frmCardReader.Log(ex.Message)
MsgBox("读单程票失败,错误代码:[" & st & "]")
End Try
End Function
望各位看到帖子的朋友费费心,很急,多谢大家了
桃花长相依
Smart猫小萌
眼眸繁星