本实例包含4个案例,覆盖了M1卡的几乎所有应用,实例以RC522模块和树莓派实现,这些实例均 以 MFRC522-python 库(https://github.com/mxgxw/MFRC522-python)为基础 可以参考 树莓派3B连接MFRC522模块进行RFID读写全指南 和 树莓派 RC522模块,今天小编就来聊一聊关于rfid生产测试方法?接下来我们就一起去研究一下吧!

rfid生产测试方法(RFID实验实例)

rfid生产测试方法

本实例包含4个案例,覆盖了M1卡的几乎所有应用,实例以RC522模块和树莓派实现,这些实例均 以 MFRC522-python 库(https://github.com/mxgxw/MFRC522-python)为基础 可以参考 树莓派3B连接MFRC522模块进行RFID读写全指南 和 树莓派 RC522模块

(https://blog.csdn.net/coder9999/article/details/79196753)两个链接的内容,完成硬件连接和库的引用应该有这么几个步骤: 1、硬件连接;2、打开spi和IIC端口;3、安装spi-py库;4安装MFRC522-python库。案例1:门禁系统门禁程序原型说明

根据给定的示例程序,设计的门禁程序原型,采用了直接读卡id号的模式,与登记在sqlite3库中的记录比较,如有记录,点亮led灯,模拟开门,同时登记刷卡开门的记录。

************************

程序特点:因判断的是卡id,须使用登记的ic卡,采用了本地sqlite3库记录,可以根据py_mysql.py修改为读取远程mysql的程序。

****************************

原有程序文件

MFRC522.py 库文件

Dump.py 显示所有扇区数据

Read.py python2的读卡id的程序

Write.py python2的写扇区8的程序

*********************************************

io.py 控制led显示,模拟开门程序,开门程序只需要一个i/o口,在输出out为1的时候,开门,然后自动关门

db_rz.db sqlite3的数据库文件,含两个表 py_cb.py python3创建sqlite数据库中表的程序

py_insery.py 插入数据

py_select.py 查询数值

py_sqlite.py 显示表记录

py_mysql.py python3连接mysql数据库的程序

*****************************************************

r.py python3的读卡程序,id为10进制

r_id.py python3的读卡id程序,id为16进制

ck.py 门禁主程序,查询卡id是否登记的库中,是,开门,不是,给出提示,只要刷卡,就记录

zk.py 注册卡的程序,将卡登记入库 可以参考更为方便的另一种web门禁

案例2:web门禁系统 web门禁

基于ic卡的门禁,在主程序中,根据卡id是否登记在sqlite3库中记录情况开门,因主程序记录了登记的ic的记录,也记录 了没有登记的ic的记录,因此结合phpliteadmin,web管理sqlite3数据库的软件,通过对记录的处理,完成整个门禁功能

案例3:一卡通系统 M1卡充值消费示例程序

类似一卡通消费,公交卡,地铁卡,饭卡等与数字存取有关的操作

******************************************

根据给定的示例程序,设计的卡消费程序原型,采用了直接读写block8,存取数字的模式实现了充值与消费,采用了本地数据 库sqlite记录流水,卡本身保存剩余金额的方式。block8中数字的存取,没有采用通用的值,反值,校验位的模式保证数据的一致性, 而是采用了对block8的16字中的前后8个字保存一样的数字方式方便读写,同时前后对照,也有一定的容错性。 因库MFRC522.py不能满足要求,在MFRC522_Read函数的基础上增加了MFRC522_Read_data库函数,满足对指定扇区读取数据的需求。 根据M1卡对扇区读写数据的要求,为简化难度,没有采用将数字转换为16进制存储在扇区的模式,参考input_s.py,没有完全实现。 而是采用了直接将10进制数字转换为单个数字列表的方式,将每一个10进制数转换为ascii内码的方式形成列表,储存在block中,读取 过程相反,具体的过程可以参考input_store.py,因采用了block的一半存储数字,考虑到货币需要精确到0.01元,因此采用了将货币金 额元乘以100保存,没有考虑存储负值,所以能够保存的货币金额最大是999999.99元,可以满足绝大多数的需求。

*********************************************

原有程序文件

MFRC522.py 库文件

Dump.py 显示所有扇区数据

Read.py python2的读卡id的程序

Write.py python2的写block8的程序

***********************************************

cz.py python3充值程序,直接写卡,没有库操作

xf.py 消费程序,默认直接扣除10元,直接写卡,没有在库中记录

czk.py 充值程序,充值金额写库,写卡

xfk.py 消费程序,记录记库,卡中金额不能超过库里金额,否则废卡

input_s.py 过程测试,没有实现

input_store.py 过程测试,将10进制数字形成适合在卡中保存的数据

up.py 本地上传记录程序,将本地sqlite中的消费记录上传到远程总库中,将远程库中的总金额同步到本地

案例4:类身份证系统 M1卡类身份证存、读中文和字符示例程序

******************************************

M1卡的类似身份证的示例程序,直接将姓名,性别,地址,身份证号写在卡上,然后读出来。 根据实例代码中的Write.py 和Dump.py程序改写,示例中将性别名字写在一个数据块4,将住址写在 数据块5,身份证号写在了数据块9和10,发现对一个扇区写需要验证一次,分两部分写,没有做数据校验,没有做卡作废处理 因库MFRC522.py不能满足要求,在MFRC522_Read函数的基础上增加了MFRC522_Read_data库函数,满足对指定扇区读取数据的需求。 根据M1卡对扇区读写数据的要求,对一个扇区写需要验证key,即使所有的key一样,对不同的扇区写仍然要验证一次key,性别名字保 存在扇区1的block4,直接采用了GBK编码,一个汉字占两个字节,比UNICODE占用三个字节节省一些,家庭住址保存在扇区1的block5, 作为实例程序,地址最多只能有8个汉字,如不能满足要求,自己考虑增加。身份证号保存在扇区2的block9和block10,目前身份证位数为18位, 可以考虑将前部分两个数字保存一个字,这样在一个块就可以保存身份证号,可以参考input_store2.py,涉及编码问题,没有最终实现, 最终实现的可以参考input_store3.py,将身份证号前16位保存在block9,后两位保持在block10,采用了gbk编码,一个数字占一个字,这样身份 证最长可以保存32位数字或字母。

*********************************************

原有程序文件

MFRC522.py 库文件 增加了MFRC522_Read_data函数

***********************************************

d.py 原有dump.py的改写

input_store1.py 一些测试想法

input_store2.py 想法,对身份证号码合并储存,没有实现

input_store3.py 对性别姓名地址身份证号综合的一个在卡存储的测试

rk.py 读身份证 rw.py 没有实现,发现对多个扇区写需要多个key验证

rw1.py 写身份证中姓名性别地址,对扇区1中block4,block5读写

rw2.py 写身份证中身份证号,对扇区2中block9,block10读写

w.py 测试对多个扇区写的测试

另外一个选择,当更换树莓派的系统,重新配置时候发现,MFRC522-python库不是那么稳定,有时拔掉rst线时又可以读卡,经过查找,可以使用pi-rc522库,这个库在MFRC522-python库基础上改进,使用了IRQ也就是中断的模式,原理上效率更高,对系统的占用更小,经测试,这个库比较稳定。

,