将 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+ 中的 bytearray
。 bytearray
可能更好,因此我可以根据需要指定编码,因为 str
的编码似乎取决于 system settings。所以我的代码现在是:
ser.write(bytearray([0x30]))
此外,ser.read
returns 一个 str
(或 Py2.6+ 中的一个 bytes
)。
我正在尝试将用 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+ 中的 bytearray
。 bytearray
可能更好,因此我可以根据需要指定编码,因为 str
的编码似乎取决于 system settings。所以我的代码现在是:
ser.write(bytearray([0x30]))
此外,ser.read
returns 一个 str
(或 Py2.6+ 中的一个 bytes
)。