pySerial write()不会接受我的字符串

Gar*_*vin 21 python pyserial

使用Python 3.3和pySerial进行串行通信.

我正在尝试向COM PORT写一个命令,但write方法不会占用我的字符串.(大多数代码来自这里使用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()
Run Code Online (Sandbox Code Playgroud)

错误发生在ser.write("%01#RDD0010000107**\r")中,它获取Traceback就像这个data = to_bytes(data)b.append(item)TypeError:需要一个整数.

Gar*_*vin 29

事实证明,字符串需要转换为bytearray,为此,我编写了代码

ser.write("%01#RDD0010000107**\r".encode())
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题


Mur*_*eng 7

你找到了根本原因.或者这样做:

ser.write(bytes(b'your_commands'))
Run Code Online (Sandbox Code Playgroud)