注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
tinaliang的个人空间 https://home.eeworld.com.cn/space-uid-420098.html [收藏] [复制] [分享] [RSS]
日志

BCC校验

已有 8424 次阅读2012-7-12 11:17 |个人分类:算法|

非接触卡读卡器与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,然后比较这两个值,如果相等,则接收到的卡号为合法卡号,然后按您的系统
作相应的处理。
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章