法一:直接发送十六进制字符串
ser = serial.Serial('com1', 9600) # 初始化串口
send_data = '\x31\x32\x33\x34\x35'
ser.write_bytes(send_data.encode())
弊端:当有特殊的十六进制出现时,encode()无法解析特殊的字符串
法二:将十六进制代码逐字节转化为bytes类型
send_data=bytes([160, 1, 1, 162]) #####发送指令A00101A2
ser.write_bytes(send_data)
串口发送十六进制的原理是先将十六进制数转化为十进制值,然后通过ser.write()发送。在python中,只有bytes类型能通过串口收发,转化的实质是将十六进制代码逐字节转化为bytes类型,就是字节流。
补充:
\xA0 的ASCII码是160