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月前
|
安全 小程序 BI
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
针对设备状态不透明、纸质记录效率低、故障报修不及时等设备点巡检的常见问题,可以在草料二维码上自主搭建涵盖点检、巡检、报修、维修、保养等功能的管理系统,无需安装APP,微信扫码就能查看设备档案、用表单替代纸质检查表。
146 1
设备巡检与维保二维码系统:扫码查看档案,填写电子表单
|
7月前
|
数据挖掘 定位技术
出租车GPS轨迹、社交软件签到、手机信令数据下载网站整理
出租车GPS轨迹、社交软件签到、手机信令数据下载网站整理
398 2
|
7月前
|
物联网 芯片
毕业设计 基于STM32的语音RFID卡停车管理系统
毕业设计 基于STM32的语音RFID卡停车管理系统
|
安全 物联网 数据安全/隐私保护
RFID 卡片介绍 | 学习笔记
快速学习 RFID 卡片介绍
RFID 卡片介绍 | 学习笔记
|
存储 安全 物联网
RFID 卡片充值扣款流程 | 学习笔记
快速学习 RFID 卡片充值扣款流程
RFID 卡片充值扣款流程 | 学习笔记
|
存储 物联网 数据安全/隐私保护
RFID 卡片权限管理 | 学习笔记
快速学习 RFID 卡片权限管理
RFID 卡片权限管理 | 学习笔记
|
JSON 小程序 前端开发
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
775 0
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
|
JSON 文字识别 小程序
利用树莓派做的树莓派行程码识别系统
## 前言: 今天不讲Java,来一个小插曲 有朋友想学小程序行程码识别系统,今天就来简单的讲一讲 首先要有一个服务器设备:树莓派4b,舵机驱动板 运用python软件的tk模块来控制截图,每当用户点击识别按钮 的时候系统自动进行截图,并运行识别函数,进行比对。通过识别 文字函数调用了百度ocr识别的api,对图片的文字进行提取。然后 对返回的json进行判断,得出一个值,如果结果为可用数据,则运 行,运行打开舵机的函数,结果为假数据则舵机归位。并且舵机打 开之后在五秒之后将会自动归位。
279 0
利用树莓派做的树莓派行程码识别系统
制作条形码的手机App推荐
条形码自发明以来,给我们的生活带来极大便利,怎么才能快速的用手机创建条形码呢?下面就给大家介绍一款小编常用的制作条形码的App--二维码和条形码生成器。使用它,不仅可以制作条形码、制作二维码,还能快速扫描二维码和条形码,并且支持查看制作和扫描的历史,功能强大,关键还是免费的!
方法:号码如何批量导入苹果手机通讯录?
操作一:在电脑上打开软件,金芝号码提取导入助手。然后你把你的号码复制过来,放进软件的“导入通讯录”功能。操作二:选择“生成通讯录”,会得到一个文件,你把文件存放到电脑桌面。操作三:最后你再把电脑桌面上的文件,通过电脑上的薇xin或电脑Q,发送给你的手机徽信或者手机扣扣,在苹果手机上打开它,即可把号码批量导入苹果手机通讯录。
方法:号码如何批量导入苹果手机通讯录?