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

  1. 需求:

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

  2. 分析:

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

  3. 设计:

    共享内存

    把每一种类型的仪表数据设计成一个结构体,然后每一个仪表,一个唯一标识,设定一个统一的规则生成唯一标识的方式。每一个唯一标识对应一个偏移长度,当需要读写内存里,可以通过唯一标识访问数据。

122517_7m4v_198124.png

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

    数据采集

    对于数据采集,一般都是有采集命令,数据采集作为主站发送采集命令,仪表、仪器作为从站返回数据,很有典型的代表就是modbus协议,

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

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

125948_tZvQ_198124.png



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

转载于:https://my.oschina.net/u/198124/blog/200112

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值