[发明专利]一种从环形缓冲区读取数据的方法在审
申请号: | 201310352488.X | 申请日: | 2013-08-14 |
公开(公告)号: | CN104375952A | 公开(公告)日: | 2015-02-25 |
发明(设计)人: | 韦云青 | 申请(专利权)人: | 南宁市跃龙科技有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;G06F3/06 |
代理公司: | 深圳冠华专利事务所(普通合伙) 44267 | 代理人: | 诸兰芬 |
地址: | 530000 广西壮族自治区南宁市高新*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 环形 缓冲区 读取 数据 方法 | ||
技术领域
本发明涉及数据读取控制技术,尤其是涉及一种从环形缓冲区读取数据的方法。
背景技术
环形缓冲区(Ring Buffer)是生产者和消费者模型中常用的数据结构。生产者将数据放入数组的尾端,而消费者从数组的另一端移走数据,当达到数组的尾部时,生产者绕回到数组的头部。如果只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区。写入索引只允许生产者访问并修改,只要写入者在更新索引之前将新的值保存到缓冲区中,则读者将始终看到一致的数据结构。同理,读取索引也只允许消费者访问并修改。
现有单片机串口缓冲区算法中,针对缓冲区数据的读取一直都采用等同间隔时间访问的方式。当缓冲区生产者(数据进入)与消费者(对缓冲区数据读取)的速度相等时,这是理想的情况。此时生产者生产的和消费者支出平衡。当生产者速度加快,而消费者速度不变,此时略有剩余,而因为有环形缓冲区存在,此时还不会造成数据拥堵。当生产者速度快到消费者消费不及时,此时会产生数据拥堵。而当生产者生产速度变慢时,消费者的等间隔访问时又不一定都会有生产产出,造成消费者访问浪费,浪费了软件循环时间负荷的浪费。当然上述结果可能不会出现,前提是消费者的时间间隔要足够小以满足最大通信负荷下仍能保持一定的消费,或者所定义的数据缓冲区存储空间足够大。
发明内容
本发明提出一种从环形缓冲区读取数据的方法,以解决目前环形缓冲区的数据存入与数据读取不同步导致数据容易丢失的技术问题。
本发明采用如下技术方案实现:一种从环形缓冲区读取数据的方法,其包括步骤:
在单片机的存储器中设定环形缓冲区,并在环形缓冲区中设定若干个分别每次写入数据或读出数据对应的存储单元;
定义用于存入数据时对环形缓冲区进行标记的存入指针以及用于在读出数据时对环形缓冲区进行标记的读出指针;
设置一个触发产生中断以从环形缓冲区的一个存储单元中读出数据的定时器;
当判断存入指针所指向的下一个存储单元与读出指针所指向的存储单元相同时,将触发读出数据的定时器的定时时间缩短。
其中,所述一种从环形缓冲区读取数据的方法还包括步骤:判断读出指针所指向的下一个存储单元是否为空或未有新的数据,若是,将触发读出数据的定时器的定时时间延长。
其中,所述一种从环形缓冲区读取数据的方法还包括步骤:预设该定时器的初始定时时间T0,以及定时时间的调整幅度T1。
其中,将定时器的当前定时时间减去调整幅度T1作为新的定时时间,以此使定时器的定时时间缩短。
其中,将定时器的当前定时时间加上调整幅度T1作为新的定时时间,以此使定时器的定时时间延长。
与现有技术相比,本发明具有如下有益效果:
本发明通过动态调整环形缓冲区中数据的读出频率,确保数据存入与数据读出大致同步,既可以防止写入数据溢出丢失又可以防止读出为空或无效的数据,从而可以提高串口通信的可靠性。
附图说明
图1是环形缓冲区的示意图;
图2是本发明一个实施例的流程示意图。
具体实施方式
本发明实现对所定义串口数据缓冲区数据的读取,实现通讯繁忙时与通讯闲时扫描次频率的改变。本法利用定时器定时读取缓冲区数据,而且在通讯忙时,会使定时器定时时间缩短,单位时间内对数据缓冲区访问次数增加,保证及时读取通讯的数据。在通讯较为空闲时,定时器定时时间将会增加,单位时间内对缓冲区访问次数减少,从而达到优化软件周期负荷的目的。
如图1所示,定义一个缓冲区数组A[0,n],长度n+1是可按实际定义。n为大于1的自然数。接收缓冲区数组中每一个元素对应环形缓冲区中每次读写的存储单元。定义数组的同时,又定义了存入指针和读出指针,存入指针是用在当存入数据时对缓冲区空间的标记,读出指针是用在当读出数据时对缓冲区空间的标记。通俗的说法就是存入指针指向的是我所填到的具体空间,读出指针指向的是我所读出的空间。两个指针初始时都指向数组的第1个空间(0下标)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南宁市跃龙科技有限公司,未经南宁市跃龙科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310352488.X/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置