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





