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

感谢唯笑志在分享
原博主原地址:
http://www.cnblogs.com/lsjwq/

目       录

5. 轮询通讯模型开发及注意事项... 2

4.1           概述... 2

4.2           通讯机制说明... 2

4.3           设备驱动开发注意事项... 3

4.3.1    实时发送数据... 3

4.3.2    优先发送其他数据... 3

4.4           宿主程序服务实例配置注意事项... 4

4.5           轮询运行效果... 4

5. 轮询通讯模型开发及注意事项   

4.1    概述

轮询通讯模式是SuperIO最早且唯一的通讯模式,在此基础上增加了自控模式、并发模式。ServerSuperIO框架除了具备这3种通讯模式外,还具备单例模式,后边会对这些通讯模式进行详细介绍。

刚参加工作的时候,也不知道什么通讯模式,但是当时工业领域的通讯环境非常复杂,调制解调的通讯链路,300波特率的传输速率,受地质、电缆等强电磁干扰,经常会出现数据被干扰的现象。当时也没有所谓的互联网技术,为了保障通讯的稳定性,只能进行轮询的通讯模式。

4.2    通讯机制说明

这是框架最早的运行模式,串口和网络通讯时都可以使用这种控制模式。当有多个设备 连接到通讯平台时,通讯平台会轮询调度设备进行通讯任务。某一时刻只能有一个设备发送请求命令、等待接收返回数据,这个设备完成发送、接收(如果遇到超时 情况,则自动返回)后,下一个设备才进行通讯任务,依次轮询设备。

应用场景是这样的,服务端与设备进行通讯遵循呼叫应答的方式,也就是IO可用的情况下,服务端先发起通讯命令请求,设备根据命令信息,检验通过后返回数据给服务端。这种通讯模式很好理解,每个设备的通讯都遵循排队的原则。但是如果某个设备的命令需要及时发送,怎么办?ServerSuperIO框架是支持设备优先级别调度的,例如:对某个设备要进行实时的检测,需要连续发送命令,那么就需要对设备进行高级别设置,发送请求数据命令。

通讯结构如下图:

4.3    设备驱动开发注意事项

4.3.1    实时发送数据

ServerSuperIO框架会轮询调度所有设备,以呼叫应答的方式向设备发送请求实时数据命令,对于同一个设备的请求实时数据命令一般相对固定。在调度某一具体设备驱动的时候,会调用固定的调用IRunDevice驱动接口的GetConstantCommand函数,以获得请求实时数据的命令。代码如下:


1

2

3

4

5

6

7

public override byte[] GetConstantCommand()

{

            byte[] data = this.Protocol.DriverPackage<String>("0""61"null);

            string hexs = BinaryUtil.ByteToHex(data);

            OnDeviceRuningLog("发送>>"+hexs);

            return data;

 }

this.Protocol.DriverPackage驱动调用61命令获得要发送的命令,并返回byte[]数组,ServerSuperIO获得数据后会自动通过IO接口下发命令数据。如果返回null类型,系统不进行下发操作。

4.3.2    优先发送其他数据

对于一个设备不可能只有一个读实时数据的命令,可能还存在其他命令进行交互,例如:读参数、实时校准等,这时就需要进行优先级调度发送数据信息。可以通过两种方式让ServerSuperIO框架优先调度该设备驱动。

  1. 把命令增加发送数据缓存中,框架从缓存中获得数据后会自动删除,代码如下:

1

this.Protocol.SendCache.Add("读参数",readParaBytes);

2.设置设备的优先级别属性,代码如下:


1

this.DevicePriority=DevicePriority.Priority;

4.4    宿主程序服务实例配置注意事项

在宿主程序中创建服务实例的时候,需要把服务实例的配置参数设置为轮询通讯模式,并启动服务实例,把实例化的设备驱动增加到该服务实例中。代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

DeviceDriver dev1 = new DeviceDriver();

dev1.DeviceParameter.DeviceName = "串口设备1";

dev1.DeviceParameter.DeviceAddr = 0;

dev1.DeviceParameter.DeviceID = "0";

dev1.DeviceDynamic.DeviceID = "0";

dev1.DeviceParameter.COM.Port = 1;

dev1.DeviceParameter.COM.Baud = 9600;

dev1.CommunicateType = CommunicateType.COM;

dev1.Initialize("0");

IServer server = new ServerFactory().CreateServer(new ServerConfig()

{

      ServerName = "服务实例1",

      SocketMode = SocketMode.Tcp,

      ControlMode = ControlMode.Loop,

      CheckSameSocketSession = false,

      StartCheckPackageLength = false,

});

server.Start();

server.AddDevice(dev1);

ControlMode = ControlMode.Loop代码是设置服务实例调度设备为轮询控制模式。

4.5    轮询运行效果

1.图片

2.视频



附:群里网友制作的类库说明(CHM),网友名称:norman33,QQ号:235936468。感谢norman33,共建美好社区。下载地址:http://pan.baidu.com/s/1qXDVIvq

时间: 2024-10-13 02:07:58

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

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

感谢唯笑志在分享 原博主原地址:http://www.cnblogs.com/lsjwq/ 目       录 7. 自控通讯模式开发及注意事项... 2 7.1           概述... 2 7.2           通讯机制说明... 2 7.3           设备驱动开发注意事项... 3 7.3.1    实时发送数据... 3 7.3.2    发送固定实时请求数据命令... 4 7.3.3    优先发送其他数据... 4 7.3.4    如何选择IO通道发送数据..

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

感谢唯笑志在分享 原博主原地址:http://www.cnblogs.com/lsjwq/ 目       录 6. 并发通讯模式开发及注意事项... 2 6.1           概述... 2 6.2           通讯机制说明... 2 6.3           设备驱动开发注意事项... 3 6.3.1    实时发送数据... 3 6.3.2    优先发送其他数据... 3 6.3.3    如何选择IO通道发送数据... 4 6.3.4    如何以DeviceCode分

《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

《连载 | 物联网框架ServerSuperIO教程》- 18.集成OPC Client,及使用步骤。附:3.5 发布与更新说明。

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

《连载 | 物联网框架ServerSuperIO教程》- 11.实现设备(驱动)与设备(驱动)交互和级联控制。注:设备驱动模拟金三与普京的对话

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载

注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发

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

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

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

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe