MR701非接触IC卡读写器Mifare部分通讯协议

更新时间:2024-07-10 21:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MR701非接触IC卡读写器 Mifare部分通讯协议

1 概述

PC与读写卡器通过RS232串口连接,PC机通过调用动态连接库向读写卡器发送命令,并接收读写卡器返回的数据,传送的数据为16进制。

PC机为主,读写卡器为从,读写卡器始终处于应答状态,不主动向PC机发送命令。

2 通讯协议

2.1

上位机命令格式

命令头 + 长度字 + 设备标识符 + 命令码 + 命令内容 + 校验字 命令头 :2BYTE,0xAABB

长度字 :2BYTE,1BYTE从设备标识符到校验字的字节数+1BYTE取反 设备标识:2BYTE

命令码 :1BYTE 命令内容:命令报文(可以为空)

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

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

2.2 读写卡器应答格式

命令头 + 长度字 + 设备标识符+命令码 + 状态字 + 数据 + 校验字 命令头 :2BYTE,0xAABB

长度字 :2BYTE,1BYTE从设备标识符到校验字的字节数+1BYTE取反 设备标识:2BYTE 命令码 :1BYTE

状态字 :1BYTE 、0 = 成功; 数据 :返回的数据

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

注:如果读写卡器在100mS内无响应或响应中断,上位机认为此次通讯失败。在操作SAM卡时需要的等待要大于1200ms

3 通讯速度

波特率4800~115200可选,在此仅支持19200bps。

1

4 通讯命令 4.1 初始化串口

数据:1 = 9600; 2 = 14400; 3 = 19200; 4 = 28800;

5 = 38400; 6 = 57600; 7 = 115200 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 0x0000 命令码 0x01 0x01 状态字 无 0 数据域 1字节波特率代码 无 校验字

发送:AA BB 05 FA 00 00 01 03 F8 返回:AA BB 05 FA 00 01 01 00 FA

说明:读卡器上电后的波特率为9600bps,如果想设置为115200bps,那么,先用19200bps发送设置为115200bps的命令,如果成功,那么就已经设置为115200bps了,以后的操作就需要使用115200bps了。

4.2 指定设备标识

数据:通讯设备标识符,0-65535

注:一台设备被指定设备标识后,只响应设备标识相符或设备标识为“0”的命令。 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x06f9 0x05fa 设备标识 0x0000 更改后的设备标识 命令码 0x02 0x02 状态字 无 0 数据域 2字节设备标识 无 校验字

发送:AA BB 06 F9 00 00 02 00 01 FA 返回:AA BB 05 FA 00 01 02 00 F9

4.3 读取设备标识

数据:无 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 0x05fa 设备标识 命令码 0x03 0x03 状态字 无 0 数据域 空 空 校验字

发送:AA BB 04 FB 00 00 03 F8

返回:AA BB 07 F8 00 01 03 00 00 01 FB

2

4.4 取得读写卡器硬件版本号,2字节

数据:无 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 0x06f9 设备标识 命令码 0x04 0x04 状态字 无 0 数据域 空 2字节硬件版本号 校验字

发送:AA BB 04 FB 00 00 04 FF

返回:AA BB 07 F8 00 01 04 00 00 20 DD

4.5 取得读写卡器产品序列号,8字节

数据:无 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 0x0df2 设备标识 命令码 0x05 0x05 状态字 无 0 数据域 空 8字节产品序号 校验字

发送:AA BB 04 FB 00 00 05 FE

返回:AA BB 0D F2 00 01 05 00 04 FB 00 00 05 FE AA 00 FA A2

4.6 蜂鸣

数据:蜂鸣时间,单位是10毫秒 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x06 0x06 状态字 无 0 数据域 0x0A(蜂鸣100ms) 空 校验字

发送:AA BB 05 FA 00 00 06 10 EC 返回:AA BB 05 FA 00 01 06 00 FD

4.7 设置SAM卡通讯波特率

数据:0 = 9600; 1 = 38400 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x07 0x07 状态字 无 0 数据域 1字节波特率代码 无 校验字

3

发送:AA BB 05 FA 00 00 07 00 FD 返回:AA BB 05 FA 00 01 07 00 FC

4.8 SAM卡复位

数据:无 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 设备标识 0x0000 命令码 0x08 0x08 状态字 无 0 数据域 空 复位信息 校验字

发送:AA BB 04 FB 00 00 08 F3

返回:AA BB 15 EA 00 01 08 00 3B 6C 00 02 42 61 86 38 12 00 54 17 00 19 08 34 5F

4.9 向SAM卡发送COS命令

命令码:0x09 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 设备标识 命令码 0x09 0x09 状态字 无 0 数据域 COS命令内容 返回数据 校验字

