如何解决一分钟内的大量的数据的实时采集

发布网友

我来回答

2个回答

热心网友

没见过你所说的程序,这样的描述没法提供准确的建议。
一般大量数据的处理,应该写在线程里,通常不会和采集线程放在一起,应该新开线程。
如果数据处理后是为了显示,那么显示应该是在OnDraw/OnPaint里面,这里最好使用内存DC做缓冲;如果是直接给控件,那么通常可以线程中直接发送给控件,也可以在定时器里面获取数据发送给控件。
这里要看处理数据的耗时了,如果耗时不多,那么直接在定时器中定时处理和发送就可以了(比如在OnInitDialog里面SetTimer(1,1000); 在OnTimer里面处理即可)

热心网友

问题太笼统了。一般来说一个完整的实时监控系统会包括这么几部分:

1、数据采集,通过各种接口获取各个设备的运行参数或者状态

2、数据展示,通过监控界面向管理人员呈现各个设备的运行状态

3、数据存储,把采样数据保存到存储系统,以备后查

我不清楚你是在采集上遇到问题还是后续处理上遇到问题。我把各个部分大概说一下吧

采集模块,专门负责数据采集,它通过网络接口或者comm接口从各个设备获取实时数据。大型系统中通常会在多台工控机上部署多个采集模块,以提高采集频率。

采集的数据需要呈现给用户看,如果采集模块直接把数据发送到客户端,则程序耦合度太高,一般情况下,采集模块会首先把采集到的实时数据写入实时数据库(RTDB),然后展示模块从RTDB获取各个点位的实时数据。开源的RTDB可以看下 spdata-rtdb

至于历史数据存储,关系数据库是无法胜任的。主流的RTDB自带了历史数据存储功能,但是那些RTDB通常很贵,一般得上百万一套。也可以选择TSDB(时序数据库)来存储历史数据。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com