《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
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项目来配置服务实例、设备驱动和服务实例的参数。如下图:

注:下篇文章介绍设备驱动
2.[开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍
2.应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案
3.C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)
5.ServerSuperIO开源地址:https://github.com/wxzz/ServerSuperIO
物联网&集成技术(.NET) QQ群:
《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明的更多相关文章
- 《连载 | 物联网框架ServerSuperIO教程》- 14.配制工具介绍,以及设备驱动、视图驱动、服务实例的挂载
注:ServerSuperIO二次开发套件授权码申请---截止到:2016-12-09 1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架Server ...
- 《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 7.自控通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 9. 协议过滤器,解决一包多发、粘包、冗余数据
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- trigger事件模拟
事件模拟trigger 在操作DOM元素中,大多数事件都是用户必须操作才会触发事件,但有时,需要模拟用户的操作,来达到效果. 需求:页面初始化时触发搜索事件并获取input控件值,并打印输出(效果图如 ...
- JAVA环境变量和TomCat服务器配置
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...
- Hyper-V上运行的Linux虚拟机验证是否安装了集成服务
Hyper-V上运行的Linux虚拟机验证是否安装了集成服务 ps aux|grep "hv"root 311 0.0 0.0 0 0 ? ...
- [PHP源码阅读]count函数
在PHP编程中,在遍历数组的时候经常需要先计算数组的长度作为循环结束的判断条件,而在PHP里面对数组的操作是很频繁的,因此count也算是一个常用函数,下面研究一下count函数的具体实现. 我在gi ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- 一个标签的72变,打造一个纯CSS图标库
每次要用到图标的时候都会到 icono 去copypaste,但每次用到的时候尺寸都各不一样,总是要调整参数,巨烦.当然你可以会想到用zoom.scale来做缩放,但是这样的缩放会使得线宽也变粗了,不 ...
- [转]Python中的str与unicode处理方法
早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...
- ORA-12154:TNS:无法解析指定的连接标识符
问题:ORA-12154:TNS:无法解析指定的连接标识符 原因:没有配置tnsnames.ora文件 解决方案: 配置环境变量变量名:ORACLE_HOME 变量值:如:D:\Database\pr ...
- Android-TextView跑马灯效果
要实现跑马灯还是比较简单的. 同时有几个需要注意的点,先上代码: public class MTView extends TextView { public MTView(Context contex ...
- 多行文本溢出显示省略号(…) text-overflow: ellipsis
详解text-overflow 语法: text-overflow:clip | ellipsis 默认值:clip 适用于:块级容器元素 继承性:无 动画性:否 计算值:指定值 取值: clip:当 ...