发送:AA BB 09 F6 00 00 09 00 84 00 00 04 7F(取4字节随机数) 返回:AA BB 0B F4 00 01 09 00 FF E3 A7 42 90 00 95

4.10 设置读写卡器非接触工作方式

数据:

TYPE A = “A” (0x41) TYPE A = “B” (0x42) PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x0A 0x0A 状态字 无 0 数据域 0x41 无 校验字

发送:AA BB 05 FA 00 00 0A 41 B1 返回:AA BB 05 FA 00 01 0A 00 F1

4

4.11 关闭或启动读写卡器天线发射

数据:0 = 关闭、1 = 启动

注:天线关闭后再次启动需有10毫秒以上的时间间隔。读写卡器上电后默认为启动状态 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x0B 0x0B 状态字 无 0 数据域 1字节(0 OR 1) 无 校验字

发送:AA BB 05 FA 00 00 0B 01 F0 返回:AA BB 05 FA 00 01 0B 00 F0

4.12 指示灯显示

数据:0 = 关闭、1 = 红 2 = 绿、 3 = 黄 PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x27 0x27 状态字 无 0 数据域 无 校验字

4.13 寻ISO14443-3 TYPE_A卡

参数:寻卡模式;0x26 = 寻未进入休眠状态的卡;0x52=寻所有状态的卡 返回:TagType-返回卡类型值 命令码:0x0C

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x07f8 设备标识 命令码 0x0C 0x0C 状态字 无 0 数据域 1字节寻卡方式 2字节TagType 校验字

发送:AA BB 05 FA 00 00 0C 52 A4 失败返回:AA BB 05 FA 00 01 0C EC 1B

成功返回:AA BB 07 F8 00 01 0C 00 04 00 F1

5

4.14 ISO14443-3 TYPE_A卡防冲撞

参数:无

返回:卡序列号 命令码:0x0D PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 设备标识 命令码 0x0D 0x0D 状态字 无 0 数据域 空 序列号 校验字

发送:AA BB 04 FB 00 00 0D F6

成功返回:AA BB 09 F6 00 01 0D 00 96 C6 59 6B 98

4.15 锁定一张ISO14443-3 TYPE_A卡

参数:4字节卡序列号 返回:1字节卡容量 命令码:0x0E

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x08f7 0x06f9 设备标识 命令码 0x0E 0x0E 状态字 无 0 数据域 4字节卡序列号 1字节卡容量 校验字

发送:AA BB 08 F7 00 00 0E 96 C6 59 6B 9B 成功返回:AA BB 06 F9 00 01 0E 00 08 FE

4.16 命令已激活的ISO14443-3 TYPE_A卡进入休眠状态

参数:空 命令码:0x0F PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 0x05fa 设备标识 命令码 0x0F 0x0F 状态字 无 0 数据域 空 空 校验字

发送:AA BB 04 FB 00 00 0F F4

成功返回:AA BB 05 FA 00 01 0F 00 F4

4.17 用指定的密钥验证Mifare One卡某一块

参数:1字节密钥属性0x60 =‘A’, 0x61 = ‘B’+ 1字节块号 + 6字节密钥

6

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x0cf3 0x05fa 设备标识 命令码 0x12 0x12 状态字 无 0 数据域 1字节密钥属性+ 1字节块号+ 6字节密钥 空 校验字

发送:AA BB 0C F3 00 00 12 60 00 FF FF FF FF FF FF 81 成功返回:AA BB 05 FA 00 01 12 00 E9 失败返回:AA BB 05 FA 00 01 12 E7 0E

4.18 读取Mifare One卡一块数据

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x15ea 设备标识 命令码 0x13 0x13 状态字 无 0 数据域 1字节块号 16字节读出的数据 校验字 参数:块号 (0~255) 命令码:0x13

发送:AA BB 05 FA 00 00 13 00 E9 返回:AA BB 15 EA 00 01 13 00 96 C6 59 6B 62 88 04 00 46 8E 25 17 59 50 49 02 CC 发送:AA BB 05 FA 00 00 13 01 E8

返回:AA BB 15 EA 00 01 13 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 AA 00 F8

注:红色的“00”为区别“AABB”的命令头而增加的,但长度字却不受影响

4.19 向Mifare One卡中写入一块数据

参数:M1卡块地址(1~255) 命令码:0x14

命令头 长度字 设备标识 命令码 状态字 无 0 数据域 1字节块号 + 16字节要写入的数据 空 校验字 PC发送 设备返回 0xaabb 0xaabb 0x15ea 0x05fa 0x14 0x14

发送:AA BB 15 EA 00 00 14 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 返回:AA BB 05 FA 00 01 14 00 EF

7

4.20 将Mifare One卡某一块初始化为钱包

