シリアル ポート経由で Windows PC と通信するマイクロコントローラーを取得しようとしています。
Windows が COM1 の入力をバッファリングしているように見えます。実行中の両方のプログラムを停止してから、Windows プログラムのみを再起動すると、マイクロコントローラのプログラムの前回の実行からの出力がまだ受信されます。
COM1 を開いた後、読み取りを開始する前に受信バッファをフラッシュする方法はありますか? それを行うための関数呼び出しはありますか?
シリアル ポート経由で Windows PC と通信するマイクロコントローラーを取得しようとしています。
Windows が COM1 の入力をバッファリングしているように見えます。実行中の両方のプログラムを停止してから、Windows プログラムのみを再起動すると、マイクロコントローラのプログラムの前回の実行からの出力がまだ受信されます。
COM1 を開いた後、読み取りを開始する前に受信バッファをフラッシュする方法はありますか? それを行うための関数呼び出しはありますか?
あなたが探している関数はPurgeCommであると思います。これには、ポートを開いたときに CreateFile() から取得した HANDLE を渡します。よくわかりませんが、シリアルポートを開くたびに自動的にフラッシュされると思います。
ただし、意味のあるものに遭遇するまで ReadFile (または ReadFileEx) を使用することをお勧めします。シリアル プロトコルは常に、まさにこの目的のために 1 つまたは複数の同期バイトを使用して設計されています。端末プログラムなどを作成している場合を除き、Windows PC がマイクロコントローラーと同期しないため、とにかくこのようにする必要があります。