13.56M读卡器开发详解五---底层通讯协议 

 

说明: 

文档最后的部分为新增加的通讯协议。 

更改后读卡器自动判断卡片是否在感应区内,不需要外部设置,也并不影响和以前的软

件兼容,以前所有的指令都还保留即可正常执行。 

出厂默认波特率为9600,掉电可记忆用户更改后的波特率。 

认证密钥并没有时间的限制。 

一、主从 

外部CPU 为主,读写卡器为从,读写卡器始终处于应答状态,不主动向外部CPU 发送

命令。 

起始位、8BIT数据、1BIT停止位 

二、机通讯协议 

1.外部 CPU 命令格式 

命令头 + 长度字 + 设备标识符 + 命令码 + 命令参数 + 校验字 

命 令 头:2BYTE,0xAABB 

长 度 字:2BYTE,指明后续的字节数,从设备标识到效验字 

设备标识:2BYTE 

2BYTE 

    命令参数:命令报文(可以为空) 

校 验 字:1BYTE、设备标识到命令参数最后一字节的逐字节异或 

注:如果从长度字到校验字中有一个字节=AA,则后跟一字节00以区分命令头,长度

字不变 

2.读写卡器应答格式 

命令头 + 长度字 + 设备标识符 + 命令码 + 状态字 + 数据 + 校验字 

命 令 头:2BYTE,0xAABB 

长 度 字:2BYTE,指明后续的字节数,从设备标识到效验字 

设备标识:2BYTE 

命 令 码:2BYTE 

状 态 字:1BYTE 、00 = 成功; 非零 = 失败 

数    据:返回的数据(可以为空) 

校 验 字:1BYTE、从长度字取反到数据内容的逐字节异或 

注:如果读写卡器在100mS 内无响应或响应中断,上位机认为此次通讯失败。 

 

三、命令详解 

1. rf_init_com 

功     能:设置波特率 

命 令  码:0x0101 

参     数:00=4800 

01=9600 

02=14400 

03=19200 

04=28800 

05=38400 

06=57600 

07=115200 

应答数据:无 

 

2.rf_init_device_number 

功    能: 设置设备标识符 

命 令 码: 0x0201 

参    数: 2BYTE 设备标识 

备    注: 读卡器只响应设备标识符与本身相符或设备标识符等于0x0000(广播)的指 

令 

    应答数据:无 

3.rf_get_device_number 

功    能: 读取设备标识符 

命 令 码: 0x0301 

参    数: 无 

2BYTE 设备标识 

4.rf_light 

功    能: 设置指示灯颜色 

命 令 码: 0x0701 

参    数: 00 = 熄灭 

01 = 红色 

02 = 绿色 

03 = 黄色 

  备    注: 读卡器上电指示灯为绿色 

约1S 后变为红色,指示射频模块初始化成功 

     若变为黄色指示频模块初始化失败 

              此后指示灯颜色由外部指令控制 

    应答数据:无 

5.rf_antenna_sta 

功    能: 设置天线状态 

命 令 码: 0x0C01 

参    数: 00 = 关闭 

非零 = 开启 

  备    注: 读卡器上电后天线处于开启状态 

    应答数据:无 

6.rf_request1 

功    能: 高级寻卡 

命 令 码: 0x0002 

参    数: 0x26 = 寻未进入休眠状态的卡 

0x52 = 寻所有状态卡 

rf_request、rf_anticoll、 

rf_select 三条指令 

应答数据: 4BYTE 卡片序列号 

7.rf_request 

功    能: 寻卡 

命 令 码: 0x0102 

参    数: 0x26 = 寻未进入休眠状态的卡 

0x52 = 寻所有状态卡 

应答数据: 2BYTE 卡片类型码 

8.rf_anticoll 

功    能: 防冲撞 

命 令 码: 0x0202 

参    数: 无 

应答数据: 4BYTE 卡片序列号 

9.rf_select 

功    能: 选定卡 

命 令 码: 0x0302 

参    数: 4BYTE 卡片序列号 

应答数据: 1BYTE 卡片容量代码 

10.rf_halt 

功    能: 使已选定的卡片进入休眠状态 

命 令 码: 0x0402 

参    数: 无 

应答数据: 无 

11.rf_M1_authentication2 

功    能: 验证Mifare卡密钥 

命 令 码: 0x0702 

参    数: 1BYTE 密码验证方式(MODEL)+ 1BYTE绝对块号 + 6BYTE密钥 

:验证A 密钥 

:验证B 密钥 

应答数据: 无 

12.rf_M1_read 

功    能: 读块 

命 令 码: 0x0802 

参    数: 1BYTE 绝对块号 

应答数据: 16BYTE数据 

13.rf_M1_write 

功    能: 写块 

命 令 码: 0x0902 

参    数: 1BYTE 绝对块号 + 16BYTE写入数据 

应答数据: 无 

14.rf_M1_initval 

功    能: 初始化钱包 

命 令 码: 0x0A02 

参    数: 1BYTE 绝对块号 + 4BYTE初始金额(低字节在前) 

应答数据: 无 

15.rf_M1_readval 

功    能: 读钱包金额 

命 令 码: 0x0B02 

参    数: 1BYTE 绝对块号  

应答数据: 4BYTE 钱包金额(低字节在前) 

16.rf_M1_decrement 

功    能: 扣款 

命 令 码: 0x0C02 

参    数: 1BYTE 绝对块号 + 4BYTE扣款金额(低字节在前) 

应答数据: 无 

17.rf_M1_increment 

功    能: 充值 

命 令 码: 0x0D02 

参    数: 1BYTE 绝对块号 + 4BYTE充值金额(低字节在前) 

应答数据: 无 

18.rf_M1_restore 

功    能: 把某一块数据调入卡片的BUFFER中 

命 令 码: 0x0E02 

参    数: 1BYTE 绝对块号 

应答数据: 无 

19.rf_M1_transfer 

功    能: 把卡片的BUFFER中数据写入到卡上某一块 

命 令 码: 0x0F02 

参    数: 1BYTE 绝对块号 

应答数据: 无 

20.rf_M1_reada 

功    能: 验证Mifare卡密钥并读取一块数据 

命 令 码: 0x3002 

参    数: 1BYTE 密码验证方式(MODEL)+ 1BYTE绝对块号 + 6BYTE密钥 

:验证A 密钥 

:验证B 密钥 

应答数据:16BYTE数据 

21.rf_M1_in 

功    能:卡片进场报告,读卡器主动发出,外部CPU 接收到此信息后可跳过寻卡、防 

冲撞、选卡进行后续操作 

命 令 码:0x3101 

发出数据:4BYTE卡片序列号 

例:AA BB   0A 00   11 12    31 01     00   D6 00 C8 E8    C5 

    命令头  长度字 设备标识  命令码  状态字   序列号     校验字 

22.rf_M1_out 

功    能:卡片离场报告  

命 令 码:0x3201 

发出数据:无 

AA BB    06 00   11 12     32 01   00     30 

  命令头  长度字  设备标识  命令码  状态字 校验字