C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
目 录
工业物联网和集成系统解决方案的技术路线... 1
前言... 1
第一章 系统架构... 3
1.1 硬件构架图... 3
1.2 组件构架图... 4
第二章 技术选型与介绍... 5
2.1 开发环境... 5
2.2 数据源... 5
2.3 数据采集... 5
2.4 数据上传服务... 6
2.5 消息中间件... 6
2.6 数据接收服务... 6
2.7 数据存储... 6
2.8 数据接口... 7
2.9 Web业务系统... 7
2.10 手机移动终端App. 7
第三章 Demo的介绍... 8
3.1 目录介绍... 8
3.2 Demo调试... 8
前言
2000年以后,互联网在中国的大地上如火如荼的发展,在这个行业竞争中比的是加速度。我清晰的记得《世界是平的》中有这样一段话:在非洲,羚羊每天早上醒来时,它知道自己必须跑得比最快的狮子还快,否则就会被吃掉;狮子每天早上醒来时,它知道自己必须追上跑得最慢的羚羊,否则就会被饿死;不管你是狮子还是羚羊,当太阳升起时,你最好开始奔跑!我们奔跑的这10多年的时间里,互联网技术带动了各行各来的发展,同时也席卷了各行各来。
2006年时,工业行业还在普遍使用电话线进行数据传输和远程帮助。网络技术慢慢的在向各行各业传导,工业行业也在发展,局域网、光纤以太网、WIFI\3G\4G等已经应用很广泛了。互联网技术在推动制造业发展的同时,也带动了众多公司的与时俱进,升级技术、提供更好的服务。
我们在思考,后互联网时代将如何发展?将是互联网与各行各业深度融合的过程,例如现在常被提及的物联网,我认为它本质上是工业互联网,是制造技术与互联网技术无缝对接。不管是叫物联网还是工业互联网,未来物与物的交互、物与人的交互将无法避免。硬件与软件的协同发展,更快的推动了这个进程,例如:智能芯片的发展、嵌入式操作系统的发展、智能传感器的发展等。
大数据、分布式、云计算等也在以惊人的速度发展,有些人可能认为这些东西离我们生活还比较遥远。但是并非是这样的,距离2006年只不过10年左右,现在的发展却是以前你无法想象的,而这种加速度的发展方式,2年的发展可能是你过去10年的发展之和。不管这些技术现在是否能够落地,但是这种趋势是无法改变的。
数据的流动可以变现,现金的流动可以增加GDP。技术的进步就是生产力的提升,将来组织结构和关系也势必发生变化。不管是否懂技术技术、是否懂管理,思维方式不转变肯定会被淘汰。
下面对物联网和集成系统的解决方案的技术路线进行介绍,只对技术选型和系统流程,对于架构的演变以及技术哪个更好不做具体说明。只供参考!!!
第一章 系统架构
架构图这块主要表达一个大概的结构化的意思,可以不太准确,希望大家能够理解。作为一个系统来讲还包括网络部署框架图,根据应用场景和网络环境不一样网络框架图也不一样,所以不在本文的讨论范围内。
1.1 硬件构架图

1.2 组件构架图

