[英]Serial Data Not Transmitted in C# Application
我有一個C#應用程序,其中串行(COM1)數據有時似乎無法傳輸。 以下是我的代碼的簡化片段(已刪除對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#2008 Express Edition。 謝謝。
刪除這些try / catch塊。 這應該使您有機會看到得到的TimeoutException,因為您將WriteTimeout值設置得太低。 以9600波特發送516字節需要538毫秒。
您的其他設置也是麻煩的秘訣。 擺脫ReceivedBytesThreshold和DiscardNull。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.