4

シリアル ポートへの読み取り/書き込みの概念実証をまとめようとしていますが、設計/概念に問題があります。ポーリングしたくないので、オーバーラップ 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 の例はちょっと不十分です ( Monitoring Communications Events )。現在 2 つのイベントを使用していますが、ReadFileステップが で失敗していERROR_INVALID_PARAMETERます。

上記の手順では、重複する構造が 1 つまたは 2 つ必要ですか? 構造体が1 つの場合OVERLAPPED、手順WriteFileは、WaitCommEvent(書き込みの場合)、リセット イベント、WaitCommEvent(読み取りの場合) ReadFile、?

4

1 に答える 1

10

この記事をご覧ください。シリアルポートでオーバーラップI/Oを使用する方法についてさらに詳しく説明しています。

シリアル通信

于 2012-09-19T23:02:34.317 に答える