How to display the data read in DataReceived event handler of serialport

后端 未结 3 616
一个人的身影
一个人的身影 2020-12-05 08:42

I have the following code which needs the data to be read from port and then display in a textbox. I am using DataReceived event handler for this purpose but donot know how

3条回答
  •  情深已故
    2020-12-05 09:45

    The MSDN contains a good article with examples about using control methods and properties from other threads.

    In short, what you need is a delegate method that sets the Text property of your text box with a given string. You then call that delegate from within your mySerialPort_DataReceived handler via the TextBox.Invoke() method. Something like this:

    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 mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
       SerialPort sp = (SerialPort)sender;
       string s= sp.ReadExisting();
    
       textbox1.Invoke(this.myDelegate, new Object[] {s});       
    }
    

提交回复
热议问题