CN114500686A - 一种观察者-职责链模式的串口固定长度多协议处理方法 - Google Patents
一种观察者-职责链模式的串口固定长度多协议处理方法 Download PDFInfo
- Publication number
- CN114500686A CN114500686A CN202210091880.2A CN202210091880A CN114500686A CN 114500686 A CN114500686 A CN 114500686A CN 202210091880 A CN202210091880 A CN 202210091880A CN 114500686 A CN114500686 A CN 114500686A
- Authority
- CN
- China
- Prior art keywords
- protocol
- observer
- length
- data
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种观察者‑职责链模式的串口固定长度多协议处理方法,包括如下步骤:步骤一,使用“观察者模式”进行协议层和底层之间的信息交互;即将底层缓冲区作为被观察者,协议层各个协议作为观察者,当底层缓冲区内数据发生变化时,使用帧长度识别的方式进行筛选,选择性的通知观察者;步骤二,使用“职责链模式”进行协议层内部处理;即将步骤一筛选出的多组观察者逐一对获得数据进行协议解析处理;若该数据已被某一观察者校验通过,则结束当前进程,不在进行其他观察者的协议解析处理。该方法可应用在电源模块中,能够实现不同的协议和数据之间快速、高效的适配;此外,增加一个新协议,只需在协议层加入该协议具体解析即可,各协议之间互相解耦,从而实现了即插即用、兼容性好、程序修改简单的技术效果。
Description
技术领域
本发明涉及通信技术领域,具体为一种串口固定长度多协议处理方法。
背景技术
无论是充电站的充电桩中使用的电源模块,还是车载电源模块抑或军品电源、电力电源模块,一款模块的开发可能存在多个不同客户,而不同客户的通讯协议各不相同,为了满足不同客户的需求,以往采用修改硬件电路的策略。但是这类策略每增加新的通信协议,需要重新修正硬件电路,兼容性差,成本高。
如今,随着计算机软件的发展,各企业、科研单位均大力研究开展用软件程序设计的方法来处理多协议通信。而程序设计多采用行为类模式,常见的行为类模式有:职责链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。但是,目前开展的研究采用上述一种行为模式,且很少应用于通信领域。
发明内容
针对现有技术的不足,本发明将两种行为模式观察者模式和职责链模式有机的结合在一起,能够实现不同的协议和数据之间快速、高效准确的适配;还能实现新协议的即插即用,具有兼容性好、程序修改简单的技术效果。
为实现以上目的,本发明通过以下技术方案予以实现:一种“观察者-职责链模式”的串口固定长度多协议处理方法,包括如下步骤,步骤一,使用“观察者模式”进行协议层和底层之间的信息交互;即将底层缓冲区作为被观察者,协议层各个协议作为观察者,当底层缓冲区内数据发生变化时,选择性的通知观察者;步骤二,使用“职责链模式”进行协议层内部处理;即将步骤一选择出的多组观察者逐一对获得数据进行协议解析处理;若该数据已被某一观察者校验通过,则结束当前进程,不在进行其他观察者的协议解析处理。
进一步地,使用注册函数:将观察者注册至所需的被观察者列表中,其中注册的内容包含两个信息:协议的回调函数和对应协议的帧长度。协议的回调函数是为了被观察者通知观察者时使用,协议的帧长度是为了确定被观察者通知观察者的条件。
进一步地,使用通知函数:通知函数包括两部分功能:功能一:通知对应的协议处理数据具体实现为:判断被观察者通知观察者的条件,通知的原则为筛选性通知,并非通知全部协议。筛选方式:一,根据注册的各个协议的帧长度信息,确定所有注册在案的帧长度的最大值和最小值。二,通知开始条件:缓冲区内未处理的数据长度大于最小帧长度,触发通知机制。三,通知对象:缓冲区内未处理的数据长度大于等于当前协议的帧长度,则通知该协议,若不大于等于当前协议的帧长度,则不进行通知。四,通知方式,使用被观察者列表中注册的协议回调函数进行通知。
进一步地,若数据长期被任何协议未校验通过,读索引往下移动1,具体解释如下:若观察者返回一直为0,认为一直没有协议校验通过,当缓冲区内未处理的数据长度大于最大帧长度时,认为此时已经通知了注册在案的所有协议,依然不存在校验通过的协议,则该帧极有可能是错误帧,此时缓冲区内未处理的数据长度减少1(即读索引值往下移动1)。
进一步地,使用协议解析函数:通知完成后,进行协议解析和回执处理。观察者处理方式即协议解析处理方式:被观察者将缓冲区内未处理的数据拷贝过去,进行解析处理,若校验通过,则观察者返回通过时对应的数据长度,若校验未通过,则观察者返回0。
进一步地,使用读索引移动函数:针对上一步回执结果,若校验通过,则需要被观察者进行读索引值的移动,具体的处理方式:若观察者返回非0,则认为校验通过,被观察者认为数据已被正确处理,缓冲区内未处理的数据长度减少对应的长度(即读索引值往下移动校验正确的协议帧长度),同时置位校验通过标志位,结束当前进程。
本发明具有如下功能:
功能1:使用“观察者模式”进行协议层与底层之间的信息交互。观察者模式:底层缓冲区作为被观察者,协议层各个协议作为观察者,当缓冲区内数据发生变化时,通知观察者获取数据,并进行协议解析,通过该流程实现协议的快速适配。
功能2:为实现功能1中通知观察者时,高效快速适配,不是通知所有的观察者,而是使用帧长度识别的方式进行有筛选通知。
功能3:使用“职责链模式”进行协议层内部处理,即:即使功能2中筛选出多组待通知的协议,若一组数据已被校验通过,则结束当前进程,不进行下面协议的解析处理,优化了处理过程。
功能4:协议层与底层分层处理,协议层将观察者注册到被观察者列表中,被观察者发生变化时,观察者拷贝数据进行处理,将最后处理的结果返回被观察者,整个过程,增加一个协议,只需在协议层加入协议具体解析及注册至被观察列表中即可,层与层之间、协议层内部相互解耦,互不干扰,即插即用,程序修改简单。
附图说明
图1为本发明单串口“观察者-职责链模式”架构图;
图2为本发明多串口“观察者-职责链模式”架构图;
图3为本发明“观察者-职责链模式”流程图;
图4为本发明“观察者-职责链模式”通知机制流程图;
图5为本发明“观察者-职责链模式”协议解析流程图;
图6为本发明“观察者-职责链模式”缓冲区数据读取流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种技术方案:一种“观察者-职责链模式”的串口固定长度多协议处理方法,包括如下步骤,步骤一,使用“观察者模式”进行协议层和底层之间的信息交互;即将底层缓冲区作为被观察者,协议层各个协议作为观察者,当底层缓冲区内数据发生变化时,选择性的通知观察者;步骤二,使用“职责链模式”进行协议层内部处理;即将步骤一选择出的多组观察者逐一对获得数据进行协议解析处理;若该数据已被某一观察者校验通过,则结束当前进程,不在进行其他观察者的协议解析处理。
参阅图1,在单串口“观察者-职责链模式”架构图中:
被观察者:底层缓冲区,即存放接收到的数据帧。
观察者:协议层中各个协议,即具体解析各个协议。
职责链模式:协议层中各个符合指定要求协议串联成一条直线,让符合指定要求的协议均有机会接收请求,并沿着直线传递请求,直到有协议处理它为止。
参阅图2,对于多串口芯片,每个串口端口可以申请一个对应该端口的缓冲区,即被观察者个数与串口端口个数一一对应,同时,每个被观察者对应各自的多个观察者,一个串口端口对应一个被观察者即一个缓冲区;每个缓冲区对应多个观察者,即多个协议;每个协议根据具体要求注册至各自的被观察者列表中。
参阅图3,“观察者-职责链模式”具体实现流程包括4个步骤,
步骤1,使用注册函数:将观察者注册至所需的被观察者列表中,其中注册的内容包含两个信息:协议的回调函数和对应协议的帧长度。协议的回调函数是为了被观察者通知观察者时使用,协议的帧长度是为了确定被观察者通知观察者者的条件。
步骤2,使用通知函数:通知函数包括两部分功能:
功能一:通知对应的协议处理数据具体实现为:判断被观察者通知观察者的条件,通知的原则为筛选性通知,并非通知全部协议。筛选方式:1.根据注册的各个协议的帧长度信息,确定所有注册在案的帧长度的最大值和最小值。2.通知开始条件:缓冲区内未处理的数据长度大于最小帧长度,触发通知机制。3.通知对象:缓冲区内未处理的数据长度大于等于当前协议的帧长度,则通知该协议,若不大于等于当前协议的帧长度,则不进行通知。4.通知方式,使用被观察者列表中注册的协议回调函数进行通知。
功能二:数据长期被任何协议未校验通过,读索引往下移动1,具体解释如下:若观察者返回一直为0,认为一直没有协议校验通过,当缓冲区内未处理的数据长度大于最大帧长度时,认为此时已经通知了注册在案的所有协议,依然不存在校验通过的协议,则该帧极有可能是错误帧,此时缓冲区内未处理的数据长度减少1(即读索引值往下移动1)。
步骤3,使用协议解析函数:通知完成后,进行协议解析和回执处理,观察者处理方式即协议解析处理方式:被观察者将缓冲区内未处理的数据拷贝过去,进行解析处理,若校验通过,则观察者返回通过时对应的数据长度。若校验未通过,则观察者返回0。
步骤4,使用读索引移动函数:即针对步骤3的回执结果,若校验通过,则需要被观察者进行读索引值的移动,具体的处理方式:若观察者返回非0,则认为校验通过,被观察者认为数据已被正确处理,缓冲区内未处理的数据长度减少对应的长度(即读索引值往下移动校验正确的协议帧长度)。则结束当前进程,不在进行其他观察者的协议解析处理。
图4为图3步骤2的具体的通知机制具体流程图:首先,在每次将数据装载进缓冲区内时,均获得缓冲区内未处理的数据长度,检测未处理的数据长度是否大于最大帧长度的1.5倍(此处扩大1.5倍,留出一定裕量),若大于,则将缓冲区内的读索引下移1,同时判断是否缓冲区内所有数据均处理完成,若完成,则标志位置位,进行第二步处理,若未完成直接进行第二步处理,若未处理的数据长度是否不大于大帧长度的1.5倍,则进行第二步。
其次,判断缓冲区内未处理的数据长度是否大于最小帧长度,若大于,则提取一个注册的协议帧长度,进行第三步处理,若不大于,则结束。
然后,判断是否遍历完所有协议,若没遍历完所有协议,则判断缓冲区内未处理的数据长度是否大于等于当前协议的帧长度,若成立,则通知该协议,进入第四步,若不大于等于当前协议的帧长度,则不进行通知,继续检测下一个协议,直到所有协议遍历完成为止。
最后,检测当前协议的校验通过标志位是否置位,若置位,则清除校验通过标志位,结束遍历流程,若没置位,则继续检测下一个协议。
值得注意的是:若需要通知A、B、C三个协议,当A协议校验通过时,缓冲区内的读索引向下移动该协议对应的数据长度,将不再通知B和C,这也是职责链功能的实现。
图5为图3步骤3的具体的协议解析具体流程图,其中,将缓冲区内数据拷贝出来进行处理,不是直接对缓冲区内数据进行读索引移动处理。
图6为数据拷贝出来放置于缓冲区内的流程图,其中,拷贝过程移动的读索引为读索引的临时值,而非读索引的实际值。缓冲区内数据读取为循环读取,循环长度为缓冲区内数据的总长度。
上述替代方案也均属于本发明的保护范围,因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (9)
1.一种“观察者-职责链模式”的单串口固定长度多协议处理方法,其特征在于:步骤一,使用“观察者模式”进行协议层和底层之间的信息交互:即将底层缓冲区作为被观察者,协议层各个协议作为观察者,当底层缓冲区内数据发生变化时,选择性的通知观察者;步骤二,使用“职责链模式”进行协议层内部处理:即将步骤一选择出的多组观察者逐一对获得数据进行协议解析处理;若该数据已被某一观察者校验通过,则结束当前进程,不在进行其他观察者的协议解析处理。
2.根据权利要求1所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,其特征在于:将观察者对应协议的帧长度和协议的回调函数注册至所需的被观察者列表中。
3.根据权利要求2所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,其特征在于:使用帧长度识别的方式进行筛选,选择性的通知观察者。
4.根据权利要求3所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,其特征在于:根据注册的各个协议的帧长度信息,确定所有注册在案的帧长度的最大值和最小值;当缓冲区内未处理的数据长度大于最小帧长度,触发通知机制。
5.根据权利要求4所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,其特征在于:缓冲区内未处理的数据长度大于等于当前协议的帧长度,则使用被观察者列表中注册的协议回调函数进行通知;若不大于等于当前协议的帧长度,则不进行通知。
6.根据权利要求5所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,通知完成后,进行协议解析和回执处理:被观察者将缓冲区内未处理的数据拷贝过去,进行解析处理,若校验通过,则观察者返回通过时对应的数据长度;下移缓冲区内的读索引,缓冲区内未处理的数据长度减少对应的长度,同时置位校验通过标志位,结束当前进程,不在进行其他观察者的协议解析处理;若校验未通过,则观察者返回0,则继续检测下一个协议。
7.根据权利要求6所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,拷贝过去的缓冲区内未处理的数据长度为该协议的长度。
8.根据权利要求2所述的一种“观察者-职责链模式”的单串口固定长度多协议处理方法,其特征在于:协议层与底层分层处理,协议层将观察者注册到被观察者列表中,被观察者发生变化时,观察者拷贝数据进行处理,将最后处理的结果返回被观察者。
9.一种“观察者-职责链模式”的多串口固定长度多协议处理方法,其特征在于:步骤一,使用“观察者模式”进行协议层和底层之间的信息交互:每个串口端口申请一个对应该端口的底层缓冲区,底层缓冲区作为被观察者,协议层各个协议作为观察者,被观察者个数和串口端口个数一一对应,每个被观察者对应多个观察者;当底层缓冲区内数据发生变化时,选择性的通知对应的观察者;步骤二,使用“职责链模式”进行协议层内部处理:即将步骤一每个串口选择出的多组观察者逐一对获得数据进行协议解析处理;若该数据已被某一观察者校验通过,则结束当前进程,不在进行其他观察者的协议解析处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210091880.2A CN114500686B (zh) | 2022-01-26 | 2022-01-26 | 一种观察者-职责链模式的串口固定长度多协议处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210091880.2A CN114500686B (zh) | 2022-01-26 | 2022-01-26 | 一种观察者-职责链模式的串口固定长度多协议处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114500686A true CN114500686A (zh) | 2022-05-13 |
CN114500686B CN114500686B (zh) | 2023-09-19 |
Family
ID=81473685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210091880.2A Active CN114500686B (zh) | 2022-01-26 | 2022-01-26 | 一种观察者-职责链模式的串口固定长度多协议处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114500686B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594833A (zh) * | 2012-03-09 | 2012-07-18 | 北京神州数码思特奇信息技术股份有限公司 | 一种通信协议适配方法和系统 |
US20170329555A1 (en) * | 2016-05-10 | 2017-11-16 | Ge Aviation Systems Llc | Systems and methods of subject state change notification |
CN112379976A (zh) * | 2020-11-16 | 2021-02-19 | 上海瑞家信息技术有限公司 | 一种事件处理方法、装置、移动终端及存储介质 |
CN112615882A (zh) * | 2020-12-28 | 2021-04-06 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航天测运控地面站异构资源监控数据处理方法 |
-
2022
- 2022-01-26 CN CN202210091880.2A patent/CN114500686B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594833A (zh) * | 2012-03-09 | 2012-07-18 | 北京神州数码思特奇信息技术股份有限公司 | 一种通信协议适配方法和系统 |
US20170329555A1 (en) * | 2016-05-10 | 2017-11-16 | Ge Aviation Systems Llc | Systems and methods of subject state change notification |
CN112379976A (zh) * | 2020-11-16 | 2021-02-19 | 上海瑞家信息技术有限公司 | 一种事件处理方法、装置、移动终端及存储介质 |
CN112615882A (zh) * | 2020-12-28 | 2021-04-06 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 航天测运控地面站异构资源监控数据处理方法 |
Non-Patent Citations (2)
Title |
---|
冯拓宇, 刘峰, 周华春: "可扩展IPTV网管系统框架设计", 中国有线电视, no. 06, pages 1 - 5 * |
张国强;林永峰;: "智能电表检测系统通信协议栈设计与实现", 现代电子技术, no. 11, pages 1 - 5 * |
Also Published As
Publication number | Publication date |
---|---|
CN114500686B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107194398B (zh) | 车损部位的识别方法及系统 | |
CN111382740B (zh) | 文本图片解析方法、装置、计算机设备及存储介质 | |
CN1332324C (zh) | 信息处理设备、成像设备、和电子数据移动取消方法 | |
CN111832264B (zh) | 基于pdf文件的签名位置确定方法、装置及设备 | |
CN105989001A (zh) | 图像搜索方法及装置、图像搜索系统 | |
CN109783781A (zh) | 基于图像识别的保单录入方法和相关装置 | |
CN102375716B (zh) | 可变数据打印方法和系统 | |
CN115359016A (zh) | 基于改进YOLOv5的PCB小目标缺陷检测方法和系统 | |
CN110796060A (zh) | 高速行车路线确定方法、装置、设备和存储介质 | |
CN114091383A (zh) | 测试序列生成方法、装置、系统及相关设备 | |
CN113468276A (zh) | 链上预言机的可信数据获取方法、装置及电子设备 | |
CN114500686B (zh) | 一种观察者-职责链模式的串口固定长度多协议处理方法 | |
CN110413523B (zh) | 引流测试方法、引流测试中台及计算机可读存储介质 | |
CN112016424A (zh) | 结合rpa和ai的图像数据处理方法与电子设备 | |
CN111222558A (zh) | 图像处理方法及存储介质 | |
CN112567375A (zh) | 形式验证方法、信息识别方法、设备和存储介质 | |
US11775729B2 (en) | Technology file process rule validation | |
CN115272764A (zh) | 允许位置偏差的图形分组方法、装置、设备及存储介质 | |
CN115422125A (zh) | 一种基于智能算法的电子文档自动归档方法与系统 | |
CN107688948A (zh) | 理赔数据处理方法、装置、计算机设备和存储介质 | |
CN115731031A (zh) | 区块链交易方法、装置及设备 | |
CN113553480A (zh) | 单据审核方法、单据审核装置和可读存储介质 | |
CN113723422A (zh) | 车牌信息确定方法、系统、设备及介质 | |
CN111831981A (zh) | 基于区块链的表决签字方法、装置、设备及存储介质 | |
CN107145436A (zh) | 软件功能验证方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |