pyserial 串口输出16进制数组问题
1.使用pyserial发送16进制数组给下位机,测试代码如下。
def order_list(): a = 'aa0902630000bb'
a_list = []
for i in a.split():
a_list.append(binascii.a2b_hex(i))
return a_list
ser = serial.Serial('/dev/ttyUSB0', 9600)
ser.writelines(order_list())
问题:为什么执行list.append之后,list里面会多一个b?这个‘b’是从哪来的,还是这个b代表的是数据类型?但是如果是数据类型的话,为什么我打印第一个列表元素,为什么这个b也会一起打印出来?
回答:
b指bytes object,通常和str object互相转换。
>>> "中文".encode('u8')b'\xe4\xb8\xad\xe6\x96\x87'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('u8')
'中文'
回答:
a2b_hex是将字符串指转换成16进制字节码,这是串口通信常用的通信通信方式,a2b和b2a方法是互为逆向的转换,你自己测测就知道了。
以上是 pyserial 串口输出16进制数组问题 的全部内容, 来源链接: utcz.com/a/157963.html