Boostasioを使用してシリアルポートを開くプログラムがあります。
シリアルポートには、デフォルトで、回線をアイドル状態に保つ遅延があります。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のデバイスマネージャーでシリアルポートのプロパティを変更することを提案するソリューションがいくつかあることを確認しましたが、これらのソリューションが示すようにそれらのプロパティがなく、コードソリューションが必要です。