Windows 创建共享内存 索引查找更新

  1. 需求:数据库

    电力监控行业,常须要对一些仪表\仪器进行数据采集和远程控制,采集数据的方式经常使用串口、以太网,通常状况下使用MOBUS RTU TCP/IP。仪表、仪器数据内容不一样。通常状况下都会使用组态软件来开发,可是对一些公司来讲,没有必要使用一个大的平台,并且在价格方面也不低。并且不易控制。网络

  2. 分析:spa

    把采集数据单独进程,设计成通用的数据采集,经过共享内存来实现进程间数据交互设计

  3. 设计:排序

    共享内存队列

    把每一种类型的仪表数据设计成一个结构体,而后每个仪表,一个惟一标识,设定一个统一的规则生成惟一标识的方式。每个惟一标识对应一个偏移长度,当须要读写内存里,能够经过惟一标识访问数据。进程

其实这样就实现一个简单内存关系数据库,在后台更新数据和网络这种比较耗时的操做作成一个通用模块,而又不影响人机交互界面的设计,这样子就相对独立。UI进程与后台数据采集进程共同使用惟一标识生成规则,则能够方便的读数据用于数据分析。内存

    数据采集开发

    对于数据采集,通常都是有采集命令,数据采集做为主站发送采集命令,仪表、仪器做为从站返回数据,颇有典型的表明就是modbus协议,数据分析

 后台数据采集 生成过程: 读取用户配置文件(获得仪表仪器)-->按规则排序-->生成采集命令队列,依次发送命令采集数据。其中有一些控制命令,如远程序操做仪表。就有了两种命令,一种采集命令,一种控制命令。控制命令是在用户使用时发生,而采集命令是一个周期性的命令,须要重复的执行。

 后台数据采集就有一个队列控制。



    经过这样的一个设计后,当用户进行远程控制时,能及时的响应用户的操做,从而又不理采集数据总体结构,添加命令须要用到多进程间的通讯。

相关文章
相关标签/搜索