ポートからバイトを読み取るために、C# で .Net SerialPort クラスを使用しています。DataReceived イベントを受信したら、シリアル ポートをチェックして、読み取り可能なバイトがあるかどうかを確認します。ただし、バイトが使用可能な場合でも、ポートが 1 バイトを読み取るのに 0.5 秒以上かかる場合があります。コードはおおよそ次のとおりです。
...
while(Port.BytesToRead > 0)
{
StopWatch.Restart();
Int32 BytesRead = Port.Read(Read, 0, 1);
StopWatch.Stop();
if (StopWatch.ElapsedMilliseconds > 100)
{
// Record the time. The stopwatch code
// was only added after performance issues were observed.
}
}
私が測定した時間は、すべてのバイトを読み取る時間ではなく、1 バイトを読み取る時間であることに注意してください。頻繁に DataReceived イベントを受け取り、最初のバイトが読み取られるまで 0.5 秒待たなければなりません。
ポートの ReadTimeout プロパティを小さい値に設定して無期限に放置しないように実際に試してみましたが、このプロパティは無視されているようです。
どんな助けでも大歓迎です。