首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用rc522和树莓派读取7字节长的Desfire uid?

如何使用rc522和树莓派读取7字节长的Desfire uid?
EN

Stack Overflow用户
提问于 2014-12-29 06:39:22
回答 1查看 1.7K关注 0票数 3

我通过rc522阅读器和树莓派使用这个库https://github.com/mxgxw/MFRC522-python来读取UID。它适用于具有4字节长的uid的卡片,但我无法读取7字节长的Desfire uid。我读到当级联位为1时有必要编辑防冲突算法,如何修改这个库才能读取7字节长的uid?

EN

回答 1

Stack Overflow用户

发布于 2019-11-15 16:45:17

我是带着同样的问题来到这里的。虽然四年多过去了,但也许我的解决方案可以帮助一些人。

1)重命名(或删除)当前的MFRC522-python库

代码语言:javascript
复制
cd ~/.local/lib/python2.7  # or your python version
mv pirc522 pirc522_original

2)创建用于安装新库的新目录(如果该目录不存在)

代码语言:javascript
复制
mkdir /usr/local/lib/python2.7/dist-packages  # or your python version

3)安装该库的另一个版本,其中包含一个函数anticoll2(),允许您从RFID卡中读取更多字节

代码语言:javascript
复制
git clone https://github.com/ondryaso/pi-rc522.git
cd pi-rc522
python setup.py install

仅此而已。您可以像导入上一个库一样导入这个新库。

现在,要读取RFID卡,请记住7字节的RFID卡以0x88开头。因此,当anticoll()在第一个位置返回0x88时,您可以使用该库中的新函数anticoll2()读取更多数据。下面是一个例子:

代码语言:javascript
复制
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)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27681312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档