2024年3月26日发(作者:)
实验七 安卓系统RFID 125K只读卡卡号的读取
【实验目的】
1. 熟悉创维特RFID应用协议;
2. 利用协议,可以在Android平台上编写读取125K只读卡卡号的安卓程序。
【实验内容】
1. 熟悉RfidTest工程,了解程序的架构,以及程序中数据的处理
2. 利用RFID应用协议,实现125K只读卡的卡号的读取
【基础知识】
1. RFID 125K应用协议
RFID协议v1.0
数据帧定义:
Byte0
0x43
Byte1
0xBC
Byte2 Byte3 Byte4 - Byte4+n
命令字节
Byte4+n+1 - Byte4+n+2
CRC-16校验 帧长度 操作类型
Byte0:帧头1,‘C’的ASCII码
Byte1:帧头2,Byte0的反码
Byte2:Byte0到Byte4+n+2的总字节数
Byte3:表示命令操作针对的模块
0x00:表示模块配置操作,配置当前使用的模块类型
0x01:表示125K操作
0x02:表示13.56M-ISO14443操作
0x03:表示13.56M-ISO15693操作
0x04:表示900M操作
0x05:表示Zigbee1操作
0x06:表示Zigbee2操作
0x0A:表示GPRS操作
0x0B:表示有源标签操作
0x0C:表示蓝牙操作
0x0D:表示wifi操作
0xFF:表示全部关闭操作
Byte4 - Byte4+n:命令字节(后面会对不同模块类型详细说明)
Byte4+n+1 - Byte4+n+2:Byte0到Byte4+n的两位CRC-16数据校验,高字节在前,低字节
在后,CRC-16多项式:0x8408,初始值:0xFFFF
125K命令(操作类型为0x01)
命令字节定义:
Byte0
0x02
Byte1
数据长度
Byte2 - Byte2+n
数据
Byte2+n+1
异或校验
Byte2+n+2
0x03
Byte0:帧头
Byte1:Byte1到Byte2+n+1的总字节数
Byte2 - Byte2+n:数据字节
Byte2+n+1:Byte1到Byte2+n的异或校验字节
Byte2+n+2:帧尾
1. 只读卡读卡操作
-->:0x02 0x03 0x86 0x85 0x03(读卡)
Byte2:0x86(读卡命令字)
<--:0x02 0x0A 0x86 0x00 0x01 0x52 0x00 0x84 0xAB 0xA0 0x50 0x03(成功)
Byte2:0x86(命令字)
Byte3:0x00(读卡成功)
Byte5:0x52(Customer ID)
Byte6 – Byte9:0x00 0x84 0xAB 0xA0(Data)
<--:0x02 0x0A 0x86 0x14 0x01 0x00 0x00 0x00 0x00 0x00 0x99 0x03(失败)
Byte2:0x86(命令字)
Byte3:0x14(读卡失败)
通过协议的理解,读取125K只读卡的命令为:
Byte0 Byte1 Byte2 Byte3 Byte4 Byte5
R-len
0x03
Byte6
CMD
0x86
Byte7
CMD
0x85
Byte8
CMD
0x03
Byte9 Byte10
帧头1 帧头2
P-len
0x43 0xBC 0x0B
TYPE CMD
0x01 0x02
CRC1 CRC2
0xC7 0xBD
卡号读取成功,返回的数据(以数据为例)
Byte6 Byte7 Byte10------------Byte13
0x02 0x0A 0x86 0x00 0x01 0x52 0x00 0x84 0xAB 0xA0 0x50 0x03(成功)
Byte2:0x86(命令字)
Byte3:0x00(读卡成功)
Byte5:0x52(Customer ID)
Byte6 – Byte9:0x00 0x84 0xAB 0xA0(Data)
2. 安卓工程RfidTest解析
(1) activity_负责工程中界面的编程。如图
(2) 负责主窗体中,java代码的编写。目前已经完成的功能有:


发布评论