找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 15058|回复: 2

[求助] pyserial串口十六进制操作

1

主题

2

帖子

11

积分

贫民

积分
11
cooladam2011 发表于 2014-1-25 17:12:09 | 显示全部楼层 |阅读模式
请问如何将命令帧以十六进制方式发送至串口,在网上也查了半天,依然没有得到解决。
比如说我想向串口发送FF 55 AA 66 88
>>> import serial
>>> comm=serial.Serial()
>>> comm.port="COM1"
>>> comm.baudrate=9600
>>> comm.stopbits=1
>>> comm.parity="E"
>>> comm.open()
>>> a="FF 55 AA 66 88"
>>> a=r'\x'+a
>>> a=a.replace('',r'\x')
>>> a
'\\xFF\\x55\\xAA\\x66\\x88'
请问如何将这里的\\改成发送至串口,运行a.decode('string_escape')是不行的,55会变成U
请大家指导。
回复

使用道具 举报

1

主题

2

帖子

11

积分

贫民

积分
11
cooladam2011  楼主| 发表于 2014-1-25 18:12:02 | 显示全部楼层
本帖最后由 cooladam2011 于 2014-1-25 18:13 编辑

哈哈哈,又参考网上的指导琢磨了一会弄出来了,分享给大家。
这里我们导入binascii模块,进行进制转换,在发送数据前先把十进制数据转换为十六进制即可发送
前面的串口操作省略
>>> import binascii
>>> a="FF 55 AA 66 88"
>>> a=a.split()
>>> for i in range(len(a)):
              a=binascii.a2b_hex(a)        
>>> a                       #这时a的内容已经转为十六进制,我们发送即可
['\xff', 'U', '\xaa', 'f', '\x88']
>>> comm.write(a)
回复 支持 反对

使用道具 举报

2

主题

11

帖子

11

积分

贫民

积分
11
yhtjay 发表于 2014-12-27 10:19:54 | 显示全部楼层
感谢楼主,解决问题后还能将解决方法铺上来。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表