シリアル(COM1)データが送信されないことがあるように見えるC#アプリケーションがあります。以下は私のコードの簡略化されたスニペットです(textBox書き込みの呼び出しは削除されました):
InitializeComponent()
{
//
// serialPort1
//
this.serialPort1.BaudRate = 115200;
this.serialPort1.DiscardNull = true;
this.serialPort1.ReadTimeout = 500;
this.serialPort1.ReceivedBytesThreshold = 2;
this.serialPort1.WriteTimeout = 500;
this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
}
if (radioButtonUart9600.Checked)
{
serialPort1.BaudRate = 9600;
try
{
serialPort1.Open();
}
catch (SystemException ex)
{
/* ... */
}
}
try
{
serialPort1.Write("D");
serialPort1.Write(msg, 0, 512);
serialPort1.Write("d");
serialPort1.Write(pCsum, 0, 2);
}
catch (SystemException ex)
{
/* ... */
}
奇妙なことに、ポートが115.2Kbpsに設定されている場合、この同じコードが問題なく機能します。ただし、9600bpsで実行している場合、このコードで送信する必要のあるデータは送信されないようです。リモートデバイスの受信フラグを監視して、これを確認しました。tryステートメント内から例外はスローされません。データが確実に送信されるようにするために他にすべきこと(フラッシュなど)はありますか?あなたが持っているかもしれないどんな考えや提案もいただければ幸いです。Microsoft Visual C#2008ExpressEditionを使用しています。ありがとう。