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

时间:2014-03-08 21:05:29

标签: python pyserial

使用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:需要一个整数。

3 个答案:

答案 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

>>>