串口触发接收事件后大家是如何把数据显示到窗体界面的?

时间:2022-03-23 23:02:45
用的串口接收事件来接收消息:
serialport.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);


那么事件一旦被触发,DataReceivedHandler方法被执行,我想问问大家在这个方法里是怎么处理数据的。


        private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(200);
            byte[] buffer=new byte[serialport.BytesToRead];
            serialport.Read(buffer, 0, serialport.BytesToRead);

            //接下来怎么处理buffer?我想把buffer显示在winform窗口的文本框里面,不知道大家有什么妙招

        }

5 个解决方案

#1


定义一个委托,一个方法,用Invoke调用方法,传递参数,我电脑里有代码,手机回复,不方便敲

#2


数据都有了,对窗体上的控件属性直接复制呗

#3


不要Sleep。
收到数据后先判断一下数据的完整性,如果不完整,那就把数据留着,等下次的来的合在一起再判断,如果完整那就显示。和TCP里处理粘包的方法差不多。 
输出时,如果显示的速度根不上数据接收的速度,那就定时刷新;如果跟得上,那就收到数据后用Invoke或BeginInvokl显示。

#4


由于接受数据 速度较快,一般将数据存放到 队列中进行处理。

#5


c#写的串口调试助手,代码有很多。下一份,自学一下。

#1


定义一个委托,一个方法,用Invoke调用方法,传递参数,我电脑里有代码,手机回复,不方便敲

#2


数据都有了,对窗体上的控件属性直接复制呗

#3


不要Sleep。
收到数据后先判断一下数据的完整性,如果不完整,那就把数据留着,等下次的来的合在一起再判断,如果完整那就显示。和TCP里处理粘包的方法差不多。 
输出时,如果显示的速度根不上数据接收的速度,那就定时刷新;如果跟得上,那就收到数据后用Invoke或BeginInvokl显示。

#4


由于接受数据 速度较快,一般将数据存放到 队列中进行处理。

#5


c#写的串口调试助手,代码有很多。下一份,自学一下。