第二章 技术选型与介绍
文章不介绍代码部分,在Demo事例中有完整的代码和注释,可以下载调试。
2.1 开发环境
开发语言:全部使用C#,配有少量的JS代码。
开发工具:除App部分,所有组件都采用VS2012开发,App程序采用VS2015开发,VS2015是一个超级开发工具工厂,在Win10操作系统上开发IoT嵌入式程序,也没有问题。
操作系统:Windows 8.1,用习惯了也不错,听说要停止服务了,不过还有人在使用XP呢,不必担心。
2.2 数据源
数据源也就是产生数据的东西,也有人把这块统称为传感器,但是我认为这个叫法不太准确,所以我一般把这块统称为数据源。
数据源包括的内容很多,例如:各类传感器、大中小型设备、硬件电路、软件组件等。各类数据源的通讯协议不同、通讯链路不同、通讯机制不同,在没有统一标准的情况下,这部分的工作比重要。因为有了数据之后,你的业务系统才有应用的价值。
数据源我是写了一个模块的小程序,包括串口通讯和网口通讯。至于通讯协议,请参见《C#通讯(串口和网络)框架的设计与实现(SuperIO)- 12.二次开发及应用》。
2.3 数据采集
数据采集部分使用的是SuperIO框架,因为它支持串口和网口统一的插件式设备驱动开发,也就是说开发一个驱动可以支持串口和网口通讯。另外,可扩展性比较强,可以大大减小工作量。
开发了一个驱动程序,在SuperIO平台下增加两个驱动实例,负责与数据源程序进行串口和网络通讯。
2.4 数据上传服务
数据上传服务是在SuperIO平台下开发的,可以继承IAppService接口开发插件服务,并且挂载到SuperIO平台下运行,设备驱动采集完数据后,可以通过接口传递到服务插件内,通过内存交互数据。如果涉及到数据完全性的数据交互,可以通过介质进行数据交互,例如:数据库、文本文件等。
数据上传服务直接与消息中间件(ActiveMQ)进行交互,再由AcitveMQ进行消息转发。数据上传服务实际上是消息生产者的角色。
2.5 消息中间件
消息中间件采用ActiveMQ,需要部署Java运行环境。可用的消息中间件比较多,例如:RabbitMQ、ZeroMQ等。
根据应用场景不同,可以选择的技术方案和技术路线也不一样。消息中间件这块也完全可以使用通讯组件来代替,例如:Netty和SuperSocket。
2.6 数据接收服务
数据接收服务是在SuperIO平台下开发的,可以继承IAppService接口开发插件服务,并且挂载到SuperIO平台下运行。
数据接收服务直接与ActiveMQ进行交互,接收ActiveMQ转发过来的消息,实际上是消息消费者的角色。
2.7 数据存储
数据存储采用的是MongoDB,不太喜欢大而臃肿的东西,而且不需要ORM了,部署简单,可以使用MongoVUE工具对数据库进行管理。如果是大拿,可以直接cmd。
2.8 数据接口
数据接口采用Web Api,符合RESTful风格的http协议,操作调用简单、方便。抛弃了WebService的Soap协议,更没有选择WCF框架。
这块并没有实现权限、安全管理。
2.9 Web业务系统
业务系统采用MVC框架,但是前端并没有与后台的控制器进行交互,而是与数据接口的WebAPI进行交互。前后端完全分离。
2.10 手机移动终端App
手机移动端使用VS2015开发,使用Xamarin框架进行开发,这个框架支持跨平台。Xamarin是个很不错的东西,唯一的缺点就是需要付费,对于中国IT人员来讲,这一点应该不是障碍。
第三章 Demo的介绍
3.1 目录介绍
项目目录介绍如下:
ClientService:上传数据与交互组件。
DeviceDemo:设备驱动,负责采集数据。
DeviceExport:数据输出组件,在Demo没有使用。
DeviceShowUI:数据显示视图组件,负责显示采集过来的数据信息。
FormTest:测试各部分的主工程。
ProtocolPackage:公用协议包。
ServerService:数据接收数据与交互组件。
SuperIO_App:移动APP端,需要VS2015打开。
SuperOPCClient:OPC客户端组件。
SuperOPCServer:OPC服务端组件。
TestDevice:模拟客户端测试程序。
WebAPI:WebAPI和Web业务端数据显示。
3.2 Demo调试
下载地址:http://pan.baidu.com/s/1pJ7lZWf
(1) 下载DEMO和工具
下载SuperIO v2.2.7\SuperIO_Demo v2.rar;下载mongodb数据库;下载ActiveMQ消息中间件。
(2) 启动服务和程序
启动mongodb,mongodb-win32-x86_64-2008plus-3.0.3-1\start.bat,默认监听端口为:2222。
启动ActiveMQ服务,apache-activemq-5.12.0\bin\win64\activemq.bat,需要JAVA运行环境。
启动SuperIO_Demo.sln解决方案,需要VS2012开发IDE,也可以转成VS2015工程,重新编译。
启动SuperIO_App.sln解决方案,需要VS2015开发IDE,如果使用VS自带的模拟器,需要执行<adb connect 模拟器的IP>,才能把程序成功部署到模拟器,并且进行调试,否则VS工具一直处于部署阶段。
(3)运行效果图

