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

seanbei 2016-02-16 10:45:43
用的串口接收事件来接收消息:
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窗口的文本框里面,不知道大家有什么妙招

}
...全文
475 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LaiLai_Fido 2018-12-20
  • 打赏
  • 举报
回复
引用 3 楼 qbilbo 的回复:
不要Sleep。 收到数据后先判断一下数据的完整性,如果不完整,那就把数据留着,等下次的来的合在一起再判断,如果完整那就显示。和TCP里处理粘包的方法差不多。 输出时,如果显示的速度根不上数据接收的速度,那就定时刷新;如果跟得上,那就收到数据后用Invoke或BeginInvokl显示。
有没有代码可以展示一下,如何判断收到数据的完整性?因为使用DataReceived事件,有数据就触发,很有可能数据不完整。
cs1438250 2016-02-18
  • 打赏
  • 举报
回复
c#写的串口调试助手,代码有很多。下一份,自学一下。
exception92 2016-02-17
  • 打赏
  • 举报
回复
由于接受数据 速度较快,一般将数据存放到 队列中进行处理。
qbilbo 2016-02-17
  • 打赏
  • 举报
回复
不要Sleep。 收到数据后先判断一下数据的完整性,如果不完整,那就把数据留着,等下次的来的合在一起再判断,如果完整那就显示。和TCP里处理粘包的方法差不多。 输出时,如果显示的速度根不上数据接收的速度,那就定时刷新;如果跟得上,那就收到数据后用Invoke或BeginInvokl显示。
Justin-Liu 2016-02-17
  • 打赏
  • 举报
回复
数据都有了,对窗体上的控件属性直接复制呗
wizzly 2016-02-16
  • 打赏
  • 举报
回复
定义一个委托,一个方法,用Invoke调用方法,传递参数,我电脑里有代码,手机回复,不方便敲

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