[C语言]华禹工控 RFID 测试程序设计说明

1.RFID 工作原理

基于华禹平台的手持 RFID 刷卡设备由三部分组成:

2 C语言RFID测试程序设计思路


主要思路:初始化——发送命令——接受信息——解析信息——显示信息
  1. 初始化
  2. 打开RFID单片机电源 初始化串口,具体代码请参考《串口通信文档》
  3. 发送命令
  4. 结合串口通信,发送读卡命令(发送函数的原型) UART_PutBytes(UART_PORT port, kal_uint8 *Buffaddr, kal_uint16 Length, module_type ownerid); 其命令在Buffaddr这块地址空间内 具体命令格式请参考华禹工控 RFID Demo 命令集用户手册.
  5. 接受信息
  6. 你发一个命令,如果你发的命令正确就会返回两个信息 接收单片机返回的命令,此返回的信息分为两部分, 1.第一次返回的信息是判断你发的命令是否正确 2.第二次返回的信息就是你想要的信息
  7. 解析信息
  8. 得到信息就可以对信息进行解析了.
  9. 显示信息
  10. 根据需求,可以自行设计UI界面显示信息

3 读卡具体程序示例

3.1.1 打开串口

串口操作详情请看串口部分
值得注意的是开发版与电脑连时用的是串口1,而与单片机接连时用的是串口2.

3.1.2 打开 RFID 单片机的电源

对GPIO进行初始化设置:
代码如下:
extern char gpio_47_urxd2;
extern char gpio_48_utxd2;
extern char gpio0_switch_main;
extern char gpio_bt_urts3_pin;
#define GPIO_SWITCH_A1 gpio_bt_urts3_pin
#define GPIO_SWITCH_A0 gpio0_switch_main
#define GPIO_SWITH_PIN47 gpio_47_urxd2
#define GPIO_SWITH_PIN48 gpio_48_utxd2
初始化管脚(使GPIO进入收发模式):
GPIO_ModeSetup(GPIO_SWITH_PIN47,1); //1为串口模式,0为GPIO模式
GPIO_ModeSetup(GPIO_SWITH_PIN48,1);
GPIO_WriteIO(1, GPIO_SWITCH_A0);
GPIO_WriteIO(0, GPIO_SWITCH_A1);
开启电源:
GPIO_WriteIO(1, GPIO_RFID_POWER_PIN);

3.1.3 发送读卡命令

U8 readCardData = "023034435234303030303003";
注意这里应该把命令从十六进制转化成字节数组
之后利用串口发送命令;
readCardData 的意义:读卡命令、读取的扇区 4 块 0 的数据;
简单的解释:
02 前缀;
30 34 表示长度为 4;
43 52 表示命令为 CR;(ASCII)
34 表示扇区为 4;
30 表示块区为 0;
30 30 30 30 校验和为 0x0000;(预留)
03 后缀;
命令更详细的格式,见华禹工控 RFID Demo 命令集用户手册

3.1.4 接收并解析返回信息

返回信息: 单片机收到命令后返回ACK;
ACK 的值为{0x02,0x41,0x43,0x4B,0xFF,0x03};

当读卡正确后返回:

02 32 34:表示长度为0x24
43 52:表示命令为CR
34 30:扇区号为4,块号为0
30 30 30 30 30 30 30 30:0x00 0x00 0x00 0x00表示卡号为0;
30 30 30 30:0x00 0x00表示金额为0;
30 30 30 30:0x00 0x00未用;
30 30 30 30 30 30 30 30:0x00 0x00 0x00 0x00未用;
30 30 30 30 30 30 30 30:0x00 0x00 0x00 0x00未用;
30 30 30 30 03:

当读卡出现错误时返回:

02 30 36 : 表示长度为6;(含错误码和校验和的长度)
43 52:表示命令为CR
34 30:表示扇区为4,块号为0;
30 35:错误码为5;表示读错误;
30 30 30 30:校验码;
03
命令更详细的格式,见华禹工控 RFID Demo 命令集用户手册

3.1.5 关闭电源

关闭收发模式
GPIO_ModeSetup(GPIO_SWITH_PIN47,0); //1为串口模式,0为GPIO模式
GPIO_ModeSetup(GPIO_SWITH_PIN48,0);
GPIO_WriteIO(0, GPIO_SWITCH_A0);
GPIO_WriteIO(1, GPIO_SWITCH_A1);
关闭单片机电源
GPIO_WriteIO(0, GPIO_RFID_POWER_PIN);

3.1.6. 关闭串口

操作请参照串口的代码;

3.2 写卡操作

3.2.1 打开串口

与 2.1.1 相同。

3.2.2 打开电源

与 2.1.2 相同。

3.2.3 发送写卡命令

具体命令格式请参考华禹工控 RFID Demo 命令集用户手册.

3.2.4 接收并解析返回信息

2.2.5 关闭电源

与2.1.5 相同

2.2.6 关闭串口

与2.1.6 相同

3 资源

华禹工控资源:

源码下载地址:RFID源码
华禹工控 RFID Demo 命令集用户手册
华禹工控 GPIO 测试程序设计说明。
学者之家技术论坛
技术交流群:
15762255
29475577
华禹工控官方博客

302 Found

302 Found


nginx/1.8.0