第一次海报。
在开始之前,我只想说我是一名初学者程序员,所以请耐心等待,但我仍然可以很好地跟上。
我有一个名为 Pololu Wixel 的无线设备,它可以无线发送和接收数据。我正在使用其中两个。一份发送,一份接收。它是 USB 接口(interface),因此可以直接插入我的 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() 并转换回二进制
最佳答案
您可能需要将数字分成多个字节,并以小端或大端顺序发送这些片段。
EG:
low_byte = number % 256
high_byte = number // 256
这应该会让您达到 65535。您可以使用 high_byte * 256 + low_byte
重建另一侧的数字。
关于python - Pyserial 发送超过一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108635/