C# - 串口侦听 - 如何将数据打印到textBox中

时间:2017-09-26 15:36:18

标签: c# serial-port

我想用GUI创建串口侦听器。 我试图将收到的数据打印到textBox。当我点击按钮程序必须开始收听时,一切正常但不能打印到textBox。 这是EventHandler代码:

void serialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
            textBox1.AppendText(indata + "\r\n");
        }

开始收听的按钮代码:

mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();

需要一些帮助:)

1 个答案:

答案 0 :(得分:1)

您可以按如下方式使用RichTextBox

第一个选项

RichTextBox1.Text += sp.ReadExisting() + "\n";

第二个选项 - 第二个选项使用委托,您可以说,方法的签名:

public delegate void AddDataDelegate(String myString);
public AddDataDelegate myDelegate;

private void Form1_Load(object sender, EventArgs e)
{
    this.myDelegate = new AddDataDelegate(AddDataMethod);
}

public void AddDataMethod(String myString)
{
    TextBox1.AppendText(myString);
}

private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
   SerialPort sp = (SerialPort)sender;
   string s= sp.ReadExisting();

   TextBox1.Invoke(this.myDelegate, new Object[] {s});       
}