非常感谢您的评论。
我能够将延迟减少到〜0.4ms。AEL手册中引用了命令setserial(8)。宾果游戏,我在
low_latency那里找到带有以下描述的标志:
以提高CPU利用率为代价,最大程度地减少串行设备的接收延迟。(通常,在将字符移交给行障碍之前,平均等待时间为5-10毫秒,以最大程度地减少开销。)默认情况下,此功能处于关闭状态,但是某些实时应用程序可能会发现此功能有用。
然后我执行
setserial /dev/ttyS1 low_latency了,延迟减少到了〜0.4ms :-)
但是我想在C ++应用程序中实现此行为,而不用setserial全局设置此标志(默认情况下,并非所有发行版中都包含此命令)。
我添加了以下代码行,其效果与setserial中的low_latency标志相同:
#include <sys/ioctl.h> #include <linux/serial.h>// Open RS232 on COM1mPhysicalComPort = open(aPort, O_RDWR | O_NOCTTY | O_NDELAY);struct serial_struct serial;ioctl(mPhysicalComPort, TIOCGSERIAL, &serial); serial.flags |= ASYNC_LOW_LATENCY; // (0x2000)ioctl(mPhysicalComPort, TIOCSSERIAL, &serial);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)