C#做上位机,接收到的数据边存边显示,数据共享问题怎么解决
C#做上位机,TCP/IP通信,需要接收多块单片机传来的数据,存储数据并显示数据。中间涉及到数据共享的问题,比如接受到的数据一边存、一边显示。如何解决数据共享问题?有好的...
C#做上位机,TCP/IP通信,需要接收多块单片机传来的数据,存储数据并显示数据。中间涉及到数据共享的问题,比如接受到的数据一边存、一边显示。如何解决数据共享问题?
有好的思路吗?
可以加、很多分!!! 展开
有好的思路吗?
可以加、很多分!!! 展开
4个回答
展开全部
像你这种情况,直接定义一个静态的公共数据类就可以了。
单片机通讯可以配置不同的端口,上位机老老实实的每个端口开一个TcpListener。
也可以使用同一个端口,每个下位机自报编号。总之,它们的数据应该区分开。
收数据的进程收到数据后扔进公共类就不用管了。
显示进程用定时器控制,定时检查一下公共数据类,有数据了就显示并删除。
大概如此,难度不大,力气活儿。
单片机通讯可以配置不同的端口,上位机老老实实的每个端口开一个TcpListener。
也可以使用同一个端口,每个下位机自报编号。总之,它们的数据应该区分开。
收数据的进程收到数据后扔进公共类就不用管了。
显示进程用定时器控制,定时检查一下公共数据类,有数据了就显示并删除。
大概如此,难度不大,力气活儿。
更多追问追答
追问
我现在是收到数据后定时去清除。怎么样在清除前把数据调走。如果是定时去检查,那么中间有可能会丢数据,就是还没检查就被清除了,这种情况怎么解决呢
追答
我上面那段话的核心是:要建立一个静态的公关数据类,用来当做数据缓冲池。
收到数据就扔池子里、池子里有数据就进行处理、处理完就把已处理的部分清掉,就这三步。
展开全部
应该是数据同步的问题吧
两种方法解决:
1.用异步回调来显示数据
2.用多线程加锁来同步数据的读写。
一般来说关于I/O处理的相关情况用第一种方法比较好
两种方法解决:
1.用异步回调来显示数据
2.用多线程加锁来同步数据的读写。
一般来说关于I/O处理的相关情况用第一种方法比较好
追问
我用的是在窗体A中多线程接受并存储。显示的话是在另一个窗体B中完成的。B窗体调用A中的数据。因为是实时数据,数据很多。在B中用定时器定时调用A中的数据,这样造成A、B数据有可能不同步。 有办法解决窗体间数据传递的好方法吗?
另外您说的第一种方法异步回调有没有简单的例子?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得A接收数据后存储,不用管B,B窗口定时刷新,从你当期最后显示的数据的时间往后取,显示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人拙见:放队列中吧;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询