RFID 卡片型号及卡号获取 | 学习笔记

简介: 快速学习 RFID 卡片型号及卡号获取

开发者学堂课程【嵌入式之 RFID 开发与应用2020版:RFID 卡片型号及卡号获取】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/665/detail/11121


RFID 卡片型号及卡号获取

内容介绍:

一、RFID 协议工作状态

二、读取 ID

三、卡的型号

四、卡号

五、写入卡片的内容

 

接下来看它到底读到了什么样的类型的数据以及读到了些类型的数据之后,不同的卡类型是不一样的,所以 rfid_carda_request 函数主要是完成的是寻卡操作。寻卡表示已经跟卡建立起了通信关系,就是卡已经处于 ready 状态。

 

一、RFID 协议工作状态

image.png

工作状态包括上电、复位、寻卡、read,read 以后就可以读取 ID。ID 跟类型是不一样的,ID 跟类型是不一样的。先来看一下 ID,然后再去看怎么样去读取卡号。

 

二、读取 ID

进到第二个代码里面去看一下,先进行编译

[ root@qfedu 01_rfid_id] #cd ..

[root@qfedu rfid]#ls

01_rfid id  02_rfid readID   03_rfid_ Rw_block  04_rfid_inc_dec

[root@qfedu rfid]#cd 02_rfid_readID/

[root@qfedu 02_rfid_readID]#ls

Makefile                  rfid lib.h

Untitled Project.si4project  rfid lib.odemo

Demo                    uart _init.c      

main.                    uart_init.h

main.o                  uart init.o

rfid lib.c

[ root@qfedu 02_rfid_readID]#. / demo

version=88

1.白卡

首先看一下,拿了一张白卡贴上去

[ root@qfedu 02_ rfid readID]#. /demo

version=88

type = 0x0400

card ID:0x34 0xa9 0xa5 0x4d

image.png

可以看到明显情况了很多,贴上去之后在没有离开之前,那么它只打印了一个卡号和 ID,其它都没有多余的,它不像刚才在不断的输出一堆信息,是有问题的。其实,它的类型是 0400。那么 0400 代表的是 mifare_ones50 卡。

2.公交卡

再换一个公交再看一下。

type = 0x0800

card ID:0x43 0xe2 0x2f 0x4f

image.png

0800 属于 pro 卡,由于代码里面没有没有身份证,它不能读取 B 类卡,所以只能演示两个。

 

三、卡的型号

0x0400 ,Mi fare_ One (S50)

0x0800 ,Mifare Pro (x)

0x4400, 0x0200, 0x4403

类似于还有很多卡的型号,卡片肯定是有很多型号的,因为市场是很庞大的,种类也是繁多的大概了解一下。

 

四、卡号

卡号是需要通过防冲撞去获取,防冲撞指的是比如说两张卡或者多张卡,比如图中就有三张卡。

image.png

同时贴上去到底去读取哪一个就会很麻烦,所以说必须要通过防冲撞之后才能读到它想要的卡号。防冲撞其实就是串行读取,它的算法的话比较常用,算法特别的多,在实际的应用当中的话,有曼切斯特编码是用的比较多的,还有米乐码之类的非常多。它的些编码主要目的一个是为了安全,另外一个它是为了高效。

接下来看一下怎么通过进行防冲撞读取卡号,

reg_ clr _bit(Status2Reg, ex08);//清除加密位

reg_ set(BitF ramingReg, 0x00);

reg_ c1r bit (Col1Reg,

0x80); //发生冲突位之后的所有的接收位被清除

buf[0] = PICC_ ANTICOLLI; //s50 卡, 4 字节,级联为 1

