すべてのデータがシリアルポートに送信されるまで待つにはどうすればよいですか
この条件をテストするには、次のコードを想定します。
Console.WriteLine("Baud is:" + SerialPortObj.BaudRate);
Console.WriteLine(DateTime.Now.Millisecond);
string tmpStr="";
for (int i = 0; i < 100; i++)
{
tmpStr += "A";
}
SerialPortObj.Write(tmpStr.ToCharArray(),0,99);
Console.WriteLine(DateTime.Now.Millisecond);
出力例は次のとおりです。
ボーは:300
97
97
そして、.Net がすべての文字が送信されるまで待機していないことを示しています!
以下のコードは機能しません。
Console.WriteLine("Baud is:" + SerialPortObj.BaudRate);
Console.WriteLine(DateTime.Now.Millisecond);
string tmpStr="";
for (int i = 0; i < 100; i++)
{
tmpStr += "A";
}
SerialPortObj.Write(tmpStr.ToCharArray(),0,99);
while (SerialPortObj.BytesToWrite>0)
{
Thread.Sleep(1);
Console.WriteLine(SerialPortObj.BytesToWrite);
};
Console.WriteLine(DateTime.Now.Millisecond);
出力例は次のとおりです。
ボーは:300
97
97
私は、ボーレートの変更に依存する特別なプロトコルに取り組んでおり、次のようなものを使用しています:
->[Send Some Bytes (Baud300)]
<-[Receive Another Bytes (Baud9600)]
だから私は書き込みメソッドでいくつかの文字を送信し、それが終了するまで待ち、終了直後にボーを変更しようとするので、受信したバイトを理解することができました
何か考えはありますか?