pySerial write() 无法接收我的字符串
我正在使用Python 3.3和pySerial进行串口通信。
我想给我的COM端口发送一个命令,但写入的方法却无法接受我的字符串。(大部分代码来自这里 pySerial包的完整示例)
这是怎么回事呢?
import time
import serial
ser = serial.Serial(
port='\\\\.\\COM4',
baudrate=115200,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
if ser.isOpen():
ser.close()
ser.open()
ser.isOpen()
ser.write("%01#RDD0010000107**\r")
out = ''
# let's wait one second before reading output (let's give device time to answer)
time.sleep(1)
while ser.inWaiting() > 0:
out += ser.read(40)
if out != '':
print(">>" + out)
ser.close()
错误出现在ser.write("%01#RDD0010000107**\r")这行,出现的错误信息是 追踪信息大致是这样的: data = to_bytes(data) b.append(item) TypeError: 需要一个整数。
3 个回答
2
我在尝试写东西的时候也遇到了“类型错误:需要一个整数”的错误信息。谢谢你,使用 .encode() 解决了我的问题。我是在一台运行32位Windows XP专业版的Dell D530上使用Python 3.4。
这里我省略了串口设置:
>>>import serial
>>>ser = serial.Serial(5)
>>>ser.close()
>>>ser.open()
>>>ser.write("1".encode())
1
>>>
10
你已经找到了问题的根本原因。或者可以这样做:
ser.write(bytes(b'your_commands'))
45
结果发现,这个字符串需要转换成字节数组。为此,我修改了代码,变成了:
ser.write("%01#RDD0010000107**\r".encode())
这样就解决了问题。