/ / Win32、シリアルポートの読み取り/書き込みおよびオーバーラップ-winapi、シリアルポート、待機

Win32、シリアルポート読み書きとオーバーラップ - winapi、シリアルポート、待機

私はの概念実証をまとめようとしていますシリアルポートへの読み取り/書き込みと、デザイン/コンセプトに問題があります。ポーリングしたくないので、重複I / Oを使用しようとしています。この場合、それはマルチスレッドアプリケーションではなく、効率的な待機を使用するだけです。

  1. ポートを開く(OVERLAPPEDを使用)
  2. SetCommState(ポートボー、パリティ、CTS / RTSなどの設定)
  3. SetCommMask(EV_BREAK、EV_CTS、EV_DSR、...、EV_RXCHAR、EV_RXFLAG、EV_TXEMPTY)
  4. OVERLAPPED構造とイベントを作成する
  5. WriteFile(ポートへ)
  6. WaitCommEvent(書き込みのため)
  7. WaitCommEvent(読み取りのため)
  8. ReadFile(ポートから)
  9. 読み取りバッファを確認する

MSDNの例は一種の不十分です(通信イベントの監視)。現在2つのイベントを使用していますが、 ReadFile ステップが失敗しています ERROR_INVALID_PARAMETER.

上記の手順で、1つまたは2つの重複する構造が必要ですか?もしあれば OVERLAPPED 構造は、ステップです WriteFile, WaitCommEvent (書き込み用)、リセットイベント、 WaitCommEvent (読み取り用)、 ReadFile

回答:

回答№1は6

この記事をご覧ください。シリアルポートでオーバーラップI / Oを使用する方法については、次のとおりです。

シリアル通信