在执行串口测试任务时,PC端向下位机发送串口指令有两种常用的格式:
ASCII字符串,比如:AT+CFUN=1
整数数组,比如:[0x59, 0x03, 0x01, 0x02, 0x03]
在Python程序中,PySerial库的数据收发API的参数都是bytes类型。
Python的bytes类型是一个只读的字节列表,单个字节就相当于C语言的uint8类型。bytes的常见写法为:b'\x01\x02'或b'hello'。
所以在实际程序中需要将字符串或整数类型与bytes进行互转,本文总结一些常用的转换技巧。
1. 字符串转换成bytes类型
cmd_str = 'AT+CFUN=1'
cmd_bytes = cmd_str.encode()
# cmd_bytes = b'AT=CFUN=1'
2. 十六进制数组转换成bytes类型
cmd_hex = [0x01, 0x02, 0x03, 0x04]
cmd_bytes = bytes(cmd_hex)
# cmd_bytes = b'\x01\x02\x03\x04'
cmd_byte = 0x05
cmd_bytes = bytes([cmd_byte])
# cmd_bytes = b'\x05'
3. 多字节整数转换成bytes类型
cmd_number = 0x010203
cmd_bytes = cmd_number.to_b