博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《连载 | 物联网框架ServerSuperIO教程》- 8.单例通讯模式开发及注意事项
阅读量:4500 次
发布时间:2019-06-08

本文共 2136 字,大约阅读时间需要 7 分钟。

 


 

目       录

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

8.1           概述... 2

8.2           通讯机制说明... 2

8.3           设备驱动开发注意事项... 2

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

8.5           单例模式运行效果... 4

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

8.1    概述

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

8.2    通讯机制说明

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

   通讯结构如下图:

 

 

8.3    设备驱动开发注意事项

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

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

  sta

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. 图片

  1. 视频


1.

2.[

2.

3.

5.ServerSuperIO开源地址:

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

 

转载于:https://www.cnblogs.com/lsjwq/p/6079267.html

你可能感兴趣的文章
编程习惯1
查看>>
【读书笔记】iOS-给模拟器相册增加图片
查看>>
【Silverlight实例】Silverlight与Access数据库的互操作
查看>>
Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决
查看>>
ActionMapping、ActionForward笔记
查看>>
带你入门机器学习
查看>>
fragment 重叠问题
查看>>
三层架构,四层模型
查看>>
[HAOI2008]硬币购物
查看>>
纯C语言跑分(详细注释)
查看>>
.Net分布式架构(一):Nginx实现负载均衡
查看>>
POJ 2485 Highways(最小生成树Prim算法)
查看>>
文本界面听歌神器--moc
查看>>
Ubuntu上安装谷歌第二代机器学习系统TensorFlow
查看>>
Linux:xargs命令详解
查看>>
Flex 布局教程:语法篇
查看>>
明天你好
查看>>
Spring 分散装配
查看>>
漫话爬取
查看>>
sublime js插件
查看>>