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

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

一、综述

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

如下图示意:

二、配置参数说明


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

#region 全局

        [Category("1.全局"),

         DisplayName("ServerSession"),

         Description("标识服务的唯ID,一般为Guid"),

         DefaultValue(""),

         ReadOnly(true)]

         public string ServerSession { getset; }

        [Category("1.全局"),

        DisplayName("ServerName"),

        Description("标识服务的标题名称"),

        DefaultValue("")]

        public string ServerName { getset; }

        [Category("1.全局"),

        DisplayName("DeliveryMode"),

        Description("接收数据后的分布策略,包括:按设备IP分发(DeviceIP)、按设备编码分发(DeviceCode)"),

        DefaultValue(DeliveryMode.DeviceIP)]

        public DeliveryMode DeliveryMode { getset; }

        [Category("1.全局"),

         DisplayName("ControlMode"),

         Description("调度设备驱动和IO实例的策略,包括:循环模式(Loop)、并发模式(Parallel)、自主模式(Self)和单例模式(Singleton)"),

         DefaultValue(ControlMode.Loop)]

        public ControlMode ControlMode { getset; }

        [Category("1.全局"),

         DisplayName("StartReceiveDataFliter"),

         Description("标识接收数据后是否按协议过滤器的规划过滤数据,不启用则直接返回数据"),

         DefaultValue(false)]

        public bool StartReceiveDataFliter { getset; }

        [Category("1.全局"),

        DisplayName("StartCheckPackageLength"),

        Description("标识是否检测数据长度,如果开启,那么会调用协议驱动的GetPackageLength接口,直到接收返回的数据长度的数据"),

        DefaultValue(false)]

        public bool StartCheckPackageLength { getset; }

        #endregion

        #region 串口

        [Category("2.串口"),

         DisplayName("ComReadBufferSize"),

         Description("设置一次接收数据的字节数组最大值"),

         DefaultValue(1024)]

        public int ComReadBufferSize { getset; }

        [Category("2.串口"),

        DisplayName("ComWriteBufferSize"),

        Description("设置一次发送数据的字节数组最大值"),

        DefaultValue(1024)]

        public int ComWriteBufferSize { getset; }

        [Category("2.串口"),

        DisplayName("ComReadTimeout"),

        Description("设置一次读取数据的超时时间"),

        DefaultValue(1000)]

        public int ComReadTimeout { getset; }

        [Category("2.串口"),

        DisplayName("ComWriteTimeout"),

        Description("设置一次发送数据的超时时间"),

        DefaultValue(1000)]

        public int ComWriteTimeout { getset; }

        [Category("2.串口"),

        DisplayName("ComLoopInterval"),

        Description("轮询模式下,发送和接收数据中间的等待时间,串口通讯不支持其他控制模式"),

        DefaultValue(1000)]

        public int ComLoopInterval { getset; }

        #endregion

        #region 网络

        [Category("3.网络"),

         DisplayName("NetReceiveBufferSize"),

         Description("设置一次接收数据的字节数组最大值"),

         DefaultValue(1024)]

        public int NetReceiveBufferSize { getset; }

        [Category("3.网络"),

        DisplayName("NetSendBufferSize"),

        Description("设置一次发送数据的字节数组最大值"),

        DefaultValue(1024)]

        public int NetSendBufferSize { getset; }

        [Category("3.网络"),

        DisplayName("NetReceiveTimeout"),

        Description("设置一次读取数据的超时时间"),

        DefaultValue(1000)]

        public int NetReceiveTimeout { getset; }

        [Category("3.网络"),

         DisplayName("NetSendTimeout"),

         Description("设置一次发送数据的超时时间"),

         DefaultValue(1000)]

        public int NetSendTimeout { getset; }

        [Category("3.网络"),

        DisplayName("NetLoopInterval"),

        Description("轮询模式下,发送和接收数据中间的等待时间"),

        DefaultValue(1000)]

        public int NetLoopInterval { getset; }

        [Category("3.网络"),

        DisplayName("MaxConnects"),

        Description("允许客户端最大的连接数,超取最大值,自动关闭远程连接"),

        DefaultValue(1000)]

        public int MaxConnects { getset; }

        [Category("3.网络"),

        DisplayName("KeepAlive"),

        Description("检测死连接、半连接的一种机制"),

        DefaultValue(5000)]

        public uint KeepAlive { getset; }

        [Category("3.网络"),

        DisplayName("ListenPort"),

        Description("侦听接收数据的端口"),

        DefaultValue(6699)]

        public int ListenPort { getset; }

        [Category("3.网络"),

        DisplayName("BackLog"),

        Description("定队列中最多可容纳的等待接受的传入连接数"),

        DefaultValue(1000)]

        public int BackLog { getset; }

        [Category("3.网络"),

        DisplayName("CheckSameSocketSession"),

        Description("对一个固定的设备,只允许有一个有效连接,重复IP多次连接,将断开之前的连接"),

        DefaultValue(true)]

        public bool CheckSameSocketSession { getset; }

        [Category("3.网络"),

        DisplayName("SocketMode"),

        Description("标识设备是TcpServer、TcpClient模式,如果标识TcpClient模式,会主动连接远程IP和端口"),

        DefaultValue(SocketMode.Tcp)]

        public SocketMode SocketMode { getset; }

        [Category("3.网络"),

        DisplayName("ClearSocketSession"),

        Description("标识是否清理连接,如果一个连接在一定时间范围内没有接收到数据,将主动断开连接"),

        DefaultValue(false)]

        public bool ClearSocketSession { getset; }

        [Category("3.网络"),

        DisplayName("ClearSocketSessionInterval"),

        Description("如果标识清理连接,那么在此标识清理连接间隔时间"),

        DefaultValue(10)]

        public int ClearSocketSessionInterval { getset; }

        [Category("3.网络"),

        DisplayName("ClearSocketSessionTimeOut"),

        Description("如果标识清理连接,那么在此标识多长时间没有接收到数据进行清理"),

        DefaultValue(30)]

        public int ClearSocketSessionTimeOut { getset; }

        #endregion

三、常用配置参数说明

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


1

2

3

4

5

6

7

8

9

10

11

12

13

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开源地址:https://github.com/wxzz/ServerSuperIO

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

时间: 2024-08-03 15:40:31

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

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

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

《连载 | 物联网框架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教程》- 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

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

感谢唯笑志在分享 原博主原地址:http://www.cnblogs.com/lsjwq/ 目       录 9. 协议过滤器,解决一包多发.粘包.冗余数据... 2 9.1  概述... 2 9.2 实际问题... 2 9.3 5种过滤器及二次开发... 5 9.4 设备驱动开发注意事项... 6 9.5 宿主程序服务实例配置注意事项... 6 9. 协议过滤器,解决一包多发.粘包.冗余数据    9.1    概述 通讯中涉及到数据包的概念,是通讯协议中的数据组成形式.针对这块内容,说简单

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

感谢唯笑志在分享 原博主原地址:http://www.cnblogs.com/lsjwq/ 注:ServerSuperIO有可能被移植到Windows 10 IOT上,那么将来有可能开发一套设备驱动,可以支行在服务端.嵌入式设备中,将形成完整的解决方案.       现在已经调试通过部分代码,还得需要一段时间,一般都是晚上干,时间也有限.如下图: 目       录 4.如开发一套设备驱动,同时支持串口和网络通讯... 2 4.1           概述... 2 4.2