python – 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?
我希望这一切都有道理,我将非常感谢任何帮助.
谢谢
UPDATE
好的,我想我现在已经开始了.所以我做了:
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()并转换回二进制
解决方法:
您可能需要将数字分成多个字节,并以小端或大端顺序发送.
例如:
low_byte = number % 256
high_byte = number // 256
这应该会让你达到65535.你可以用high_byte * 256 low_byte重建另一边的数字.
标签:pyserial,python,linux 来源: https://codeday.me/bug/20191008/1874539.html