http://www.web008.net

解决一包多发,协议过滤器

9. 合计过滤器,消除生龙活虎包多发、粘包、冗余数据  

9.1    概述

     通讯中提到到数据包的概念,是广播发表合同中的数据整合情势。针对那块内容,说简洁明了也大致,说复杂也复杂。需求大家系统性的把难点思考全盘,并用代码达成。

     在工业领域也许有Infiniti的情况现身,今年做报纸发表的时候,数据西宁、包尾、数据长度、数据校验位都对,可是正是分析出来的数目不得法,这种情形不会平常现身,可是在某种特殊应用景况也许会一再次出现身,后来因此深入分析得出结论:或者是出于地质电磁忧愁引起的。可是也许有技术上的布置性破绽,比如:数据校验位是加上和,改成CRC是否就不会出去那些难点了;其它对于增量数据,应该有补发机制等等。

9.4 设备驱动开拓注意事项... 6

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

    在计划参数中须要配备:StartReceiveDataFliter = true,合同过滤器技艺起到功能。代码如下:

static void Main(string[] args)
{
            DeviceSelfDriver dev2 = new DeviceSelfDriver();
            dev2.DeviceParameter.DeviceName = "网络设备";
            dev2.DeviceParameter.DeviceAddr = 1;
            dev2.DeviceParameter.DeviceID = "1";
            dev2.DeviceDynamic.DeviceID = "1";
            dev2.DeviceParameter.DeviceCode = "1";
            dev2.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev2.DeviceParameter.NET.RemotePort = 9600;
            dev2.CommunicateType = CommunicateType.NET;
            dev2.Initialize("1");

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "服务1",
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Self,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = true,
                ClearSocketSession = false,
                StartCheckPackageLength = false,
                CheckSameSocketSession = false,
                DeliveryMode = DeliveryMode.DeviceIP,
            });

            server.AddDeviceCompleted += server_AddDeviceCompleted;
            server.DeleteDeviceCompleted+=server_DeleteDeviceCompleted;
            server.Start();  

            server.AddDevice(dev2);

            while ("exit" == Console.ReadLine())
            {
                server.Stop();
            }
}

1.[连载]《C#通信(串口和互连网)框架的宏图与完毕》

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

2.接纳SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)塑造系统的豆蔻年华体化方案

3.C#工业物联网和集成系统施工方案的本领路子(数据源、数据搜聚、数据上传与吸取、ActiveMQ、Mongodb、WebApi、手提式有线话机App)

5.ServerSuperIO开源地址:

物联网&集成技巧(.NET卡塔尔(قطر‎ QQ群54256083 

 

| 物联网框架ServerSuperIO教程》- 9. 磋商过滤器,解决一包多发、粘包、冗余数据,冗余是何等意思 1.C#跨平台物联网通信框架ServerS...

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

    在配置参数中必要配置:StartReceiveDataFliter = true,契约过滤器手艺起到功用。代码如下:

static void Main(string[] args)
{
            DeviceSelfDriver dev2 = new DeviceSelfDriver();
            dev2.DeviceParameter.DeviceName = "网络设备";
            dev2.DeviceParameter.DeviceAddr = 1;
            dev2.DeviceParameter.DeviceID = "1";
            dev2.DeviceDynamic.DeviceID = "1";
            dev2.DeviceParameter.DeviceCode = "1";
            dev2.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev2.DeviceParameter.NET.RemotePort = 9600;
            dev2.CommunicateType = CommunicateType.NET;
            dev2.Initialize("1");

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "服务1",
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Self,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = true,
                ClearSocketSession = false,
                StartCheckPackageLength = false,
                CheckSameSocketSession = false,
                DeliveryMode = DeliveryMode.DeviceIP,
            });

            server.AddDeviceCompleted += server_AddDeviceCompleted;
            server.DeleteDeviceCompleted+=server_DeleteDeviceCompleted;
            server.Start();  

            server.AddDevice(dev2);

            while ("exit" == Console.ReadLine())
            {
                server.Stop();
            }
}

1.[连载]《C#广播发表(串口和网络)框架的规划与贯彻》

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

2.动用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)塑造系统的全体方案

3.C#工业物联网和集成系统解决方案的才干门路(数据源、数据收罗、数据上传与选取、ActiveMQ、Mongodb、WebApi、手提式有线电话机App)

5.ServerSuperIO开源地址:

