python串⼝发送16进制数
python通过调⽤serial库函数发送指令,其中串⼝通信发送的数据需要是str格式字符串。当需要给下⽅发送16进制数据时,必须将16进制数转化为str格式字符串⽅可发送。
1.数据采⽤python中str()函数,转换为字符串格式,再串⼝接受端对字符串进⾏解码
例如python通过串⼝发送0x08数据⾄串⼝接受器,此时可以通过将0x08转换为str格式发送,再通过串⼝接收器解析代码将str转化为16进制数。
data=0x08python怎么读取串口数据
serial.send(str(data))          注:str(0x18)='24'
事实上这样的转化在串⼝接收器端会⽐较⿇烦,因为使⽤串⼝调试助⼿时也⽆法进⾏解码。同时发送的数据量也偏⼤
2.数据采⽤python中chr()函数,转换为ascII码形式,发送ascII码,对⽅接受后识别为16进制数据。
data=0x08
serial.send(chr(data))          注: chr(0x08)=' 08'
具体为何chr()函数转换的16进制ascII数据可以被识别,需要认真探讨
这个⽅式有⼀个很⼤的问题是chr的转换只能是0~255之间的数据,超过就⽆法解析成ascII码
事实上 当print(chr(0x30))时打印出的是ascII编码的字符0,print(chr(48)也是字符0,与ascII字符表上的⼀致。
3.同时还可以通过binascii.b2a_hex函数进⾏进制转换
后⾯两种可⾏的⽅式归根究低是通过发送‘x08’这样的格式发送,实际上这个格式是通⽤的ascII码的格式。事实上系统将数据下达串⼝时会将数据进⾏解析,ascII码的数据解析为这个16进制对应的⼆进制码。即使发送的是字符串:‘hello’ 实际上也是通过ascII码的解析,将每⼀个字符解析成ASCII码的⼆进制数据,再发送过去。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。