将PySerial代码从Python 3转换为2.7

时间:2017-08-08 04:23:36

标签: python python-2.7 pyserial

我正在尝试将用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)返回什么数据类型?

或者更好的是,如果有人有文档的链接......

1 个答案:

答案 0 :(得分:0)

好吧,我不得不逐字use a time machine找到PySerial 2 documentation,它已不复存在,但现在我可以回答我自己的问题了:

ser.write()在Python 2.6+中接受str或者实际上bytearraybytearray可能更好,因此我可以根据需要指定编码,因为str的编码似乎取决于system settings。所以我的代码现在是:

ser.write(bytearray([0x30]))

此外,ser.read会在Py2.6 +中返回str(或bytes)。