一、项目背景

我们是传统行业,但是我们有一颗不传统的心。企业用户遍布国内和国外,面对行业,要建设行业级的(大)数据平台。一提到大数据平台,大家往往想到Hadoop、Spark、Nosql、分布式等等,我只能说我们还比较低级,但是后期肯定会涉及到这些技术。做大数据平台是有风险的,抛开绝技术方面,应该从四个方面来考虑这个问题:企业思维的转变、是否解决实际问题、是否落地可实施、是否有增值效应。

不转变思维,企业不死,个人死。为什么呢?战略定力差,推进动力不足,随时面临PASS的风险。

不能解决实际问题,那只是空中楼阁,创造不了实际的价值,变现也很困难,忽悠人是不能长久的。

不能落地可实施,要么是团体不行,要么是技术不行,总之还是团队不行,带头人不一定什么都懂,但是要有绝对的推进能力。

不能有增值效应,最终最不到钱,这是任何人都不愿意看到的情况。再美的女人,不能生孩子,你也要多顾虑一些。所以我大学同学找对象的第一原则,就是能生孩子。

二、数据情况

全国大概有238个站点,不包括国外。每个站点大概有2000个传感器,5分钟上传一次数据,相当于1秒钟要传7个点的传感器。在大数据平台再进行数据的深度分析,帮助生产企业改进生产工艺,以及安全防范。

三、通讯协议

通讯协议主要从指令要求、传输流程、通讯层级、应答模式、重发机制、超时界定、数据完整性、通讯效率、代码和字典定义等,进行综合考虑,有些是用技术实现的,有些是用协议保障的……。

通讯协议命令包如下:

四、缓存机制

避免频繁的操作数据库,在上传数据端和接收数据端进行了缓冲设计,作为临时数据的存储,当然这些临时数据也可以保存在Hadoop上,前期没有打算这样做。

客户端缓存结构图:

服务端缓存结构图:

五、通讯层面的框架

服务端使用的是SeverSuperIO(SSIO),并没有使用其他的框架。一是考虑到不同协议的接入,二是方便对站点的通讯状态、IO状态,以及站点进行管理。客户端就是自己写的控制台程序。

六、问题及解决

(1)    第一天客户端与服务端进行测试的时候,第二天发现客户端直接崩了,提示:OutOfMemoryException。经排查,再测试至今还没有出现问题。可能是因为线程并且对数据操作引起的。

(2)    测试过程中,发现接收到的数据开头和结尾都对,但是就是解析数据包为空。这个问题是因为CRC16校验与结尾字节数据组重复了,SeverSuperIO(SSIO)在过滤数据的时候,少了两个字节。后来把CRC16校验改成了校验和。

七、测试效果

测试12小时,如下图:


开源物联网框架ServerSuperIO(SSIO),项目中实践应用介绍的更多相关文章

  1. 开源物联网框架ServerSuperIO 3.0正式发布(C#),跨平台:Win&Win10 Iot&Ubuntu&Ubuntu Mate,一套设备驱动跨平台挂载,附:开发套件和教程。

    3.0版本主要更新内容: 1.增加跨平台能力:Win&Win10 Iot&Ubuntu&Ubuntu Mate 2.统一设备驱动接口:可以一套设备驱动,跨平台挂载运行,降低人力 ...

  2. 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  3. 《连载 | 物联网框架ServerSuperIO教程》- 10.持续传输大块数据流的两种方式(如:文件)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  4. 《连载 | 物联网框架ServerSuperIO教程》- 18.集成OPC Client,及使用步骤

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  5. 《物联网框架ServerSuperIO教程》-19.设备驱动和OPC Client支持mysql、oracle、sqlite、sqlserver的持久化。v3.6.4版本发布

    19.设备驱动和OPC Client支持mysql.oracle.sqlite.sqlserver的持久化 19.1     概述 ServerSuperIO支持设备驱动和OPC Client采集的数 ...

  6. 《物联网框架ServerSuperIO教程》-21.终端控制传感器或设备,形成回路控制。附:demo源代码

    21.1     概述 ServerSuperIO以前所做的工作逐步为形成回路控制或级联控制打下基础,例如:服务连接器和设备驱动连接器的开发与应用.总之,是通过多种形式下发命令控制设备(驱动)或传感器 ...

  7. 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  8. 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  9. 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

随机推荐

  1. JAVA设计模式之模板模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...

  2. chattr用法

    [root@localhost tmp]# umask 0022 一.chattr用法 1.创建空文件attrtest,然后删除,提示无法删除,因为有隐藏文件 [root@localhost tmp] ...

  3. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  4. swift 可选类型(optional)--- swift 入门

    一.思维导图 二.代码 //这样无形中就会让代码很丑陋 if x != nil && y != nil { print("x或y都不等于空") } print(&q ...

  5. java中判断字符串是否为只包含数字

    1.用Java自带的函数 public static boolean isNumeric(String str){ for(int i=str.length();--i>=0;){ if (!C ...

  6. android内部培训视频_第四节(1)_异步网络操作

    第四节(1):异步网络操作  一.结合asyncTask下载网络图片 1.定义下载类,继承自asyncTask,参数分别为:String(url地址),Integer(刻度,本例没有用到),BitMa ...

  7. Struts2+Spring+Hibernate框架整合总结详细教程

    一.SSH三大框架知识总结 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...

  8. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

  9. 基于Caffe的DeepID2实现(下)

    小喵的唠叨话:这次的博客,真心累伤了小喵的心.但考虑到知识需要巩固和分享,小喵决定这次把剩下的内容都写完. 小喵的博客:http://www.miaoerduo.com 博客原文: http://ww ...

  10. JSON.parse 与 eval() 对于解析json的问题

    1.eval()与JSOn.parse的不同 eval() var c = 1; //全局变量 var jsonstr1 = '{"name":"a",&quo ...