我正在使用在Raspberry上运行的Python3。我有一个串口设备(max232 / PiC16F84)通过USB转串口适配器连接到Raspberry。 我尝试向设备发送两个字节(例如0000 0011),然后PIC将其解释为命令。 USB - 串行适配器配置正确,参数如bauderate应该没问题。我想我的代码没有将正确的字节发送到串口。
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=1200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
xonxoff=serial.XOFF,
rtscts=False,
dsrdtr=False
)
ser.open()
ser.isOpen()
print("Initializing the device ..")
ser.write(bytes(0x00))
print("Write command")
ser.write (bytes(0x04))
print('Done')
答案 0 :(得分:9)
您错误地使用了bytes
构造函数。当您使用int
作为参数调用它时,您会得到:
bytes(int) - >由null字节初始化的参数给出的字节对象大小
所以bytes(0x00)
(只是bytes(0)
)是空字符串,bytes(0x04)
是四个零字节:
>>> bytes(0x00)
b''
>>> bytes(0x04)
b'\x00\x00\x00\x00'
你想要的是bytes([ 0x00 ])
等,或者只是一个包含所有字节值的数组:
>>> bytes([0, 4])
b'\x00\x04'
如果字符串很短,您可以简单地将其写为常量:b'\x00\x04'
。有关更多选项,请参阅bytes()
的文档。
答案 1 :(得分:-2)
使用此: 字节[0×00] +字节([0×04])