使用Python 3.3和pySerial进行串行通信。
我正在尝试向COM PORT写一个命令,但write方法不会占用我的字符串。 (大部分代码都来自Full examples of using pySerial package
发生了什么事?
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 \ n”)中 跟踪是这样的 data = to_bytes(数据) 在b.append(项目) TypeError:需要一个整数。
答案 0 :(得分:28)
事实证明,需要将字符串转换为bytearray并执行此操作,我将代码编辑为
ser.write("%01#RDD0010000107**\r".encode())
这解决了问题
答案 1 :(得分:6)
你找到了根本原因。或者这样做:
ser.write(bytes(b'your_commands'))
答案 2 :(得分:1)
尝试写入时,我遇到了相同的“TypeError:需要一个整数”错误消息。 谢谢,.encode()为我解决了它。 我在运行32位Windows XP Pro的Dell D530上运行python 3.4。
我在这里省略了com端口设置:
>>>import serial
>>>ser = serial.Serial(5)
>>>ser.close()
>>>ser.open()
>>>ser.write("1".encode())
1
>>>