python - Pyserial 发送超过一个字节

标签 python linux pyserial

第一次海报。

在开始之前,我只想说我是一名初学者程序员,所以请耐心等待,但我仍然可以很好地跟上。

我有一个名为 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/

相关文章:

python - 导入 python 模块的特殊性?

python - 如何构建十六进制命令并将其发送到电视

Python 创建数据并将其附加到新的 Excel 工作簿 pandas

c - 如何避免读取基准中的缓存效应

python - 对一个对象执行某些操作会对同一类的所有对象执行相同的操作吗?

regex - 如何到达文本文件的特定部分然后搜索

linux - bash shell sys.path.append 问题

python - 如何在通话期间通过 GSM 调制解调器发送和接收一些数据(Python 和 AT 命令)

python - 通过 .sh 或 .desktop 文件执行 python 脚本不起作用

python - 使用 if 语句验证字典成员资格