python 中通过 uart 读取 PN532 的 Serial() 参数

Serial() Parameters to read a PN532 through uart in python

所以我正在尝试从我的 rfid reader PN532 读取数据,它连接到我的 raspberry pi 上的 UART。硬件都已连接,应该可以正常工作,因为 libnfc 的示例 nfc-poll 读取了我的标签和 phone,并且 nfcpy 库可以读取我的 phone.

现在我想编写一个简单的 python 程序来读取串行端口“/dev/ttyAMA0”(UART rfid reader 在其上工作)并从数据中检索 UID即已读。我无法使用 nfcpy 库,因为它不支持我的 MiFare 1k 经典卡。 据我所知,当 pip 安装 pyserial 时,我可以编写一个这样的程序来从我的 UART 串​​行端口检索数据:

import serial

ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=5)
        print("opened {0}" . format(ser.name))
        while True:
                try:
                        sr = ser.readline()
                        s = sr.decode('utf8')
                        if len(s) == 0:
                                continue
                        else:
                                sl = s[1:11] #exclude start x0A and stop x0D bytes
                                print(sl)

                except Exception as e:
                        print("error: {0}" . format(e))

但是当我使用 visual studio 进行远程调试时,sr 一直是 b'',因此解码结果为空字符串。

我的 serial.Serial() 参数有误吗?还是这种方法不适用于 PN532?还是有其他问题? 非常感谢任何帮助。

有一个像 libnfc 和 nfcpy 这样的库来连接 PN532 NFC 芯片是有原因的:这个芯片不是独立的 reader。因此它不只是连续枚举标签并通过串行接口发送它们的序列号。

相反,PN532 包含几个寄存器 需要为您的应用[=21 配置=] 并提供了一些命令(到 read/write 寄存器、轮询 tags/NFC 设备、监听 initiators/readers、通过 RF 接口交换数据等)需要使用它来指示 PN532做你想做的事情。请参阅 PN532 user manual 了解串行接口、可用命令及其使用说明。