首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于Raspberry Pi的串行数据传输输入输出延迟

基于Raspberry Pi的串行数据传输输入输出延迟
EN

Stack Overflow用户
提问于 2016-05-20 14:43:36
回答 2查看 525关注 0票数 2

目标:

  • 驱动多个伺服/RC电机无线从一个pi到另一个pi。
  • 本质上,我希望使用pi构建一个RC遥控器,并在接收端设置第二个pion。

现在,我有一个通过射频链路模块的串行传输是稳定的,并且很少有损坏的条目。由于射频链路模块,串行传输的最大波特率为4800。

问题:

在发射机pi打印值和接收器pi打印值之间似乎有2-4秒的差异。我不知道这种延迟是从何而来,为何如此之大。请注意,接收pi上的信号与发射机pi发送的数据完全相同,但2-4秒后。即使当我绕过发射机/接收机模块,用跳线连接Tx和Rx引脚时,也能看到同样的延迟。

是什么导致接收Pi上的数据在很长时间后被解码?我已经粘贴了下面的代码。

代码语言:javascript
运行
复制
import serial
import struct

ser = serial.Serial("/dev/ttyAMA0")
ser.baudrate = 4800

iCount = 0
bProgramLoop = True
while (bProgramLoop == True):

    iOne = iCount
    if (iOne == 100):
        iOne = 0
        iTwo += 1
        iCount = 0
    if (iTwo == 100):
        iTwo = 0
        iThree += 1
    if (iThree == 100):
        iThree = 0
        iFour += 1
    if (iFour == 100):
        iFour = 0
        iFive += 1
    if (iFive == 100):
        iFive = 0

    lData = [iOne,iTwo,iThree,iFour,iFive] # i have done it like this so that I can track in real time where the transmitter is and receiver is with respect to real time changes on the transmitter side
    sData = struct.pack('5B',*lData)
    ser.write(sData)
    print sData

    iCount += 1
代码语言:javascript
运行
复制
import serial
import struct

ser = serial.Serial("/dev/ttyAMA0")
ser.baudrate = 4800

bProgramLoop = True
while (bProgramLoop == True):
    sSerialRead = ser.read(5)
    tData = struct.unpack('5B',sSerialRead)
    print tData

Tx打印字符串sData和Rx打印触摸tData之间的时间差在2-4秒之间。struct.unpack函数慢吗?

我需要这个时差是绝对最小的。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-22 14:12:08

首先,我不确定ser.write()是否是异步调用。如果使用的是pySerial库,那么文档会说这是一个阻塞调用。

也许试着:

代码语言:javascript
运行
复制
...
ser.write(sData)
ser.flush()    # Force the 'send'
print sData
...

此外,您的ldata可能更容易填充如下所示:

代码语言:javascript
运行
复制
lData = [iCount % 100, iCount % 10000, ...etc]

此外,设置写超时可能会有帮助(但我不这么认为)。

票数 1
EN

Stack Overflow用户

发布于 2016-05-25 20:38:09

(代表“任择议定书”张贴)。

正如Doddie所建议的那样,在ser.flush之后使用ser.write命令。这会在Rx端产生几乎即时的响应。总体主回路样本率已经下降了一点,但至少对我来说,这并不是一个交易的破坏者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37349685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档