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

时间:2015-02-16 16:28:01

标签: python raspberry-pi pyserial rfid uart

所以我试图从我的覆盆子pi连接到UART的rfid阅读器PN532读取数据。硬件已全部连接,应该正常工作,因为libnfc的示例nfc-poll读取我的标签和电话,nfcpy库可以读取我的手机。

现在我想编写一个简单的python程序来读取串口' / dev / ttyAMA0' (UART rfid阅读器工作)并从读取的数据中检索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不起作用?或者是其他不妥之处? 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

有一个原因可以让像libnfc和nfcpy这样的库连接PN532 NFC芯片:这个芯片不是一个独立的读卡器。因此,它不仅可以连续枚举标签并在串行接口上​​发送序列号。

相反,PN532包含一些 需要配置你的应用程序 的寄存器并提供一些命令(用于读取) /写入寄存器,轮询标签/ NFC设备,监听发起者/读者,通过RF接口交换数据等) 需要用来指示PN532 做你想做的事 。有关串行接口的信息,请参阅PN532 user manual,可用命令及其使用说明。