我正在从连接到传统Linux内核(Ubuntu 12.04)上的标准RS-232串口的传感器读取数据
传感器以1000Hz输出。并以115200,8N1的波特率连接。每个传感器读数为4个字节,总吞吐量为4Kb / s。由示波器确认的传输模式是4字节突发,然后是接近毫秒的暂停。传感器非常非常一致。
99%的数据包以极低的延迟接收。但是,对于大约0.5%的字节,串行端口读取块为2-8ms。在此块之后,所有"错过"字节读取非常快。这表明数据在极少数情况下是缓冲的。
我已经尝试了调度程序优先级(nice)和串行端口设置(ASYNC_LOW_LATENCY,VMIN,VTIME,原始,非阻塞设置等)。这些似乎都没有任何明显的效果。
除了重新编译内核或切换到更实时的操作系统之外,我还能做些什么来获得更一致的串口读取吗?
答案 0 :(得分:0)
可以通过软件或硬件参数提供答案。例如,High delay in RS232 communication on a PXA270或https://electronics.stackexchange.com/questions/96893/what-can-i-do-to-decrease-the-latency-from-these-serial-ports-which-are-attached.You可以尝试使用low_latency paramlow_latency参数在Minimize Linux Serial Port Latency中建议的方式。