千家信息网

serversuperio分享终端控制传感器或设备形成回路控制的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"serversuperio分享终端控制传感器或设备形成回路控制的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"serve
千家信息网最后更新 2026年11月01日serversuperio分享终端控制传感器或设备形成回路控制的示例分析

这篇文章主要为大家展示了"serversuperio分享终端控制传感器或设备形成回路控制的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"serversuperio分享终端控制传感器或设备形成回路控制的示例分析"这篇文章吧。

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函数中触发异步回调到代理服务。代码如下图:

以上是"serversuperio分享终端控制传感器或设备形成回路控制的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

控制 设备 服务 传感器 驱动 信息 命令 代理服务 接口 代理 设备驱动 函数 数据 代码 终端 回路 事件 云端 标准 模式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 深圳恒合互联网络科技有限公司 科技互联网龙头 互联网金融监管科技数据 互联网电商科技 涨乐互联网科技 科技互联网政务服务 科技企业和互联网企业 西安互联网科技公司 云创客互联网科技公司 南山科技园互联网公司有哪些 互联网金融中的现代科技 呼和浩特新华互联网科技学院 乌苏新华互联网科技做什么的 互联网新科技动漫ppt素材 华夏恒生科技与互联网科技 互联网行业科技股 晋城互联网科技 半导体是互联网高科技吗 上海互联网科技公司ppt 深圳齐家互联网科技 奔汉互联网科技 深圳互联网科技怎么样 互联网金融科技公司干啥的 南平创想时代互联网科技有限公司 成都互联网科技公司工作好不好 电子科技大学互联网创业大赛 济南有互联网科技公司吗 为客找房互联网科技公司怎么样 互联网科技圈年度人物
0