ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – Pyserial发送多个字节

2019-10-08 22:01:34  阅读:238  来源: 互联网

标签:pyserial python linux


第一次海报.

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有