Pyserial发送超过一个字节

时间:2013-11-20 22:41:02

标签: python linux pyserial

第一次发布海报。

在开始之前,我只是想说我是一名初学程序员,所以请耐心等待,但我仍然可以顺利进行。

我有一个名为Pololu Wixel的无线设备,可以无线发送和接收数据。我正在使用其中两个。一个发送,一个接收。它是USB,所以它可以直接插入我的Raspberry Pi或PC,因此我所要做的就是通过终端连接到COM端口以读取和写入数据。它附带一个测试终端程序,允许我发送1-16个字节的信息。我已经完成了这个并且我发送并收到了2个字节(这就是我需要的)没有问题。

现在这是我的问题:当我打开Ubuntu终端并使用Pyserial连接到正确的发送Wixel COM端口并写入大于255的值时,我的接收COM端口,它连接到另一个终端实例也使用Pyserial,没有读取正确的值,因此我认为我无法读取和写入两个字节,但只能读取一个字节。在做了pyserial文档中的在线阅读之后,我相信,不知道, Pyserial一次只能读写5,6,7或8位。

我希望我的问题现在很明显。我怎么能把2个字节的信息写入我的设备的COM端口并将其发送到需要读取这2个字节的其他设备,所有这些都使用pyserial?

我希望这一切都有意义,我非常感谢任何帮助。

由于

更新 好的,我想我现在已经开始了。所以我做了:

import serial

s=serial.Serial(3) //device #1 at COM Port 4 (sending)
r=serial.Serial(4) //device #4 at COM Port 5 (receiving)

s.timeout=1
r.timeout=1

s.write('0x80')
r.readline()
  //Output said: '0x80'

s.write('hh')
r.readline()
  //Output said: 'hh'

老实说,我认为这解决了我的问题。也许从来没有一个问题开始。也许我可以从程序中获取我的16位二进制数据,例如“1101101011010101”,把它变成字符(我之前看到的东西叫做char(),我认为就是这样)

然后使用s.write('WHATEVER') 然后使用r.readline()并转换回二进制

1 个答案:

答案 0 :(得分:2)

您可能需要将数字分成多个字节,并以小端或大端顺序发送。

EG:

low_byte = number % 256
high_byte = number // 256

这应该可以达到65535.您可以使用high_byte * 256 + low_byte在另一侧重建数字。

相关问题