我使用此库https://github.com/mxgxw/MFRC522-python使用rc522阅读器和Raspberry Pi读取UID。它适用于4字节长uid的卡,但我无法读取7个字节长的Desfire uid。我读到有必要在级联位为1时编辑反冲突算法。如何修改此库以便能够读取7个字节长的uid?
答案 0 :(得分:1)
我刚来这里遇到同样的问题。尽管已经过去了4年多,但也许我的解决方案可以帮助某人。
1)重命名(或删除)当前的MFRC522-python库
cd ~/.local/lib/python2.7 # or your python version
mv pirc522 pirc522_original
2)创建用于安装新库的新目录(如果不存在)
mkdir /usr/local/lib/python2.7/dist-packages # or your python version
3)安装该库的该其他版本,该库包含功能anticoll2()
,该功能使您可以从RFID卡读取更多字节
git clone https://github.com/ondryaso/pi-rc522.git
cd pi-rc522
python setup.py install
仅此而已。您可以按照导入前一个库的相同方式导入该新库。
现在,要读取RFID卡,请记住7字节的RFID卡以0x88
开头。因此,当anticoll2()
在第一个位置返回anticoll()
时,可以使用此库中的新功能0x88
读取更多数据。这是一个示例:
from pirc522 import RFID
def detect_uid(reader):
(error, tag_type) = reader.request()
(error, uid) = reader.anticoll()
if uid[0] != 0x88:
rfid_uid = uid[0:4] # classic 4bytes-rfid card
else:
(error, uid2) = reader.anticoll2()
rfid_uid = uid[1:4] + uid2[:4] # 7bytes-rfid card
return rfid_uid
reader = pirc522.RFID()
print("UID: " + str(detect_uid(reader)))