参数:M1卡块地址(1~255)+ 4字节钱包值(低字节在前) 命令码:0x15

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x09f6 0x05fa 设备标识 命令码 0x15 0x15 状态字 无 0 数据域 1字节块号 + 4字节初始值 空 校验字

发送:AA BB 09 F6 00 00 15 01 0A 00 00 00 E8 (钱包值为0x0000000A) 返回:AA BB 05 FA 00 01 15 00 EE

4.21 读Mifare One钱包值

参数: M1卡块地址(1~255) 命令码:0x16

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x09f6 设备标识 命令码 0x16 0x16 状态字 无 0 数据域 1字节块号 4字节返回值 校验字

发送:AA BB 05 FA 00 00 16 01 ED

返回:AA BB 09 F6 00 01 16 00 0A 00 00 00 EB

4.22 Mifare One扣款

参数:M1卡块地址(1~255) 命令码:0x17

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x09f6 0x05fa 设备标识 命令码 0x17 0x17 状态字 无 0 数据域 1字节块号 + 4字节要扣值 校验字

发送:AA BB 09 F6 00 00 17 01 02 00 00 00 E2 返回:AA BB 05 FA 00 01 17 00 EC

8

4.23 钱包充值

参数:1字节块号 + 4字节要增加的值 命令码:0x18

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x09f6 0x05fa 设备标识 命令码 0x18 0x18 状态字 无 0 数据域 1字节块号 + 4字节要增加值 校验字

发送:AA BB 09 F6 00 00 18 01 08 00 00 00 E7 返回:AA BB 05 FA 00 01 18 00 E3

4.24 将指定块的钱包内容回传至卡的Buffer

参数:M1卡块地址(1~255) 命令码:0x19

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x19 0x19 状态字 无 0 数据域 1字节块号 校验字

发送:AA BB 05 FA 00 00 19 01 E2 返回:AA BB 05 FA 00 01 19 00 E2

4.25 将Mifare One卡Buffer中的钱包值传送到指定的

块中

该命令仅在4.23(命令码:0x19)之后调用。 参数: M1卡块地址(1~255) 命令码:0x1A PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x05fa 0x05fa 设备标识 命令码 0x1A 0x1A 状态字 无 0 数据域 1字节块号 校验字

发送:AA BB 05 FA 00 00 1A 02 E2 返回:AA BB 05 FA 00 01 1A 00 E1

9

4.26 Halt Ultra Light卡

数据:无 PC发送 设备返回 命令头 0xAABB 0xAABB 长度字 0x04FB 0x05FA 设备标识 命令码 0x0F 0x0F 状态字 无 0 数据域 空 校验字 4.27 选定一张Ultra Light卡

数据:无 PC发送 设备返回 命令头 0xAABB 0xAABB 长度字 0x05FA 0x05FA 设备标识 命令码 0x33 0x33 状态字 无 0 数据域 空 7字节序列号 校验字 4.28 Ultra Light读卡

数据:1字节起始块号 PC发送 设备返回 命令头 0xAABB 0xAABB 长度字 0x05FA 0x05FA 设备标识 命令码 0x13 0x13 状态字 无 0 数据域 4块数据(16字节) 校验字 4.29 Ultra Light写卡

数据:1字节写入块号 + 4字节数据 PC发送 设备返回 命令头 0xAABB 0xAABB 长度字 0x05FA 0x05FA 设备标识 命令码 0x34 0x34 状态字 无 0 数据域 - 7字节序列号 校验字

4.30 TYPE-A复位

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 设备标识 命令码 0x1B 0x1B 状态字 无 0 数据域 空 复位信息 校验字

10

4.31 TYPE-A/B COS命令

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 设备标识 命令码 0x1C 0x1C 状态字 无 0 数据域 COS命令内容 返回数据 校验字

4.32 TYPE-B复位

PC发送 设备返回 命令头 0xaabb 0xaabb 长度字 0x04fb 设备标识 命令码 0x1D 0x1D 状态字 无 0 数据域 空 复位信息 校验字

4.33 Display character on LCD

命令头 长度字 设备标识 命令码 状态字 数据域 校验字 PC发送 0xaabb 0x19E6 0x68 无 1 byte line number + 20 bytes character 复位信息 设备返回 0xaabb 0x68 0

SAMPLE:

AA BB 19 E6 00 00 68 00 31 3131 31 31 31 31 31 31 31 31 3131 31 31 31 31 31 31 31 8E AA BB 19 E6 00 00 68 01 31 3131 31 31 31 31 31 31 31 31 3131 31 31 31 31 31 31 31 8F AA BB 19 E6 00 00 68 01 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 8F

11

本文来源:https://www.bwwdw.com/article/z15.html

Top