如何使用 Raspberry Pi 读取 RFID 卡上的纯文本
How to Read Plain Text on RFID Card with Raspberry Pi
我正在使用 RFID reader MFRC522 NFC Reader 套件,我想读取并打印底部指示的标签记录编号。我想打印的是 Record 0 部分。我无法理解它只读取了记录在相关卡上的此标签以外的一些数字。
我的代码如下:
from PyQt5.QtCore import QThread, pyqtSignal
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time
reader = SimpleMFRC522()
class RFIDThread(QThread):
change_text_signal = pyqtSignal(list)
def __init__(self):
super().__init__()
self._run_flag = True
def run(self):
try:
while (True):
id, text = reader.read()
self.change_text_signal.emit([id, text])
time.sleep(2)
finally:
GPIO.cleanup()
def stop(self):
"""Sets run flag to False and waits for thread to finish"""
self._run_flag = False
self.wait()
我需要知道如何读取我需要的值。有谁知道我该怎么做?
这是一个很大的主题,所以这个问题确实需要更多的关注。
但要让您朝着正确的方向开始,您需要了解您使用的卡(看起来像 Mifare Classic)如何存储数据,因此请阅读它的数据表 https://www.nxp.com/docs/en/data-sheet/MF1S70YYX_V1.pdf,尤其是其中的第 9 节详细说明卡理解的命令的文档。
然后您需要了解 Ndef
消息如何存储在 Mifare Classic 卡上,详见 https://www.nxp.com/docs/en/application-note/AN1304.pdf
还显示的数据格式为 Ndef
,因此您需要了解其组织方式。记录的高级结构在 https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-NDEF_1.0.pdf
的 NDEF 规范中定义
文本记录格式定义在 https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-RTD_Text_1.0.pdf
您应该能够为此使用库 https://pypi.org/project/ndef/
您还需要知道如何向卡发送和接收数据reader,这是由您使用的库完成的。
所以如果你知道看看你的例子要求图书馆做什么。这是读取UID,然后使用默认密钥进行身份验证并读取一些硬编码的块地址。
您需要在较高层次上做的是读取 UID,然后使用正确的密钥进行身份验证,然后读取正确的块以获取整个 Ndef
消息,然后解析它。
我正在使用 RFID reader MFRC522 NFC Reader 套件,我想读取并打印底部指示的标签记录编号。我想打印的是 Record 0 部分。我无法理解它只读取了记录在相关卡上的此标签以外的一些数字。
我的代码如下:
from PyQt5.QtCore import QThread, pyqtSignal
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time
reader = SimpleMFRC522()
class RFIDThread(QThread):
change_text_signal = pyqtSignal(list)
def __init__(self):
super().__init__()
self._run_flag = True
def run(self):
try:
while (True):
id, text = reader.read()
self.change_text_signal.emit([id, text])
time.sleep(2)
finally:
GPIO.cleanup()
def stop(self):
"""Sets run flag to False and waits for thread to finish"""
self._run_flag = False
self.wait()
我需要知道如何读取我需要的值。有谁知道我该怎么做?
这是一个很大的主题,所以这个问题确实需要更多的关注。
但要让您朝着正确的方向开始,您需要了解您使用的卡(看起来像 Mifare Classic)如何存储数据,因此请阅读它的数据表 https://www.nxp.com/docs/en/data-sheet/MF1S70YYX_V1.pdf,尤其是其中的第 9 节详细说明卡理解的命令的文档。
然后您需要了解 Ndef
消息如何存储在 Mifare Classic 卡上,详见 https://www.nxp.com/docs/en/application-note/AN1304.pdf
还显示的数据格式为 Ndef
,因此您需要了解其组织方式。记录的高级结构在 https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-NDEF_1.0.pdf
的 NDEF 规范中定义
文本记录格式定义在 https://github.com/haldean/ndef/blob/master/docs/NFCForum-TS-RTD_Text_1.0.pdf
您应该能够为此使用库 https://pypi.org/project/ndef/
您还需要知道如何向卡发送和接收数据reader,这是由您使用的库完成的。
所以如果你知道看看你的例子要求图书馆做什么。这是读取UID,然后使用默认密钥进行身份验证并读取一些硬编码的块地址。
您需要在较高层次上做的是读取 UID,然后使用正确的密钥进行身份验证,然后读取正确的块以获取整个 Ndef
消息,然后解析它。