(4)调试视频
youku视频不是太清楚,请下载高清调试视频,地址:http://pan.baidu.com/s/1pJ7lZWf中的【视频演示】。
作者:唯笑志在
Email:504547114@qq.com
QQ:504547114
.NET开发技术联盟:54256083
文档下载:http://pan.baidu.com/s/1pJ7lZWf
官方网址:http://www.bmpj.net
C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)的更多相关文章
- 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲
[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...
- PDA手持扫描资产标签,盘点完成后将数据上传到PC端,固定资产系统查看盘点结果
固定资产管理系统介绍: 致力于研发条码技术.集成条码系统的专业性公司,针对客户的不同需求,提供一站式的企业条码系统解决方案:包括功能强大的软件系统.安全可靠的无线网络.坚固耐用的硬件系统.灵活易用的管 ...
- MUI 单个图片上传预览(拍照+系统相册):先选择->预览->上传提交
1 html部分 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- gps数据上传防止android系统休眠
最近在做关于android手机端gps定时定位的功能,需要每隔几秒钟将gps定位获取的经纬度上传至后台,但是发现某些手机在屏幕黑屏,进入休眠状态后,后台就没有收到定位信息了,后来通过网上查找资料,发现 ...
- [视频]物联网&集成系统中的物联交互、数据存储、效果展示形成快速解决方案。附:ServerSuperIO 3.6.2 版本发布。
ServerSuperIO v3.6.2版本更新内容: 设备驱动与实时库对接的Tag配置与OPC Client读取数据的配置统一用一个配置文件. 设备驱动继承DeviceDynamic接口的子类支持存 ...
- python+树莓派实现IoT(物联网)数据上传到服务器
环境:raspbian-stretch(2018-06-27) 树莓派:3代B型 1.树莓派设备,需要在野外也能拥有独立联网能力,那必不可少的需要使用物联网模块. 这里使用的是微雪的SIM868通讯模 ...
- 适配Android4.4~Android11,调用系统相机,系统相册,系统图片裁剪,转换文件(对图片进行上传等操作)
前言 最近Android对于文件的许多方法进行了修改,网络上又没有对Android4到Android11关于系统相机.系统相册和系统裁剪的适配方案,我花了几天事件总结了一下,先上源码 DEMO源码 先 ...
- MVC文件图片ajax上传轻量级解决方案,使用客户端JSAjaxFileUploader插件01-单文件上传
前段时间做了几个关于图片.文件上传的Demo,使用客户端Query-File-Upload插件和服务端Badkload组件实现多文件异步上传,比如"MVC文件上传04-使用客户端jQuery ...
- 【问题解决方案】Xshell连接服务器并实现上传和下载文件
参考链接: Xshell连接服务器并实现上传和下载文件 第一步:xshell登录完成 略 第二步: 在服务器安装lrzsz 如果服务器的操作系统是 CentOS,则输入命令[yum install l ...
随机推荐
- bzoj1901--树状数组套主席树
树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...
- PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...
- SAP CRM 显示消息/在消息中进行导航
向用户展示消息,在任何软件中都是十分重要的. 在SAP CRM WEB UI中展示消息,不是一项很难的任务,只需要创建消息并在之后调用方法来显示它 消息类和消息号: 我在SE91中创建了如下的消息类和 ...
- git基本操作
一.在Windows平台上安装Git,可以下载一个msysGit的安装包,点击exe即可安装运行.安装包下载地址:https://git-for-windows.github.io/备注:git命令行 ...
- docker – 你应该知道的10件事
容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界. 如果你在IT圈里,你一定听说过Docker.就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoD ...
- 【一起学OpenFoam】02 软件准备
"工欲善其事必先利其器",在利用OpenFoam解决我们的工程问题之前,首先要做的事情是搭建一个OpenFoam运行环境.很遗憾的是,OpenFoam的原生开发系统是Linux,因 ...
- NOIP2016纪录[那些我所追求的]
人生第一场正式OI [序] 2016-12-04 见底部 [Day -1] 2016-11-17 期中考试无心插柳柳成荫,考了全市第2班里第1(还不是因为只复习了不到两天考试),马上请了一个周的假准备 ...
- 技术笔记:Indy控件发送邮件
工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...
- 从Unity3D编译器升级聊起Mono
接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...
- 应用Grunt自动化地优化你的项目前端
在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...