[發(fā)明專利]一種串口通信中的雙指針環(huán)形緩沖區(qū)設(shè)計方法及系統(tǒng)在審
| 申請?zhí)枺?/td> | 202010564758.3 | 申請日: | 2020-06-19 |
| 公開(公告)號: | CN111865824A | 公開(公告)日: | 2020-10-30 |
| 發(fā)明(設(shè)計)人: | 王玉軍;姚杰;練俊君 | 申請(專利權(quán))人: | 重慶川儀自動化股份有限公司 |
| 主分類號: | H04L12/861 | 分類號: | H04L12/861;H04L12/879;G06F9/50 |
| 代理公司: | 上海光華專利事務(wù)所(普通合伙) 31219 | 代理人: | 代玲 |
| 地址: | 400700*** | 國省代碼: | 重慶;50 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 串口 通信 中的 指針 環(huán)形 緩沖區(qū) 設(shè)計 方法 系統(tǒng) | ||
本發(fā)明提供一種串口通信中的雙指針環(huán)形緩沖區(qū)設(shè)計方法及系統(tǒng),方法包括實時獲取數(shù)據(jù)狀態(tài);設(shè)置緩沖區(qū)剩余長度變量,并建立緩沖區(qū)剩余長度變量分別與讀寫數(shù)據(jù)之間的映射關(guān)系;根據(jù)讀寫數(shù)據(jù)的狀態(tài)獲取緩沖區(qū)剩余長度變量的變化,判斷靜態(tài)緩沖區(qū)的狀態(tài);當靜態(tài)緩沖區(qū)已滿時,建立動態(tài)緩沖區(qū),將新增寫入的數(shù)據(jù)寫入動態(tài)緩沖區(qū),并繼續(xù)判斷靜態(tài)緩沖區(qū)的狀態(tài);當靜態(tài)緩沖區(qū)的狀態(tài)由已滿變?yōu)槲礉M時,將動態(tài)緩沖區(qū)的數(shù)據(jù)寫入靜態(tài)緩沖區(qū);本發(fā)明通過使用靜態(tài)環(huán)形緩沖區(qū)與動態(tài)緩沖區(qū)結(jié)合的方式,自動開辟動態(tài)緩沖區(qū),避免了覆蓋以前的數(shù)據(jù),從而避免了數(shù)據(jù)丟失現(xiàn)象,同時,可以避免重復(fù)的開辟釋放動態(tài)緩沖區(qū),提高了內(nèi)存利用率,進而提高了系統(tǒng)的運行效率。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機領(lǐng)域和通信領(lǐng)域,尤其涉及一種串口通信中的雙指針環(huán)形緩沖區(qū)設(shè)計方法及系統(tǒng)。
背景技術(shù)
環(huán)形緩沖區(qū)是嵌入式系統(tǒng)軟件設(shè)計中的一種常用數(shù)據(jù)結(jié)構(gòu),廣泛應(yīng)用到數(shù)據(jù)產(chǎn)生速率和數(shù)據(jù)處理速率不匹配的場合,在設(shè)計上一般采用先入先出的方式,一般采用預(yù)先靜態(tài)分配內(nèi)存的方式,由于嵌入式系統(tǒng)的內(nèi)存資源非常有限,動態(tài)內(nèi)存管理在多數(shù)情況下的運行效率和內(nèi)存利用率都非常低,特別是頻繁進行小容量內(nèi)存單元的分配釋放,會造成內(nèi)存碎片,故多采用靜態(tài)分配的方式來實現(xiàn)。
但是,目前靜態(tài)環(huán)形緩沖區(qū)的設(shè)計存在如下問題:一方面,無法判斷緩沖區(qū)是空還是滿狀態(tài)。另一方面當緩沖區(qū)滿了,需要進行解決,如果通過保持一個元素不用,判斷為緩沖區(qū)已滿,會一直保留了一個元素空間未能使用,存在內(nèi)存浪費,存儲空間利用率不高;如果當緩沖區(qū)滿狀態(tài)時,不再寫入數(shù)據(jù),由于不再寫入數(shù)據(jù)或覆蓋原來的數(shù)據(jù),會導(dǎo)致數(shù)據(jù)丟失;如果當緩沖區(qū)寫滿時,由于不再寫入數(shù)據(jù)或覆蓋原來的數(shù)據(jù),會導(dǎo)致數(shù)據(jù)丟失。
發(fā)明內(nèi)容
鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明提供一種串口通信中的雙指針環(huán)形緩沖區(qū)設(shè)計方法及系統(tǒng),以解決上述技術(shù)問題。
本發(fā)明提供的串口通信中的雙指針環(huán)形緩沖區(qū)設(shè)計方法,包括:
實時獲取數(shù)據(jù)狀態(tài),所述數(shù)據(jù)狀態(tài)包括數(shù)據(jù)讀取和數(shù)據(jù)寫入;
設(shè)置緩沖區(qū)剩余長度變量,并建立所述緩沖區(qū)剩余長度變量分別與讀寫數(shù)據(jù)之間的映射關(guān)系;
根據(jù)讀寫數(shù)據(jù)的狀態(tài)獲取緩沖區(qū)剩余長度變量的變化,并根據(jù)所述變化判斷靜態(tài)緩沖區(qū)的狀態(tài),所述靜態(tài)緩沖區(qū)的狀態(tài)包括空、未滿和已滿;
當靜態(tài)緩沖區(qū)已滿時,建立動態(tài)緩沖區(qū),將新增寫入的數(shù)據(jù)寫入動態(tài)緩沖區(qū),并繼續(xù)判斷靜態(tài)緩沖區(qū)的狀態(tài);
當靜態(tài)緩沖區(qū)的狀態(tài)由已滿變?yōu)槲礉M時,將動態(tài)緩沖區(qū)的數(shù)據(jù)寫入所述靜態(tài)緩沖區(qū)。
可選的,當數(shù)據(jù)狀態(tài)為寫入數(shù)據(jù)時,將緩沖區(qū)剩余長度變量減1;
當數(shù)據(jù)狀態(tài)為讀取數(shù)據(jù)時,將緩沖區(qū)剩余長度變量加1;
當緩沖區(qū)剩余長度變量為0時,判斷靜態(tài)緩沖區(qū)已滿;
當緩沖區(qū)剩余長度變量與靜態(tài)緩沖區(qū)的長度相等時,判斷靜態(tài)緩沖區(qū)為空。
可選的,所述動態(tài)緩沖區(qū)包括動態(tài)內(nèi)存。
可選的,當靜態(tài)緩沖區(qū)的狀態(tài)由已滿變?yōu)槲礉M時,將動態(tài)緩沖區(qū)的數(shù)據(jù)寫入所述靜態(tài)緩沖區(qū),待動態(tài)緩沖區(qū)內(nèi)的全部數(shù)據(jù)寫完后,釋放動態(tài)緩沖區(qū)的內(nèi)存。
可選的,所述靜態(tài)緩沖區(qū)為環(huán)形緩沖區(qū)。
可選的,設(shè)置隊頭指針和隊尾指針,所述隊頭指針指向可讀數(shù)據(jù),所述隊尾指針指向可寫數(shù)據(jù),通過移動隊頭指針和隊尾指針實現(xiàn)環(huán)形緩沖區(qū)數(shù)據(jù)的寫入和讀取。
可選的,將隊頭指針和隊尾指針初始化為0,指向環(huán)形緩沖區(qū)數(shù)組的起始位,當寫入數(shù)據(jù)時隊頭指針加1,當讀取數(shù)據(jù)時隊尾指針加1。
本發(fā)明還提供一種串口通信中的雙指針環(huán)形緩沖區(qū)系統(tǒng),包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于重慶川儀自動化股份有限公司,未經(jīng)重慶川儀自動化股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/202010564758.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:夾持裝置及夾燈
- 下一篇:一種消息顯示方法、裝置及電子設(shè)備
- 通信裝置、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信方法、通信電路、通信系統(tǒng)
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信終端、通信系統(tǒng)、通信方法以及通信程序
- 通信終端、通信方法、通信裝備和通信系統(tǒng)
- 通信裝置、通信程序、通信方法以及通信系統(tǒng)
- 通信裝置、通信系統(tǒng)、通信方法及計算機可讀取的記錄介質(zhì)





