日期:2014-05-17  浏览次数:20929 次

串口数据接收事件如何控制窗体控件
我在窗体上直接添加了一个串口对象。
需要实时的将串口返回的数据显示在窗体的一个文本框中。

有两个方案:
A、在窗体中添加一个时钟控件,在控件事件中读取串口返回数据并显示在文本框中。
优点:功能可以实现。
缺点:窗体上的其他控件在时钟控件事件循环时,将失去响应。如按钮的点击事件。
B、使用串口数据返回事件,在事件中操作文本框。
优点:理论上可以减少操作串口的次数。
缺点:实际上因为串口数据返回事件是在另外的线程上运行,无法控制主线程创建的控件。

听说可以用BackgroundWorder类解决方案B的问题,但我一直没有弄出来。

谁能给个代码参考下。
即在串口数据返回事件中,可以实现调用窗体上文本框的AppendText方法。
串口通讯 异步 跨线程通信

------解决方案--------------------
针对你第二种方案两种方法
1.在你窗口构造函数里加上这一句
Control.CheckForIllegalCrossThreadCalls = false;
可以跨线程操作空间
2.this.Invoke
------解决方案--------------------
引用:
针对你第二种方案两种方法
1.在你窗口构造函数里加上这一句
Control.CheckForIllegalCrossThreadCalls = false;
可以跨线程操作空间
2.this.Invoke

+1
推荐Invoke