我想知道是否存在任何其他模块通过串口在python中进行通信,而不是PySerial。
我想知道这个,因为PySerial只与“字符串”通信,我有一个微控制器将从BeagleBone Black接收数据,我不应该在这个微控制器上做一个算法来将字符串更改为int或bytes,因为将花费大量的处理,字符串上的每个字符都使用一个字节,这将在这个微观上占用很多。
说这个,我想以int / hex或二进制格式发送数据而不是BeagleBone端的字符串,其他解决方案可以更改PySerial模块来执行此操作。
任何帮助都会得到帮助。
最诚挚的问候, 大卫
答案 0 :(得分:0)
Struct Lib努力解决我的问题。
示例(仅在一个字节中发送十进制数170):
十进制: ser.write(170)不起作用
十六进制: ser.write(AA)或ser.write(0xAA)不起作用
字符串: ser.write(“170”)有3个字节
字符串: ser.write('AA')有2个字节,ser.write('0xAA')有4个字节
struct.pack('B',170)=> '\ xAA'(参见struct lib文档)
十六进制字符串 ser.write('\ xAA')只有1个字节
在接收方使用:
data_output = ser.read(1)
struct.unpack('B', data_output)
输出: 170
答案 1 :(得分:-1)
您使用的是什么版本的PySerial和Python?你可能只需要升级。
根据PySerial documentation,当前版本本地写入字节:
<强>写(数据)强>
将字节数据写入端口。这应该是字节类型(或兼容,如bytearray或memoryview)。必须对Unicode字符串进行编码(例如'hello'.encode('utf-8')。
我使用Python 3.4.2检查了PySerial 3.2.1,我可以确认它正确地按要求写入字节。