《连载 | 物联网框架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 ...
随机推荐
- [原创]关于Hibernate中的级联操作以及懒加载
Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...
- JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
- Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .
例如:The prefix "context" for element "context:annotation-config" is not bound. 这种 ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- [PHP源码阅读]array_slice和array_splice函数
array_slice和array_splice函数是用在取出数组的一段切片,array_splice还有用新的切片替换原删除切片位置的功能.类似javascript中的Array.prototype ...
- 如果你发现mysql的外键约束不管用了
不知为何我机子上的mysql竟然默认关闭外键约束,导致我试了好多遍都可以插入非法值,以下语句可以开启约束 SET foreign_key_checks = 1; (0则关闭) 备忘
- MySQL基础之存储过程
学过之后却没有总结,今天好不容易有点时间来看看. 存储过程的优势 1.简化复杂的SQL语句,将多个SQL语句封装成为一个存储过程,可以在其中加上一些流程控制语句 2.存储过程封装在数据库内部,编译之后 ...
- ajax-异步JavaScript和XML
什么是ajax? ajax是异步的javascript和XML ( Asynchronous Javascript And XML ) 优点:节省用户操作时间,提高用户体验.减少数据请求次数. 什么是 ...
- Python初学者之网络爬虫
声明:本文内容和涉及到的代码仅限于个人学习,任何人不得作为商业用途. 本文将介绍我最近在学习Python过程中写的一个爬虫程序,将力争做到不需要有任何Python基础的程序员都能读懂.读者也可以先跳到 ...
- H5拍照应用开发经历的那些坑儿
一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...