文档章节

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

一一无念
 一一无念
发布于 2014/02/16 12:35
字数 654
阅读 415
收藏 1
  1. 需求:

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

  2. 分析:

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

  3. 设计:

    共享内存

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

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

    数据采集

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

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

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



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

© 著作权归作者所有

一一无念
粉丝 58
博文 36
码字总数 18408
作品 0
长沙
私信 提问
求Tree的Cache数据结构设计思路

背景: 数据示例:中国行政区树形结构,一直到街道(乡村) 使用MySQL作为存储,字段如下: 为减少对数据库的请求量,需要将这些数据存储在Cache中,比如Redis、Memcache等。 大家可以忽略l...

会员
2014/12/18
524
5
求近似最近邻的库 - Annoy

Annoy 是 Spotify 开源的高维空间求近似最近邻的库,在 Spotify 使用它进行音乐推荐。最邻近搜索(Nearest Neighbor Search, NNS)又称为“最近点搜索”(Closest point search),是一个在尺...

匿名
10/12
157
0
MySQL索引,如何正确创建MySQL索引,如何判断是否需要创建索引

索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大...

ChyiHuang
2018/11/05
15
0
python学习日志

python中if name == 'main': 的解析 当你打开一个.py文件时,经常会在代码的最下面看到if name == 'main':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 name。一...

bobwei
2016/07/05
75
0
什么情况下需要创建MySQL索引

索引可以提高数据的检索效率,也可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。排序分组操作主要消耗的就是CPU资源和内存,所以能够在排序分组操作中好好的利用索引将会极大...

qimh
2018/05/22
21
0

没有更多内容

加载失败,请刷新页面

加载更多

【TencentOS tiny】深度源码分析(4)——消息队列

消息队列 在前一篇文章中【TencentOS tiny学习】源码分析(3)——队列 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息...

杰杰1号
33分钟前
6
0
Hive

这就是那个 JAVA 类 package cn.itcast.bigdata;import java.util.HashMap;import org.apache.hadoop.hive.ql.exec.UDF;public class PhoneNbrToArea extends UDF{privat......

Garphy
33分钟前
7
0
Springboot开发,第二天

SpringBoot学习,第二天 目录:1、Springboot整合Listener 2、Springboot访问静态资源 3、异常处理 4、热部署 一、SpringBoot整合Listener 两种方式完成组件的注册 1、通过注解扫描完成组件的...

有一个小阿飞
36分钟前
7
0
BeginnersBook Perl 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
49分钟前
5
0
我的Java秋招面经大合集

阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 然后我...

Java技术江湖
54分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部