当前位置:编程学习 > C#/ASP.NET >>

C#如何用线程处理大量节点的串口数据

大家好,领导要用C#编写一个ZigBee无线网络环境监测系统 --串口编程。
这个网络最多有64个节点,还有一个协调器,节点的数据都传到协调器,协调器通过串口与计算机相连,把数据发过来。系统要求能实时显示每个节点的强度数据,还要画图。
我没弄过C#,不明白该怎么设计这个系统。下面是我的思路,麻烦大家看看合不合理:
线程A专门用来接收串口数据,检查数据合法性,如果数据完整,即传给另外一个线程B,线程B专门用来解析数据,存入数据库,然后把该数据发给相应的节点线程1~64

问题在于,节点列表在左边,领导希望点击某个节点,则在右边有相应的tab出现,然后就开始显示该节点的数据。
我是不是要预先定义64个tabPage,而且每个tabPage都有自己的backgroundWork来处理数据并且更新UI?还是没有打开的tabPage就没有backgroundWork? 还是所有的tabPage共用一个backgroundWork来更新所有UI呢?

麻烦大家不吝赐教,非常感激 --------------------编程问答-------------------- 定义64个tabpage,简单.
一个串口用2到3个线程就行
共用一个backgroundWork来更新UI.
--------------------编程问答-------------------- 因为你所有的tabPage的处理方式都是相同的,所以没有必要开启那么多线程。
定义一个节点类,这个类和tabPage的布局相关,你可以实例化64个对象,更换节点时更换和tabPage关联的对象。
最好也别用64个节点线程,节点类只负责存放和组织数据就可以了。 --------------------编程问答--------------------
引用 2 楼  的回复:
因为你所有的tabPage的处理方式都是相同的,所以没有必要开启那么多线程。
定义一个节点类,这个类和tabPage的布局相关,你可以实例化64个对象,更换节点时更换和tabPage关联的对象。
最好也别用64个节点线程,节点类只负责存放和组织数据就可以了。


我现在的作法是定义一个tabPage类,这个类里面包括了布局和backgroudWork,点击节点则生成该tabPage的对象(该对象我缓存了,需要吗?),这样子同时也生成了一个backgroundWork线程,该线程更新该tabPage上的UI。
因为缓存,所以表面关掉tab,实际上后台还在。所以最多时候有该tabPage的64个对象,每个对象又有一个backgroundWork。

我不知道这样子会不会有很大的性能影响,是不是关掉tab时候就把该tabPage对象销毁掉?
--------------------编程问答--------------------
引用 1 楼  的回复:
定义64个tabpage,简单.
一个串口用2到3个线程就行
共用一个backgroundWork来更新UI.


那这样子的话,backgroundWork线程是不属于tabPage的。
一个backgroundWork同时更新最多64个tabPage对象,效率上会不会很差,实时效果不好?
还是backgroundWork只更新活动的tabPage呢?这个又怎么做到当新的tabPage打开时,backgroundWork知道应该更新这个新开的tab,而关掉原来的tab呢?还是需要同时更新所有tabPage呢? --------------------编程问答--------------------
引用 3 楼  的回复:
引用 2 楼  的回复:

因为你所有的tabPage的处理方式都是相同的,所以没有必要开启那么多线程。
定义一个节点类,这个类和tabPage的布局相关,你可以实例化64个对象,更换节点时更换和tabPage关联的对象。
最好也别用64个节点线程,节点类只负责存放和组织数据就可以了。


我现在的作法是定义一个tabPage类,这个类里面包括了布局和backgroudWork,点……


还有一个问题,就是我那些串口处理线程backgroundWork怎么通知tabPage里面的backgroundWork说有数据要显示呢?
我是想在主窗口里面起一个线程来监听串口的,然后由另外一个线程分发不同节点的消息传给不同的tabPage进行更新UI的,但是我还是不知道主窗口数据分发线程怎么来通知tabPage实例里的线程的 --------------------编程问答-------------------- 学习了,正在弄C#读取数据。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,