由于串行端口接收和多线程,C#形式串口需要解决方案

时间:2013-12-03 12:39:51

标签: c# multithreading forms serial-port

我实际上已经被困在这个小小的应用程序中了。

它实际上是指从硬件读取1Hz速率的串行端口数据,并在主窗体的两个图形和数据gridview上更新它。第一个表单实际上会自动检测您的串行端口,等待您单击下一步并继续执行该应用程序。如果它无法检测到您的串口,则会抛出错误。

到达主表单后,您必须按开始按钮才能启动串口接收。硬件实际上每隔一秒发送一个三位数字,格式为“100 \ n 200 \ n 300 \ n ....”。每次新数据进入时,上面选项卡上的两个图表和Datagridview都会更新。

因为,一秒间隔太短,无法更新两个图,更新datagridview,比较输入值和某些警报设置等,应用程序是多线程的。图形更新方法被拆分为一个单独的线程,甚至串行端口数据接收也由data_received事件处理,该事件默认情况下也是一个单独的线程。

但是,问题在于,应用程序在调试模式下运行良好。但是,当我在发布后运行它时,串行数据接收仅在一些随机时间间隔后挂起。我认为这是由于一些数据误解或多线程时间限制问题等。如果有人能弄明白问题是什么,我会非常感激。

我已经添加了我的源代码。您也可以随意使用它。如果应用程序在visual studio上显示错误。请在调试或发布文件夹中将Zedgraph.dll包含在表单控件中。

Click here for entire Application in zip file

提前致谢!

0 个答案:

没有答案