[发明专利]数据的缓冲方法、装置、计算机和可读存储介质有效
申请号: | 201911412972.0 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111245742B | 公开(公告)日: | 2022-03-08 |
发明(设计)人: | 茅张煜;翁九星 | 申请(专利权)人: | 宁波舜宇智能科技有限公司 |
主分类号: | H04L49/90 | 分类号: | H04L49/90;H04L49/901 |
代理公司: | 杭州华进联浙知识产权代理有限公司 33250 | 代理人: | 金无量 |
地址: | 315400 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据 缓冲 方法 装置 计算机 可读 存储 介质 | ||
本发明公开了一种数据的缓冲方法、装置、计算机和可读存储介质,该方法包括:获取写入数据,将该写入数据写入环形缓冲队列的写入空间,其中,获取单向队列的头数据,复制该头数据到该单向队列的结尾组成该环形缓冲队列;获取读取指令,根据该读取指令读取该环形缓冲队列的有效帧数据,解决了数据流格式的数据缓冲分包粘包和处理效率低的问题,防止了数据缓冲分包粘包,提高了处理效率。
技术领域
本发明涉及数据处理领域,具体而言,涉及数据的缓冲方法、装置、计算机和可读存储介质。
背景技术
数据通信协议中分为两种格式:数据帧格式和数据流格式。如传输控制协议(Transmission Control Protocol,简称为TCP)和RS232协议都是属于典型的数据流格式,数据流格式需要定义数据的帧头帧尾,并放置在足够大缓冲(Buffer)中,通过分析缓冲中的帧头和帧尾来提取数据帧。
在相关技术中,缓存数据流的结构一般是先进先出的环形缓冲队列,目前一般的环形缓冲队列的实现方式为:环形缓冲区有一个读指针和一个写指针,读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区,通过移动移动读指针和写指针就可以实现缓冲区的数据读取和写入。
然而,基于相关技术的环形缓冲的基本实现原理和模型,在实际应用中存在问题:单向队列首尾相衔时,会出现帧头帧尾数据被截断,导致分包粘包、程序复杂,处理效率低,甚至存在处理错误的情况发生,例如,帧头数据被截断的情况:帧头的标志位信息在缓冲队列尾部,但是帧头的长度信息在缓冲队列头部,由于内存地址不连续,无法用一个结构指针去判断帧头的信息正确性,只能用内存地址偏移再拼接的方式去重新拷贝数据构建一个新帧头,再对帧头的信息进行正确性判断,这样在搜寻帧头时不可避免的导致缓冲队列的性能下降。
另外,在相关技术中的产品线上,机器人和PLC设备很多都是嵌入式设备,工作性能差,直接在局域网内用TCP中的套字节(socket)协议做通讯协议,并没有考虑分包粘包的问题。
针对相关技术中,数据流格式的数据缓冲分包粘包和处理效率低的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中,数据流格式的数据缓冲分包粘包和处理效率低的问题,目前尚未提出有效的解决方案,以至少解决上述问题。
根据本发明的一个方面,提供了一种数据的缓冲方法,该方法包括:
获取写入数据,将所述写入数据写入环形缓冲队列的写入空间,其中,获取单向队列的头数据,复制所述头数据到所述单向队列的结尾组成所述环形缓冲队列;
获取读取指令,根据所述读取指令读取所述环形缓冲队列的有效帧数据。
在其中一个实施例,所述根据所述读取指令读取所述环形缓冲队列的有效帧数据包括:
在所述环形缓冲队列中,通过帧头指针搜寻帧数据的帧头标志;
根据所述帧头标志获取帧长度,帧尾指针偏移所述帧长度获取帧尾标志和校验码;
判断所述帧尾标志是否正确和验证所述校验码是否通过;
在所述判断正确和所述验证通过的情况下,判断所述帧数据为有效帧数据;
在所述判断错误或者所述验证不通过的情况下,丢弃所述帧数据。
在其中一个实施例,所述写入空间包括第一写入空间和第二写入空间,将所述写入数据写入环形缓冲队列的写入空间包括:
在所述写入数据的大小大于所述第一写入空间的情况下,将所述写入数据的第一部分数据写入所述第一写入空间,将所述写入数据的第二部分数据写入所述第二写入空间;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于宁波舜宇智能科技有限公司,未经宁波舜宇智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911412972.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种发票数据的获取方法和装置
- 下一篇:一种水压凿岩机防空打缓冲系统
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置