C#编写上位机程序如何建立数据缓存,将接收到的数据暂存,然后有专门的线程进行数据处理

如题所述

常用的那些端口 都是自带缓存的 不行的话你就自己开个数组 循环队列啥的不都行追问

还有写别的方法?串口自带缓存?可以具体点吗?

追答

串口芯片自带缓冲区的~只要你跟着收到信息的中断去取值 不会溢出的
专门的线程处理数据要注意加线程锁~

追问

我要储存多次数据,处理线程进行存库、显示、绘图,这时候这些数据怎么缓存呢?

追答

你这些操作不矛盾啊~
简单点的在接收中断的响应函数里面 一项一项来不就行了
开多线程 一般是前台显示,后台要传输大量的数据时候才会用到的
串口的传输的东西没有那么大的信息量 随时来随时处理就行了
开多线程起始只是对人来说体验会好一点。CPU需要额外的时间去切换任务,效率反而降低了

追问

全部在接收中断中?那怎么行啊?要连续不断的采集数据的,不是说这一组处理完了再获取下一组数据,是定时采集的

追答

在你两次采集数据的间隔足够完成你所写的这些操作了~

追问

要是不可以呢?我问的是不可以的情况下缓存方法啊

追答

不可以的话你就做一个循环链表 或者 数组带辅助标记的(记录那些数据已经读过了可以覆盖)
然后循环往里面传值就行了 或者直接用队列也行
不过感觉C# 上面封装起来的东西效率都比较低

温馨提示:内容为网友见解,仅供参考
无其他回答

C#编写上位机程序如何建立数据缓存,将接收到的数据暂存,然后有专门的...
常用的那些端口 都是自带缓存的 不行的话你就自己开个数组 循环队列啥的不都行

用C#怎样实时把上位机接收到的数据存入access数据库,要用哪些控件?怎样...
把收到的数据存入ACCESS数据库,只要掌握ACCESS数据的库的操作就可以了。通讯控件可以就C#的serialport或第三方控件(mscomm)等。存取数据,可以读取N个点后,再存库,也可以读一个点保存一次。取决于每个温度点时间间隔以及用户需求等。

使用C# serialport类,用委托进行串口数据接收,接收时需要数据处理和绘图...
2、serialport有数据到达时的触发事件,不需要你去定时接收数据,头部判断这个你已经弄错了,一般的方法是上位机收到数据触发时,将收到的数据放入一个缓冲区(可以是List<byte>也可以是Queue<byte>或者string也行),这个就是生产者。3、在独立的消费者线程里,从缓冲区头上开始检查是否有指定起始和和...

C#编写一个联锁的上位机界面
\/\/ 后台处理程序 public class GoodsImgUpload extends HttpServlet { Override protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { \/\/通过URL访问时到404页面去 response.sendRedirect(request.getContextPath() + "\/404.html");} ...

c# 编写上位机程序,需要实时保存底层传送的数据,全部数据共20度兆,大神...
建议保存到数据库,用SQL SERVER Compact Edition(SQL CE)或Access都可以。数据库特别适合时序参量的保存。

C#作上位机接收界面,解析数据帧的好方法。
如果格式是这样固定的 ,大概你需要这样一个正则:string str = "$Para,1,2,3*h";Match m = Regex.Match(str, @"\\$Para,(.*),(.*),(.*)\\*h");if (m.Success) {Console.WriteLine("{0} {1} {2}",m.Result("$1"),m.Result("$2"),m.Result("$3"));} ...

...设备需要从串口接收一段数据,多线程开发,不用timer计时器。_百度...
直接用线程做一个串口监听就行了,一般串口的读数据是不用timer控件的,也不会写到主线程里面。单独用创建一个线程,自定义一个串口就行了。

C#实现的多线程异步数据包接收器框架
数据包接收服务器) 系统的核心进程类 建立Socket连接 处理与存储数据包 清理系统资源 该类提供全部的public属性和方法 TSession(客户端会话) 由每个客户端的Socket对象组成 有自己的数据缓冲区 清理线程根据该对象的最近会话时间判断是否超时 TDatagram(数据包类) 判断数据包类别 解析数据包 ...

c# winform监听本机指定端口,并将收到数据存到txt.
这个应该是广播,前提条件有两个1、你的ip地址是公网固定的 或者你曾经用这个端口向目标服务器或者端口发送过连接,然后服务器或者其他机器才能对你进行广播 2本机有监听线程实时扫描固定端口

C#,如何实现子线程一直监听数据、父线程定时从全局变量取数据?
当子线程收到消息之后, 建立一份数据的拷贝 然后清楚buffer 向父线程通过事件推送此数据 父线程订阅该事件,拿到推送过来的数据直接处理 这样做的好处比你那个来讲,不需要考虑线程同步的问题 使用的推模式 而不是拉模式(轮询模式)如果不会写的话,可以留言,我可以帮你写一个。

相似回答