1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍

 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制

一、综述

SuperIO(SIO)定位在PC终端(上位机)应用,它只有一个服务实例,配置参数是全局属性。但是,ServerSuperIO(SSIO)与SuperIO(SIO)定位不一样,SSIO定位在服务器端,不管是串口通讯模式,还是网络通讯模式,都支持多服务实例,所以每个服务实例都有自己的配置参数,全部配置参数的定义在ServerConfig.cs文件中。

如下图示意:

二、配置参数说明

#region 全局
[Category("1.全局"),
DisplayName("ServerSession"),
Description("标识服务的唯ID,一般为Guid"),
DefaultValue(""),
ReadOnly(true)]
public string ServerSession { get; set; } [Category("1.全局"),
DisplayName("ServerName"),
Description("标识服务的标题名称"),
DefaultValue("")]
public string ServerName { get; set; } [Category("1.全局"),
DisplayName("DeliveryMode"),
Description("接收数据后的分布策略,包括:按设备IP分发(DeviceIP)、按设备编码分发(DeviceCode)"),
DefaultValue(DeliveryMode.DeviceIP)]
public DeliveryMode DeliveryMode { get; set; } [Category("1.全局"),
DisplayName("ControlMode"),
Description("调度设备驱动和IO实例的策略,包括:循环模式(Loop)、并发模式(Parallel)、自主模式(Self)和单例模式(Singleton)"),
DefaultValue(ControlMode.Loop)]
public ControlMode ControlMode { get; set; } [Category("1.全局"),
DisplayName("StartReceiveDataFliter"),
Description("标识接收数据后是否按协议过滤器的规划过滤数据,不启用则直接返回数据"),
DefaultValue(false)]
public bool StartReceiveDataFliter { get; set; } [Category("1.全局"),
DisplayName("StartCheckPackageLength"),
Description("标识是否检测数据长度,如果开启,那么会调用协议驱动的GetPackageLength接口,直到接收返回的数据长度的数据"),
DefaultValue(false)]
public bool StartCheckPackageLength { get; set; }
#endregion #region 串口
[Category("2.串口"),
DisplayName("ComReadBufferSize"),
Description("设置一次接收数据的字节数组最大值"),
DefaultValue(1024)]
public int ComReadBufferSize { get; set; } [Category("2.串口"),
DisplayName("ComWriteBufferSize"),
Description("设置一次发送数据的字节数组最大值"),
DefaultValue(1024)]
public int ComWriteBufferSize { get; set; } [Category("2.串口"),
DisplayName("ComReadTimeout"),
Description("设置一次读取数据的超时时间"),
DefaultValue(1000)]
public int ComReadTimeout { get; set; } [Category("2.串口"),
DisplayName("ComWriteTimeout"),
Description("设置一次发送数据的超时时间"),
DefaultValue(1000)]
public int ComWriteTimeout { get; set; } [Category("2.串口"),
DisplayName("ComLoopInterval"),
Description("轮询模式下,发送和接收数据中间的等待时间,串口通讯不支持其他控制模式"),
DefaultValue(1000)]
public int ComLoopInterval { get; set; }
#endregion #region 网络
[Category("3.网络"),
DisplayName("NetReceiveBufferSize"),
Description("设置一次接收数据的字节数组最大值"),
DefaultValue(1024)]
public int NetReceiveBufferSize { get; set; } [Category("3.网络"),
DisplayName("NetSendBufferSize"),
Description("设置一次发送数据的字节数组最大值"),
DefaultValue(1024)]
public int NetSendBufferSize { get; set; } [Category("3.网络"),
DisplayName("NetReceiveTimeout"),
Description("设置一次读取数据的超时时间"),
DefaultValue(1000)]
public int NetReceiveTimeout { get; set; } [Category("3.网络"),
DisplayName("NetSendTimeout"),
Description("设置一次发送数据的超时时间"),
DefaultValue(1000)]
public int NetSendTimeout { get; set; } [Category("3.网络"),
DisplayName("NetLoopInterval"),
Description("轮询模式下,发送和接收数据中间的等待时间"),
DefaultValue(1000)]
public int NetLoopInterval { get; set; } [Category("3.网络"),
DisplayName("MaxConnects"),
Description("允许客户端最大的连接数,超取最大值,自动关闭远程连接"),
DefaultValue(1000)]
public int MaxConnects { get; set; } [Category("3.网络"),
DisplayName("KeepAlive"),
Description("检测死连接、半连接的一种机制"),
DefaultValue(5000)]
public uint KeepAlive { get; set; } [Category("3.网络"),
DisplayName("ListenPort"),
Description("侦听接收数据的端口"),
DefaultValue(6699)]
public int ListenPort { get; set; } [Category("3.网络"),
DisplayName("BackLog"),
Description("定队列中最多可容纳的等待接受的传入连接数"),
DefaultValue(1000)]
public int BackLog { get; set; } [Category("3.网络"),
DisplayName("CheckSameSocketSession"),
Description("对一个固定的设备,只允许有一个有效连接,重复IP多次连接,将断开之前的连接"),
DefaultValue(true)]
public bool CheckSameSocketSession { get; set; } [Category("3.网络"),
DisplayName("SocketMode"),
Description("标识设备是TcpServer、TcpClient模式,如果标识TcpClient模式,会主动连接远程IP和端口"),
DefaultValue(SocketMode.Tcp)]
public SocketMode SocketMode { get; set; } [Category("3.网络"),
DisplayName("ClearSocketSession"),
Description("标识是否清理连接,如果一个连接在一定时间范围内没有接收到数据,将主动断开连接"),
DefaultValue(false)]
public bool ClearSocketSession { get; set; } [Category("3.网络"),
DisplayName("ClearSocketSessionInterval"),
Description("如果标识清理连接,那么在此标识清理连接间隔时间"),
DefaultValue(10)]
public int ClearSocketSessionInterval { get; set; } [Category("3.网络"),
DisplayName("ClearSocketSessionTimeOut"),
Description("如果标识清理连接,那么在此标识多长时间没有接收到数据进行清理"),
DefaultValue(30)]
public int ClearSocketSessionTimeOut { get; set; }
#endregion