buf[1j = 0x20;// 国金融集成电路( IC )卡规范-与应用无关的非接触式规范p28

status = rfid_ cmd(PCD_ TRANSCEIVE, buf, 2, buf, &1en);

if(status == CMD_ SUCCESS){

for(i=0; i<4; i++){

*(card_ _num+i) = buf[i];

snr_ check^= buf[i];

}

增加另一个指令叫 picc,这条指令是针对卡的操作,#define PICC ANTICOLL 0x93 / /防冲撞

指令值的话是 93,防冲撞获取卡有两种方式,93 95 都是支持的,93 是属于级联为 1 的防冲撞获取卡号。

第二个是 buf[1] = ex20;/,附带一个参数,参数的作用需要去参考做中国金融集成电路的规范,里面有解释。

 

五、写入卡片的内容

rfid_ carda_ init();

while(1){

ret = rfid_ carda_ request(PICC_ REQALL, type); .

if(ret == 0K){

printf("type = 0x%02x%02x\n", type[0],type[1]);

/ /WaitCard0ff() ;

}else continue ;

ret = rfid_ _anticoll(card_ _id);

if(ret == 0K){

printf("card ID:");

for(i=0;i<4;i++)

printf("0x%02x ",card_ _id[i]);

puts("");

WaitCard0ff();

}else continue;

}

return 0;

要写入的卡片的内容,有两个内容,一个是防冲撞获取卡号,另外是它携带的参数两个字节号,PCD_ TRANSCEIVE 参数几乎是不变的,都叫做 TRANSCEIVE 是传输的意思,就是发送并接收数据。总之就是传进去之后它能拿到一个 buf,而 buf 里面,如果说是状态为 success 的话,那么是能得到它的卡号的,把卡号放到card_num 里面。返回就能够把卡的 ID 打印出来。看到卡号之后同时明白了一个道理,就是为什么当刷一次卡,在卡没有离开之前,它并不会连续输出卡号,就是下面的用到的是 WaitCard0ff(); 接口的主要作用其实就是等待卡的离开,如果卡不离开,它会进行阻塞,不会继续往下执行。它的操作其实非常简单, rfid_ carda_ request 就是寻卡指令。

:void WaitCard0ff(、

void)

unsigned char status, TagType[2];

while(1)

{

statusI= rfid_ carda_ request(PICC_ REQALL, TagType);//需 要多次判断才准确

if(status){

status = rfid_ _carda_ request(PICC_ _REQALL, TagType);

if(status){

status = rfid_ carda_ request(PICC_ REQALL, TagType);

if(status)

return;

}

}

usleep(30*1000) ;

}

如果够寻到卡,那就让它循环。那如果寻不到张卡的时候,就进行 return。意思就是没有卡了,可以走了。因为它寻的是所有的卡,所有的卡都不在就可以退出了。调三次是为了提高可靠性。如股票有第一次误判了的话,那还有第二次还有第三次。绝对的保障了卡片不会重复写入,以上就是的第二个代码有关卡的类型和卡的ID 的录取的流程。

相关文章
|
7月前
|
算法 网络协议 新制造
在电子墨水屏标签领域,如何选择一款好的处理器?
电子墨水屏是近些年由台湾 eInk公司发展起来的一种超低功耗的数字显示技术,不同于传统的LCD,LED等主动发光的电子屏幕技术,墨水屏是一种被动式发光技术,这种屏幕仅在画面刷新过程中消耗很低的电流,在刷新完成之后屏幕完全不需要电力供应,可以实现零功耗。
|
7月前
|
物联网 大数据
墨水屏电子纸标签/电子纸价签领域如何选择无线通信方案?
很多的厂家都知道,电子标签/电子价签的全套解决方案中,无线通信方案是最核心的,选对了这个方案,整个系统就会成功一半。
|
7月前
|
安全 小程序 BI
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
针对设备状态不透明、纸质记录效率低、故障报修不及时等设备点巡检的常见问题,可以在草料二维码上自主搭建涵盖点检、巡检、报修、维修、保养等功能的管理系统,无需安装APP,微信扫码就能查看设备档案、用表单替代纸质检查表。
149 1
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
|
7月前
|
物联网 芯片
毕业设计 基于STM32的语音RFID卡停车管理系统
毕业设计 基于STM32的语音RFID卡停车管理系统
|
人工智能 自然语言处理 前端开发
电话机器人是一个怎么样的系统?主要功能是哪些
电话机器人是一个怎么样的系统?主要功能是哪些
13 0
电话机器人是一个怎么样的系统?主要功能是哪些
|
安全 物联网 数据安全/隐私保护
RFID 卡片介绍 | 学习笔记
快速学习 RFID 卡片介绍
RFID 卡片介绍 | 学习笔记
|
JSON 小程序 前端开发
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
792 0
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
|
iOS开发
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
226 0
iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等
|
定位技术 API
如何获取停车缴费的录入停车场信息接口的parking_poiid高德地图唯一标识
说明: 本帖是介绍如何获取停车缴费的录入停车场信息接口的parking_poiid参数高德地图唯一标识,仅供参考!! 录入停车场信息接口文档:查看  方法一: 直接使用访问高德地图url([url]https://ditu.
2145 12