簡體   English   中英

C#應用程序中未傳輸串行數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM