更改PySerial或其他模块

时间:2017-03-09 12:29:49

标签: python beagleboneblack

我想知道是否存在任何其他模块通过串口在python中进行通信,而不是PySerial。

我想知道这个,因为PySerial只与“字符串”通信,我有一个微控制器将从BeagleBone Black接收数据,我不应该在这个微控制器上做一个算法来将字符串更改为int或bytes,因为将花费大量的处理,字符串上的每个字符都使用一个字节,这将在这个微观上占用很多。

说这个,我想以int / hex或二进制格式发送数据而不是BeagleBone端的字符串,其他解决方案可以更改PySerial模块来执行此操作。

任何帮助都会得到帮助。

最诚挚的问候, 大卫

2 个答案:

答案 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,我可以确认它正确地按要求写入字节。