温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ServerSuperIO单例通讯模式开发的方法是什么

发布时间:2022-01-14 09:46:38 来源:亿速云 阅读:154 作者:iii 栏目:互联网科技

这篇文章主要介绍“ServerSuperIO单例通讯模式开发的方法是什么”,在日常操作中,相信很多人在ServerSuperIO单例通讯模式开发的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ServerSuperIO单例通讯模式开发的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

8.单例通讯模式开发及注意事项

8.1    概述

    单例通讯模式只适用于网络通讯,并且只能增加一个“设备驱动”,这里“设备驱动”是逻辑概念,代表了所有设备或传感器,也就是说所有接到的数据全部分发给这个“设备驱动”。

8.2    通讯机制说明

    只有网络通讯时可以使用这种控制模式。在一个服务实例内只能有一个设备驱动,相当于一个设备驱动对应着N多个硬件设备终端。更适合通讯的数据协议有固定的标准,以命令关键字处理不同的数据。适用于高并发的硬件终端设备主动上传数据,服务器端根据数据信息进行处理和返回相应的数据。

   通讯结构如下图:

 ServerSuperIO单例通讯模式开发的方法是什么

8.3    设备驱动开发注意事项

     单例模式的设备驱动开发更简单,如果业务不复杂,那么只涉及到初始化参数、实时数据、协议,以及数据的处理逻辑,更高级的应用会涉及到协议数据过滤(IReceiveFilter接口)、数据转发(IService接口)、数据视图展示(IGraphicsShow接口)等,将在后续的文章中逐一进行介绍。

8.4    宿主程序服务实例配置注意事项

  sta

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
static         void         Main(         string         [] args)
{          
                     //55 AA 00 61 43 7A 00 00 43 B4 15 0D
                     DeviceSingletonDriver dev1 =         new         DeviceSingletonDriver();
                     dev1.DeviceParameter.DeviceName =         "网络设备"         ;
                     dev1.DeviceParameter.DeviceAddr = 0;
                     dev1.DeviceParameter.DeviceID =         "0"         ;
                     dev1.DeviceDynamic.DeviceID =         "0"         ;
                     dev1.DeviceParameter.DeviceCode =         "0"         ;
                     dev1.DeviceParameter.NET.RemoteIP =         "127.0.0.1"         ;
                     dev1.DeviceParameter.NET.RemotePort = 9600;
                     dev1.CommunicateType = CommunicateType.NET;
                     dev1.Initialize(         "0"         );
 
                     IServer server =         new         ServerManager().CreateServer(         new         ServerConfig()
                     {          
                         ServerName =         "单例服务"         ,
                         NetReceiveBufferSize = 1024,
                         ControlMode = ControlMode.Singleton,
                         MaxConnects = 4000
                     });
 
                     server.AddDeviceCompleted += server_AddDeviceCompleted;
                     server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;
                     server.SocketConnected+=server_SocketConnected;
                     server.SocketClosed+=server_SocketClosed;
                     server.Start();
 
                     server.AddDevice(dev1);
 
                     while         (         "exit"         == Console.ReadLine())
                     {          
                         server.Stop();
                     }
}

     ControlMode = ControlMode.Singleton设置成单位模式就可以了。

8.5    单例模式运行效果

     在本机跑过10000万个并发连接,用的jmeter,jmeter占用了1.4G左右的内存、90%多的CPU,我也不知道为什么这么耗资源,笔记本勉强还能工作。

    现在模拟的是15个客户端,100毫秒发送一次数据,效果如下:

  1. 图片

ServerSuperIO单例通讯模式开发的方法是什么

到此,关于“ServerSuperIO单例通讯模式开发的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI