📄 rfid.c
字号:
#include <string.h>#include "tty.h"#include "rfid.h"//校验和计算,帧中数据相加后取反加一BYTE GetCrc8(unsigned char *data, int length){ BYTE cFcs = 0; int i, j; for(i=0; i<length; i++) { cFcs += data[i]; //进行异或操作 } cFcs = ~cFcs; cFcs += 0x01; return cFcs;}//读取读写器版本信息void rfid_ReadVersion(){ BYTE cmd[6]; BYTE recv[8]; BYTE msg; BYTE cc; int i, j=0; cmd[HEAD] = 0x0A; cmd[ADDR] = 0xFF; //public address; cmd[LEN] = 0x02; cmd[CMD] = 0x22; cc = GetCrc8(cmd, 4); cmd[CHECK] = cc; tty_write(cmd, 5); tty_write("\n",strlen("\n")); for(i=0; i<5; i++) printf("cmd = %.2X\n", cmd[i]); tty_read(recv,7); memset(recv,0x00,7); sleep(1); tty_read(recv,7); for(i=0; i<7; i++) printf("recv=%.2X\n", recv[i]); }//设置读写器进入标签识别状态void rfid_DefineID(){ BYTE cmd[6]; BYTE recv[6]; BYTE cc; int i; cmd[HEAD] = 0x0A; cmd[ADDR] = 0xFF; cmd[LEN] = 0x02; cmd[CMD] = 0x90; cc = GetCrc8(cmd, 4); cmd[CHECK] = cc; tty_write(cmd,5); for(i=0; i<5; i++) printf("define_ID cmd[%d]=%.2X\n",i,cmd[i]); tty_read(recv, 5); memset(recv,0x00,5); sleep(1); tty_read(recv,5); for(i=0; i<5; i++) printf("define_ID recv[%d]=%.2X\n",i,recv[i]); }//从读写器获取数据void rfid_GetData(){ BYTE cmd[6]; BYTE data[256][16]; BYTE databuf[4]; BYTE cc,msg; int i, j; int count=0; cmd[HEAD] = 0x0A; cmd[ADDR] = 0xFF; cmd[LEN] = 0x02; cmd[CMD] = 0x9A; cc = GetCrc8(cmd, 4); cmd[CHECK] = cc; tty_write(cmd, 5); for(i=0; i<5; i++) printf("get_ID cmd[%d]=%.2X\n",i,cmd[i]); //usleep(500000); sleep(2); for(i=0; i<256; i++) { tty_read(data[i],16); count++; if((data[i][8] == 0x00) && (data[i][9] == 0x00))//当读到的标签号为0时,停止读取数据 break; tty_read(databuf,4); //读取冗余数据 memset(databuf,0x00,4); } for(i=0; i < 256; i++) { if((data[i][8] == 0x00) && (data[i][9] == 0x00))//当读到的标签号为0时,停止读取数据 break; printf("id = "); for(j=6; j<10; j++) //data[i]的6-9位为标签号 printf("%.2X",data[i][j]); printf("\n"); printf("loc = %.2X\n",data[i][10]); //data[i]的第10位为定位器编号 printf("count = %.2X\n",data[i][4]); }}//终止读写器的一切操作void rfid_Stop(){ BYTE cmd[6]; BYTE recv[6]; BYTE cc; int i; cmd[HEAD] = 0x0A; cmd[ADDR] = 0xFF; cmd[LEN] = 0x02; cmd[CMD] = 0x91; cc = GetCrc8(cmd, 4); cmd[CHECK] = cc; tty_write(cmd,5); for(i=0; i<5; i++) printf("stop cmd[%d]=%.2X\n",i,cmd[i]); tty_read(recv, 5); memset(recv,0x00,5); sleep(1); tty_read(recv,5); for(i=0; i<5; i++) printf("stop recv[%d]=%.2X\n",i,recv[i]); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -