zoukankan      html  css  js  c++  java
  • 采集器Server

        公司搞工业的,面对不同的工业通讯数据协议,需要一个采集器(like ge.Collector)收集不同协议的数据,并将之数据使用指定格式上传到数据接收服务器,且本地做http发布服务。

    设计

        不同的工业采集2次开发模块可能会不同,有的是事件通知,有的是需要自己去要;因此需要一种通用的模式 —— 时序扫描模式。为了快速查找,因此我们从Dictionary派生一个CollectService,定义如下:

         

    类似游戏中tick一样,通过容器式的自顶向下的扫描,嗯可以看到sender在这里,所有的数据都一样嘛一个管线发送就行了,好,现在看看定义的通用采集器:

    为什么用hashtable了?数据源类型不一,要类型格式化的话哪的去配置类型了。还有一个好处就是快,更何况经常需要就是用名字查找呢。

    好了,将他扔进ServiceHost派生出来的HttpServer吧。

    创建个项目,引用该项目写个OPC实现,once more 在来个modbus;

    好了,搞定!

    其余的就见代码吧:http://yunpan.cn/cwUbz8BggI4aD  访问密码 8d70

    蛋疼的一些事

    开始时,没有巨合适的http server;大概找到一个什么嵌入式http server,看似ok,一用起来就惨不忍睹,先是长度问题,然后tcp连接中微软本身的一个bug,到底都很迅速搞定;那边接口非要他娘的rest,mvc router倒是巨容易,rest的参数在中间,没得办法慢就慢点吧,没法hash了,动态算找。后来出来了一些不错的微型http server,再然后wcf有这么个东西,巨爽快—— 用同事的话说,分分钟搞定!

    OPC性能问题,搞了个叫什么Auto OPC的dll,开始用的其事件驱动模式 —— 竟然数据不能OK;还好可以用读取的方式,试了好一阵参数还好搞定。

      关于扫描。有的人总认为扫描的方式似乎很慢,而且不适应,喜欢事件通知。其实本质上,可以说没有区别。举个例子,一个是游戏,其实一秒钟扫描几次都都足以让键盘狂按者跟不上节奏,一秒钟在键盘上点出3次以上的douwn and up不是很容易,再回溯一下键盘,比较早的键盘就是串口的,是主机来问询的,就跟游戏这个类似,都知道硬件发展了,后来通过中断提高了响应,我们试想一下,中断又是如何来发生呢 —— 其实无非是将扫描的工作让键盘内部的芯片独立去解决了,还是扫描。——毕竟计算机本身就是基于时序(时钟,晶体整荡)。

  • 相关阅读:
    zindex在IE中的迷惑(一)
    IE “+” CSS Hack研究
    display:inlineblock的深入理解
    CSS解决未知高度垂直居中
    zindex在IE中的迷惑(二)
    三角的一个特殊做法
    图片垂直居中的使用技巧
    简单form标准化实例(一):整体布局
    简单form标准化实例(二):语义结构
    CSS定义通用透明效果
  • 原文地址:https://www.cnblogs.com/huapiaoshuiliuxi/p/4561263.html
Copyright © 2011-2022 走看看