非接触卡读卡器与PC机的通讯格式如下:
STX(02H)+ 6个字节的卡号+VERH+VERL+EOT(04H) STX(02H)起始字节 EOT(04H)结束字节 6个字节的卡号为六个十六进制的ASCII字符,6个字节的传送,高字节在前,低字节在后。例如: 卡 号: 8 D E F 9 E 传输的数据格式:38 44 45 46 39 45 (十六进制) 在校验时采用目前最通用的BCC校验方式: 具体的方法是: 将有效的卡号接字节作异或(XOR)校验: 38H (XOR)44H (XOR)45H (XOR)46H (XOR)39H(XOR)45H =03H 然后将接收到的数据VERH+VERL合成一个字节数据,30H(HEX)=0,33H(HEX)=3 合成数据为03H,接收到的数据与我们收到的卡号的校验数据一致,则接收到 的卡号为正确卡号。 再比如现有卡号为: 卡 号: 0 5 8 E 4 2 传输的数据格式:30 35 38 45 34 32 (十六进制) 在校验时采用目前最通用的BCC校验方式: 具体的方法是: 将有效的卡号接字节作异或(XOR)校验: 30H (XOR)35H (XOR)38H (XOR)45H (XOR)34H(XOR)32H =7EH 然后将接收到的数据VERH+VERL合成一个字节数据,37H(HEX)=7,45H(HEX)=E 合成数据为7EH,接收到的数据与我们收到的卡号的校验数据一致,则接收到 的卡号为正确卡号。 在编写程序时,可以先将所有数据都接收到计算机的内存中,然后计算BCC校验值VALUE1,再将接收的BCC值 拼成一个十六进制数VALUE2,然后比较这两个值,如果相等,则接收到的卡号为合法卡号,然后按您的系统 作相应的处理。
public static String getBCC(byte[] data)