21.1 概述
ServerSuperIO之前所做的事情逐渐为构成回路掌握或级联掌握打下基本,比方:效劳衔接器和装备驱动衔接器的开辟与运用。总之,是经由过程多种形式下发敕令掌握装备(驱动)或传感器,云端掌握站点或监测点的传感器、App或许其他终端掌握传感器、依据传感器的收集数据掌握另一个传感器等。
下面引见云端、App或许其他终端怎样掌握传感器装备(传感器掌握传感器相似,请拜见:12.效劳接口的开辟,以及与云端双向交互)。依据通信协定,构造化计划、不需要太多代码即可完成响应的功用。效果以下图:
21.2 构造示意图
掌握端提议掌握敕令,用ServerSuperIO效劳接口开辟一个简朴的代办效劳,经由过程效劳衔接器IServiceConnector接口与装备驱动举行交互,装备驱动吸收到掌握敕令后下发给装备或传感器,守候掌握返回确实认音讯,再原路返回给掌握端。
21.3 通信协定
有人问为何不运用MQTT协定,那怎样兼容差别装备和传感器的协定?以于中国现实状况,明显还不能到达统一规范的程度,在经济不好的状况下,企业也不可能投资替换掉本来的硬件装备。也不相符ServerSuperIO设想的准绳,就是要搞协定无关性,任何规范或非规范的协定都能够集成进来。假如想过一条河,把桥修睦、把索道搭好、把船摆好…细致怎样过河由你自身决议。
有人问ServerSuperIO都集成了什么协定?上面已给出了答案,别的我想说的是没有任何一个框架能够包治百病。从相反的角度来斟酌,假如像组态一样把任何协定都加进来,企业又想拿出来若干的代价来对等交流呢,所以协定驱动照样交给人人来自身写吧。
我们演示的协定以下图:
21.4 掌握端
掌握端包含很多种:云端向下级发送掌握敕令、App或Pc机软件衔接效劳发送掌握敕令等等。发送掌握敕令以下图:
21.5 代办效劳(SSIO效劳接口)
代办效劳是经由过程ServerSuperIO的IService接口完成,在继续类中运用ServerSuperIO框架自身的单例形式开辟代办效劳,代码以下:
public override void StartService() { string devId = "ControlDeviceService"; Driver dev = new Driver(); dev.ReceiveRequestInfos += Dev_ReceiveRequestInfos; dev.DeviceParameter.DeviceName = "掌握装备驱动器"; dev.DeviceParameter.DeviceAddr = 0; dev.DeviceParameter.DeviceID = devId; dev.DeviceParameter.DeviceCode = ""; dev.DeviceDynamic.DeviceID = devId; dev.DeviceParameter.NET.RemoteIP = "127.0.0.1"; dev.DeviceParameter.NET.RemotePort = 9600; dev.DeviceParameter.NET.ControllerGroup = "LocalGroup"; dev.CommunicateType = CommunicateType.NET; dev.Initialize(devId); IServer server = new ServerManager().CreateServer(new ServerConfig() { ServerName = "掌握装备效劳", ListenPort=6670, ComReadTimeout = 1000, ComWriteTimeout = 1000, NetReceiveTimeout = 1000, NetSendTimeout = 1000, ControlMode = ControlMode.Singleton, SocketMode = SocketMode.Tcp, StartReceiveDataFliter = false, ClearSocketSession = false, StartCheckPackageLength = false, CheckSameSocketSession = false, }); server.AddDeviceCompleted += server_AddDeviceCompleted; server.DeleteDeviceCompleted += server_DeleteDeviceCompleted; server.SocketConnected += server_SocketConnected; server.SocketClosed += server_SocketClosed; server.Start(); server.AddDevice(dev); }
dev.ReceiveRequestInfos事宜是掌握驱动继续ServerSuperIO框架中RunDevice驱动类扩大的事宜接口,ServerSuperIO单例形式吸收到数据信息,假如相符协定规范会把数据信息反应给驱动顺序的Communicate接口,ReceiveRequestInfos事宜把数据信息通报给代办效劳定阅该事宜的Dev_ReceiveRequestInfos函数。代码以下图:
代办效劳中的Dev_ReceiveRequestInfos函数,经由过程效劳衔接器接口IServiceConnector,依据DeviceCode(addr)把信息通报给响应的装备驱动。代码以下图:
代办效劳经由过程ServiceConnectorCallback和ServiceConnectorCallbackError函数接口吸收装备驱动反应的效果信息,假如中心出现异常会挪用ServiceConnectorCallbackError,假如一般会挪用ServiceConnectorCallback函数,ServiceConnectorCallback函数接口依据纪录的敕令与IO通道的对应关联,再把效果发送给掌握端。ServiceConnectorCallback代码以下图:
在这里边有一个注重的处所,就是装备驱动在划定的时间内没有反应掌握敕令确实认信息,也就是传感器没有反应响应的信息。这类状况要增添一个定时检测效劳,假如超时没有反应信息,发送给掌握端响应的音讯。代码以下图:
21.6 装备驱动
这个装备驱动与传感器相对应,之间互相过行数据交互。装备驱动的RunServiceConnector接口担任吸收代办效劳Dev_ReceiveRequestInfos(OnServiceConnector)函数通报过来的敕令信息。代码以下图:
有两点申明:1.吸收到敕令数据后能够经由过程OnSendData函数马上下发数据信息,以设置的IP查找响应的IO通道,适用于自控形式。2. 吸收到敕令数据后放到this.Protocol.SendCache协定缓存中,守候下发敕令,适用于轮询、并发形式。
针对于返回的效果对象ServiceConnectorCallbackResult的isAsyn参数,假如为true,申明经由过程AsyncServiceConnectorCallback callback返回效果信息,也就是说要守候传感器返回确认信息,而且装备驱动吸收后再反应到代办效劳;假如为false,申明会马上反应到代办效劳,适用于通报数据信息而不论与传感器是不是交互胜利。
能够在这个函数中把callback参数举行暂时保留,守候传感器返回确认信息后在Communicate函数中触发异步回调到代办效劳。代码以下图:
21.7 Demo申明
翻开两个TestDevice顺序,一个作为装备传感器,一个作为掌握端,DeviceCode要以应;TestDeviceDriver是装备驱动,在效劳实例中加载,我用的是自控形式,运用TestSelfMain项目;ControlDeviceService是代办效劳,在TestSelfMain中加载。细致拜见工程代码:。
备注:未来我们的大数据平台,也能够通这类形式下发掌握敕令到站点。
1.[连载]《C#通信(串口和收集)框架的设想与完成》
2.[开源]C#跨平台物联网通信框架ServerSuperIO(SSIO)引见
2.运用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建体系的团体计划
3.C#产业物联网和集成体系处理计划的手艺线路(数据源、数据收集、数据上传与吸收、ActiveMQ、Mongodb、WebApi、手机App)
5.ServerSuperIO开源地点:
物联网&集成手艺(.NET) QQ群:54256083
下载地点:
1.C#跨平台物联网通信框架ServerSuperIO(SSIO)引见
《连载 | 物联网框架ServerSuperIO教程》1.4种通信形式机制。
《连载 | 物联网框架ServerSuperIO教程》2.效劳实例的设置参数申明
《连载 | 物联网框架ServerSuperIO教程》- 3.装备驱动引见
《连载 | 物联网框架ServerSuperIO教程》-4.如开辟一套装备驱动,同时支撑串口和收集通信。
《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通信形式开辟及注重事项。
《连载 | 物联网框架ServerSuperIO教程》- 6.并发通信形式开辟及注重事项
《连载 | 物联网框架ServerSuperIO教程》- 7.自控通信形式开辟及注重事项
《连载 | 物联网框架ServerSuperIO教程》- 8.单例通信形式开辟及注重事项
《连载 | 物联网框架ServerSuperIO教程》- 9. 协定过滤器,处理一包多发、粘包、冗余数据
《连载 | 物联网框架ServerSuperIO教程》- 10.延续传输大块数据流的两种体式格局(如:文件)
《连载 | 物联网框架ServerSuperIO教程》- 11.完成装备(驱动)与装备(驱动)交互和级联掌握。
《连载 | 物联网框架ServerSuperIO教程》- 12.效劳接口的开辟,以及与云端双向交互
《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显现接口开辟,满足差别的显现需求
《连载 | 物联网框架ServerSuperIO教程》- 14.配制东西引见,以及装备驱动、视图驱动、效劳实例的挂载
《连载 | 物联网框架ServerSuperIO教程》- 15.数据耐久化接口的运用
《连载 | 物联网框架ServerSuperIO教程》- 16.OPC Server的运用步骤
《连载 | 物联网框架ServerSuperIO教程》- 17.支撑及时数据库,高并发保留测点数据
《连载 | 物联网框架ServerSuperIO教程》- 18.集成OPC Client,及运用步骤
《连载 | 物联网框架ServerSuperIO教程》-19.装备驱动和OPC Client支撑mysql、oracle、sqlite、sqlserver的耐久化
《物联网框架ServerSuperIO教程》-20.收集通信掌握器分组,进步交互的负载平衡才能。v3.6.6 版本宣布
以上就是分享终端掌握传感器或装备,构成回路掌握实例的细致内容,更多请关注ki4网别的相干文章!