公司现在用的MF-500射频卡是串口读数据的,并且提供了API动态链接库,可是我必须写个循环不停的调用他们提供的API才能读卡,程序效率太低!.NET有个SerialPort虽然很好用但是不知道怎么和硬件沟通,获取了消息不知道怎么把Stream变成我想要的DD,谁能帮我啊。
附硬件带的文档,完全不懂:
通讯返回内容:
ACK + LEN + DATAS + SW + CHK +ETX
SW:函数返回值 SW = 0 表示函数正确返回;否则表示错误
以下函数所涉及到的发送命令数值,均指通讯协议中的DATAS值。
DATAS的格式为:CLA+ INS + P1 + P2 + DATAS
具体说明如下:
ACK = 0x60 通讯头部,指令启始字节,1 Byte
LEN = Length(DATAS) 通讯数据体长度字节数,1 Byte
CLA: 表示命令的类别,对于该模块CLA = 0x0B
INS: 指令(命令)
P1: 参数1
P2: 参数2
DATAS:数据
ETX = 0x03 结束符,1 Byte
INS说明如下: 发送给读写模块的指令都占用一个字节。
命令字节 十六进制 功能
a 0x61 寻找感应区内的卡片并锁定该卡(CardReady)
b 0x62 从IC卡读出数据(ReadCard)
c 0x63 向IC卡写入数据(WriteCard)
d 0x64 将某BLOCK格式化成电子钱包(FormatPurse)
e 0x65 钱包增值(Increase)
f 0x66 钱包减值(Decrease)
g 0x67 读钱包值(ReadPurse)
q 0x71 挂起卡片(Halt)
用委托事件来写,我觉得最好的方法。