簡體   English   中英

通過C#接收RS485命令

[英]Receive RS485 Commands via C#

我一直在搜尋,並且沒有找到任何代碼可以幫助我解決這個問題,也許我錯過了一些事情嗎? 我想接收RS485命令。 此刻,我剛剛收到垃圾。 這是我當前的代碼,盡管我認為這不會有所幫助:

//C# CODE
byte[] arr = new byte[serialPort1.BytesToRead];
serialPort1.Read(arr, 0, serialPort1.BytesToRead);
String s = "";
foreach (byte b in arr)
{
     s += b.ToString() + " ";
}
/*String s = serialPort1.ReadByte().ToString();
while (serialPort1.BytesToRead > 0)
{
     s += " " + serialPort1.ReadByte().ToString();
     Thread.Sleep(10);
}*/
//String s = serialPort1.ReadLine().ToString();
richTextBox1.Invoke((MethodInvoker)delegate { richTextBox1.AppendText(s + "\n"); });

這只是看我是否可以接收數據的測試。 有誰知道我如何通過串行端口接收數據並將其顯示在文本框中?

我不確定您的最終目標,但是如果您只是想接收數據並在文本框中顯示它們,則與標准RS232串行通信應該沒有什么不同,應該這樣做。 在此示例中,文本框的名稱為txtOutput。

開始:

  public Form1()
    {
        InitializeComponent();

        serialPort1.PortName=("COM1");
        serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
        serialPort1.Open();
    }

串行端口

  private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

            try
            {
                SetText(serialPort1.ReadLine());

            }

            catch (Exception ex)
            {
                SetText(ex.ToString());
            }

        }

代表:

delegate void SetTextCallback(string text);

附加到文本框:

 private void SetText(string text)
        {
            if (this.txtOutput.InvokeRequired)
            {
             SetTextCallback d = new SetTextCallback(SetText);
             this.BeginInvoke(d, new object[] { text });
            }
            else
            {
                txtOutput.AppendText(text + "\r\n");
            }}

請記住使用波特設置串行端口1,並確保已將串行端口添加到表單中。 我已經使用標准的串行連接測試了代碼,並且可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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