将 PySerial 代码从 Python 3 转换为 2.7

Converting PySerial Code from Python 3 to 2.7

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

或者如果有人对文档有 link 更好...

好吧,我不得不从字面上 use a time machine to find PySerial 2's documentation,它不再存在,但现在我可以回答我自己的问题了:

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

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

此外,ser.read returns 一个 str (或 Py2.6+ 中的一个 bytes)。