我正在尝试将用Python 3.5编写的程序移植到2.7,但似乎Python 3中添加的字节对象改变了PySerial的实现方式。不幸的是,我找不到PySerial 2.x 的任何文档,所以我非常感谢帮助将此代码从PySerial 3转换为2:
import serial
ser = serial.Serial('COM6', 9600)
ser.write(bytes(chr(0x30), 'UTF-8'))
dataIn = ser.read(size=4)
由于bytes
对象只是Python 2.x中str
类型的别名,因此出现以下错误:
TypeError: str() takes at most 1 argument (2 given)
PySerial的write()
方法是使用bytearray
对象作为参数还是使用string
和其他参数进行编码?
ser.read(size=4)
返回什么数据类型?
或者更好的是,如果有人有文档的链接......
答案 0 :(得分:0)
好吧,我不得不逐字use a time machine找到PySerial 2 documentation,它已不复存在,但现在我可以回答我自己的问题了:
ser.write()
在Python 2.6+中接受str
或者实际上bytearray
。 bytearray
可能更好,因此我可以根据需要指定编码,因为str
的编码似乎取决于system settings。所以我的代码现在是:
ser.write(bytearray([0x30]))
此外,ser.read
会在Py2.6 +中返回str
(或bytes
)。