我知道有很多讨论,但我还有一个问题.我正在尝试使用pyserial通过pyserial将十六进制值发送到我的设备
command="\x89\x45\x56"
ser.write(command)
Run Code Online (Sandbox Code Playgroud)
但是我一直收到错误说 string argument without encoding.有人知道如何解决这个问题吗?
packet = bytearray()
packet.append(0x41)
packet.append(0x42)
packet.append(0x43)
ser.write(packet)
Run Code Online (Sandbox Code Playgroud)
来自 pySerial API文档:
write(data) 将字节数据写入端口。这应该是字节类型(或兼容,例如 bytearray 或 memoryview)。Unicode 字符串必须被编码(例如'hello'.encode('utf-8')。
假设您正在使用 Python 3(您应该这样做),这是发送单个字节的方式:
command = b'\x61' # 'a' character in hex
ser.write(command)
Run Code Online (Sandbox Code Playgroud)
对于几个字节:
command = b'\x48\x65\x6c\x6c\x6f' # 'Hello' string in hex
ser.write(command)
Run Code Online (Sandbox Code Playgroud)
如果这是 Python 3,它可能会将您的字符串视为 unicode,并且不知道如何转换它。我想你可能想在这里使用字节:
command=b"\x89\x45\x56"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37967 次 |
| 最近记录: |