rfid生產測試方法(RFID實驗實例)
2023-04-20 17:13:29
rfid生產測試方法? 本實例包含4個案例,覆蓋了M1卡的幾乎所有應用,實例以RC522模塊和樹莓派實現,這些實例均 以 MFRC522-python 庫(https://github.com/mxgxw/MFRC522-python)為基礎 可以參考 樹莓派3B連接MFRC522模塊進行RFID讀寫全指南 和 樹莓派 RC522模塊,今天小編就來聊一聊關於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也就是中斷的模式,原理上效率更高,對系統的佔用更小,經測試,這個庫比較穩定。
,