《连载 | 物联网框架ServerSuperIO教程》2.服务实例

作者:编程技术

       常用的配备参数满含:通信参数类、调整参数类、以致一些尖端的接受参数。如下代码

《连载 | 物联网框架ServerSuperIO教程》2.劳动实例的配备参数表达,superio的施用实例

一、综述

     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项目来布局服务实例、设备驱动和劳动实例的参数。如下图:

注:下篇小说介绍器械驱动

 

1.[连载]《C#报道(串口和互连网卡塔尔框架的筹算与完毕》

2.[开源]C#跨平台物联网通信框架ServerSuperIO(SSIO卡塔 尔(阿拉伯语:قطر‎介绍

2.行使SuperIO(SIO卡塔尔国和开源跨平台物联网框架ServerSuperIO(SSIO卡塔尔创设系统的完全方案

3.C#工业物联网和集成系统施工方案的本事路线(数据源、数据收罗、数据上传与采纳、ActiveMQ、Mongodb、WebApi、手提式有线电话机App卡塔尔

5.ServerSuperIO开源地址:

物联网&集成本领(.NET) QQ群54256083

 

| 物联网框架ServerSuperIO教程》2.劳动实例的配备参数表明,superio的行使实例 风姿洒脱、综述 SuperIO(SIO)定位在PC终端(上位机卡塔 尔(英语:State of Qatar)应用,它只...

 

一、综述

分分快三计划 1

       ControlMode参数是SSIO结合现实应用项景的主宰形式,首要用以调用设备的出殡和接受数据的调整措施。请参见:《连载 | 物联网框架ServerSuperIO教程》1.4种简报形式机制。

 《连载 | 物联网框架ServerSuperIO教程》1.4种简报格局机制

注:下篇小说介绍道具驱动

      三次开荒者,能够由此ServerSuperIO.Tool项目来安顿服务实例、设备驱动和劳动实例的参数。如下图:

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 //是否检测包长度,后面重要介绍
            });

分分快三计划 2

3.C#工业物联网和集成系统解决方案的本领路径(数据源、数据搜罗、数据上传与吸收接纳、ActiveMQ、Mongodb、WebApi、手提式有线电话机App卡塔尔

2.动用SuperIO(SIO卡塔 尔(英语:State of Qatar)和开源跨平台物联网框架ServerSuperIO(SSIO卡塔 尔(阿拉伯语:قطر‎营造系统的完整方案

5.ServerSuperIO开源地址:

     SuperIO(SIO)定位在PC终端(上位机卡塔尔国应用,它唯有二个劳务实例,配置参数是全局属性。不过,ServerSuperIO(SSIO卡塔尔国与SuperIO(SIO)定位不风姿浪漫致,SSIO定位在服务器端,不管是串口通信形式,照旧网络通信形式,都辅助多服务实例,所以每一个服务实例都有友好的配备参数,全体安插参数的概念在ServerConfig.cs文件中。

1.[连载]《C#广播发表(串口和互连网卡塔尔框架的希图与贯彻》

 

 

物联网&集成技巧(.NET) QQ群54256083

  三、常用配置参数表明

1.C#跨平台物联网通信框架ServerSuperIO(SSIO卡塔尔介绍

     如下图表示:

二、配置参数表达

 

四、配置工具

#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

 

2.[开源]C#跨平台物联网通信框架ServerSuperIO(SSIO卡塔尔介绍

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划