物联网&集成手艺(.NET卡塔尔(英语:State of Qatar) QQ群54256083 

 

9. 探讨过滤器,消除生机勃勃包多发、粘包、冗余数据  

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

9.2    实际难题

参照公约:《连载 | 物联网框架ServerSuperIO教程》-4.如开辟风华正茂套设备驱动,同不常间帮助串口和网络通信

     多包发送数据是应用碰着中的黄金时代种状态或二个难题,实际不是我们会那样其实使用,而是说在抽出进程中数次选拔数据技术完好选择客商端二回发送的数额,恐怕是因为互连网情状或发送数据端形成的,暗意如下图:

美高梅163888 1 

     举个例子实时数据的完整包为:55 AA 00 61 43 7A 00 00 43 B4 15 0D。那么选用数据的时候,第叁次收到到:55 AA 00 61 43 7A 00 00 43 B4 15,第三遍收受:0D。按报纸发表公约应该能够把那五遍接纳的多寡开展机动拼接,产生总体的数据并举办剖析。

     ServerSuperIO设置了左券过滤器,能够消除这些标题,如下图:

 美高梅163888 2

    ServerSuperIO设置了磋商过滤器,能够缓和这一个主题素材,如下图:

FixedEndReceiveFliter:固定结尾的磋商过滤器。 FixedHeadAndEndReceiveFliter:固定开端和末段的会谈过滤器。 FixedHeadAndLengthReceiveFliter:固定带头和长度的争论过滤器。 FixedHeadReceiveFliter:固定最初的合同过滤器。 FixedLengthReceiveFliter:固定长度的合计过滤器。

    这5个过滤器都世襲自IReceiveFilter接口,也足以世袭那几个接口实行三遍开垦,定制本身的斟酌过滤器。代码工程如下图:

美高梅163888 3 

《连载 | 物联网框架ServerSuperIO教程》- 3.设施驱动介绍

《连载 | 物联网框架ServerSuperIO教程》- 9. 磋商过滤器,肃清意气风发包多发、粘包、冗余数据,冗余是什么意思

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍

《连载 | 物联网框架ServerSuperIO教程》1.4种简报情势机制。

《连载 | 物联网框架ServerSuperIO教程》2.劳动实例的布局参数表达

《连载 | 物联网框架ServerSuperIO教程》- 3.设施驱动介绍

《连载 | 物联网框架ServerSuperIO教程》-4.如开荒风流倜傥套装置驱动,同期扶植串口和互联网通讯。

《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通信方式开荒及注意事项。

《连载 | 物联网框架ServerSuperIO教程》- 6.并发通信方式开垦及注意事项

《连载 | 物联网框架ServerSuperIO教程》- 7.限制通信格局开采及注意事项

《连载 | 物联网框架ServerSuperIO教程》- 8.单例通信形式开采及注意事项


 

目       录

  1. 共谋过滤器,解除豆蔻梢头包多发、粘包、冗余数据... 2

9.1  概述... 2

美高梅163888,9.2 实际难点... 2

9.3 5种过滤器及一次开拓... 5

9.4 设备驱动开拓注意事项... 6

9.5 宿主程序服务实例配置注意事项... 6

9.1  概述... 2

9.4    设备驱动开拓注意事项

     对于开拓设备驱动,在初阶化进度中能够扩张那一个驱动的商业事务过滤器,代码如下:

public override void Initialize(string devid)
{
            this.Protocol.InitDriver(this.GetType(),new FixedHeadAndEndReceiveFliter(new byte[] {0x55,0xaa},new byte[] {0x0d} ));
……
}

《连载 | 物联网框架ServerSuperIO教程》- 7.约束通信方式开采及注意事项

9.4    设备驱动开垦注意事项

     对于开辟设备驱动,在伊始化进度中能够扩充那些驱动的情商过滤器,代码如下:

public override void Initialize(string devid)
{
            this.Protocol.InitDriver(this.GetType(),new FixedHeadAndEndReceiveFliter(new byte[] {0x55,0xaa},new byte[] {0x0d} ));
……
}

《连载 | 物联网框架ServerSuperIO教程》- 6.并发通信情势开拓及注意事项

《连载 | 物联网框架ServerSuperIO教程》- 8.单例通信方式开采及注意事项

目       录

《连载 | 物联网框架ServerSuperIO教程》-4.如开采意气风发套设备驱动,同不经常候协助串口和互连网通讯。

郑重声明:本文版权归美高梅163888所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。