シリアル ポートへの読み取り/書き込みの概念実証をまとめようとしていますが、設計/概念に問題があります。ポーリングしたくないので、オーバーラップ I/O を使用しようとしています。この場合、これはマルチスレッド アプリケーションではなく、効率的な待機を使用しているだけです。
- ポートを開く (OVERLAPPED あり)
- SetCommState (ポート ボー、パリティ、CTS/RTS などの設定)
- SetCommMask (EV_BREAK、EV_CTS、EV_DSR、...、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY)
- OVERLAPPED 構造とイベントを作成する
- WriteFile (ポートへ)
- WaitCommEvent (書き込みによる)
- WaitCommEvent (読み取りのため)
- ReadFile (ポートから)
- 読み取りバッファを確認する
MSDN の例はちょっと不十分です ( Monitoring Communications Events )。現在 2 つのイベントを使用していますが、ReadFile
ステップが で失敗していERROR_INVALID_PARAMETER
ます。
上記の手順では、重複する構造が 1 つまたは 2 つ必要ですか? 構造体が1 つの場合OVERLAPPED
、手順WriteFile
は、WaitCommEvent
(書き込みの場合)、リセット イベント、WaitCommEvent
(読み取りの場合) ReadFile
、?