我有一个使用 boost asio 打开串行端口的程序。
默认情况下,串行端口具有保持线路空闲的延迟。在 Windows 平台上,我看到了 30 毫秒的延迟,而在 Linux 平台上,延迟是 20 毫秒。
对于 Linux 环境,我发现“linux.h”的“ioctl”类有一种方法可以使用一些标志(以及我需要的:low_latency)来设置串行设置。
代码如下:
boost::asio::basic_serial_port<boost::asio::serial_port_service>::native_type native = serial_port_.native(); // serial_port_ is the boost's serial port class.
struct serial_struct serial;
ioctl(native, TIOCGSERIAL, &serial);
serial.flags |= ASYNC_LOW_LATENCY; // (0x2000)
ioctl(native, TIOCSSERIAL, &serial);
我也想减少我的 Windows 平台上的延迟。是否有一种等效的方法可以对带有 C++ 的 Windows 执行相同的操作?
顺便说一句,我看到有一些解决方案建议在 Windows 设备管理器中更改串行端口的属性,但我没有这些解决方案显示的这些属性,我需要一个代码解决方案。