私はの概念実証をまとめようとしていますシリアルポートへの読み取り/書き込みと、デザイン/コンセプトに問題があります。ポーリングしたくないので、重複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の例は一種の不十分です(通信イベントの監視)。現在2つのイベントを使用していますが、 ReadFile
ステップが失敗しています ERROR_INVALID_PARAMETER
.
上記の手順で、1つまたは2つの重複する構造が必要ですか?もしあれば OVERLAPPED
構造は、ステップです WriteFile
, WaitCommEvent
(書き込み用)、リセットイベント、 WaitCommEvent
(読み取り用)、 ReadFile
?
回答:
回答№1は6この記事をご覧ください。シリアルポートでオーバーラップI / Oを使用する方法については、次のとおりです。