⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfid.c

📁 本程序中有main.c、rfid.h、rfid.c、tty.h、tty.c和makefile六个文件
💻 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 + -