三、常用配置参数说明

常用的配置参数包括:通讯参数类、控制参数类、以及一些高级的应用参数。如下代码

IServer server = new ServerFactory().CreateServer(new ServerConfig()
{
ServerName = "服务1", //服务实例的名称
ComReadTimeout = 1000, //串口读数据超时
ComWriteTimeout = 1000, //串口发送数据超时
NetReceiveTimeout = 1000, //网络接收数据超时
NetSendTimeout = 1000,//网络发送数据超时
ControlMode = ControlMode.Parallel,//控制模式
SocketMode = SocketMode.Tcp, //网络通讯是TCP模式还是UDP模式
StartReceiveDataFliter = false,//是否开启接收数据过滤器,后面重要介绍
ClearSocketSession = false,//是否检测网络实例的有效性,后面重要介绍
StartCheckPackageLength = false //是否检测包长度,后面重要介绍
});

ControlMode参数是SSIO结合现实应用场景的控制模式,主要用于调用设备的发送和接收数据的调度方式。请参见:《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。

四、配置工具

二次开发者,可以通过ServerSuperIO.Tool项目来配置服务实例、设备驱动和服务实例的参数。如下图:

注:下篇文章介绍设备驱动

《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明的更多相关文章

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

    注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架Server ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据

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

随机推荐

  1. Idea下用SBT搭建Spark Helloworld

    没用过IDEA工具,听说跟Eclipse差不多,sbt在Idea其实就等于maven在Eclipse.Spark运行在JVM中,所以要在Idea下运行spark,就先要安装JDK 1.8+ 然后加入S ...

  2. Vim使用

    模式 ESC\Ctrl+c:退出编辑模式 ZZ\wq:命令模式下保存退出 编辑 i:进入编辑模式 I:转到行首非空字符开始编辑 s:删除当前字符进入编辑模式 a:从当前字符后开始编辑 A:从当前行末非 ...

  3. MyEclipse对Maven的安装

    好记性不如烂笔头,记录一下. 操作系统:windows 7 MyEclipse2015 JDK1.7 maven的下载链接,点这里下载apache-maven-3.0.4-bin.tar.gz. 下载 ...

  4. 创建maven项目(cmd 命令)

    2016五月 22 原 创建maven项目(cmd 命令) 分类:maven (994) (0) 1.普通方式创建 1)进入cmd窗口执行 mvn archetype:generate 2) 光标停止 ...

  5. .NET Core dotnet 命令大全

    dotnet 命令大全,让你理解dotnet 命令. 本文将以一个实例串起 dotnet 所有命令,让你玩转dotnet 命令. 本篇文章编写环境为windows 10 ,dotnet 命令同样适用于 ...

  6. 微软“.Net社区虚拟大会”dotnetConf2015:关键词:.NET 创新、开源、跨平台

    去年 11 月的时候,微软开源了 .NET CoreFX,然后是今年 2 月份的 .NET CoreCLR.自那时以来,已经有大约 3500 人在 GitHub 上进行了提交,而且贡献者的人数还在持续 ...

  7. .NET - 基于事件的异步模型

    注:这是大概四年前写的文章了.而且我离开.net领域也有四年多了.本来不想再发表,但是这实际上是Active Object模式在.net中的一种重要实现方法,因此我把它掏出来发布一下.如果该模型有新的 ...

  8. TDD原则

    TDD 介绍 测试驱动开发,或者叫 TDD,是一个敏捷方法,通过确保在代码是先前手动编写测试用 例,用测试来驱动开发,从而翻转开发生命周期(它不只是作为一种校验工具). TDD 的原则很简单的: 只有 ...

  9. Java继承

    Java只支持单继承,不支持多继承. 一个类只能有一个父类,不可以有多个父类. class SubDemo extends Demo{} //ok class SubDemo extends Demo ...

  10. WinForm中显示PDF文件

    一.VS2013中,菜单-工具-选择工具箱项-COM组件-勾选“Adobe PDF Reader”-确定 二.在工具箱中就可以看到Adobe PDF Reader控件了,拖到窗体上. 拖到窗体上之后, ...