chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SFDB - 專為記錄型數(shù)據(jù)存儲而生

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:未知 ? 2023-10-24 10:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Simple and Fast


SFDB 即 Simple File Database, 一個 簡單 的文件型數(shù)據(jù)庫,使用 簡單,移植 簡單,功能 簡單,原理 簡單,一切都很 簡單,一切都很 快。適用于 固定長度 的 記錄型 數(shù)據(jù)存儲,類似于時序數(shù)據(jù)庫,可用于存儲歷史記錄、報警記錄、日志等。

如果你的項目需要記錄數(shù)據(jù),且數(shù)據(jù)的長度或最大長度是固定的,已存入的數(shù)據(jù)不需要修改,同時需要快速清空和基于 記錄條數(shù) (從第幾條開始,查多少條數(shù)據(jù))的查詢,而你的項目恰好有個文件系統(tǒng),那么 SFDB 可能適合你。

特性

  • 使用文件進行存儲

  • 簡單的數(shù)據(jù)寫入接口

  • 到達上限時自動從頭覆蓋

  • 支持順序與倒序查詢

  • 支持從任意條數(shù)開始查詢

  • 支持清空(重置)數(shù)據(jù)庫

使用篇


本篇基于 HMI-Board 來演示 SFDB 的使用。

創(chuàng)建工程

1. 使用 RT-Thread Studio 基于 HMI-Board 開發(fā)板創(chuàng)建一個項目。選項都保持默認即可。

wKgZomU3KwmAZAfuAACVAYoYwK8947.png

2. 創(chuàng)建完成后打開 RT-Thread Settings,選中 Enable SDCARD filesystem 打開文件系統(tǒng)。

wKgZomU3KwmADF1pAACd82sc6i8822.jpg

3. 在組件配置中打開 RTC 設(shè)備驅(qū)動,并使能 使用軟件模擬RTC設(shè)備選項(提供給文件系統(tǒng)使用)。

wKgZomU3KwmAfWDxAACMpodZc7Q681.jpg

4.添加 SFDB 軟件包。

wKgZomU3KwmARL9cAAB9lGBaaGI941.png

5. 勾選 SFDB 配置項的 Use sfdb example 打開示例代碼。

wKgZomU3KwmAHahfAAB6GTVJ8SE079.jpg

6. 全部配置完進行保存,當前軟件包會就被應(yīng)用到項目中。

編譯及下載

在編譯之前,我們需要修改一下例程的配置,來適配我們的文件系統(tǒng)目錄。打開 packages/sfdb-v0.0.2/examples/rtthread/example.c,找到宏定義 TEST_FILE_PATH,將其修改為 /test.sdb。

wKgZomU3KwqAVrmHAAAmASskF9c103.png

此處需要注意,sfdb 在不存在當前文件時會自動創(chuàng)建,但如果路徑中包含有多層目錄,則這些文件夾必須存在,即 sfdb 不會自動創(chuàng)建文件夾。

wKgZomU3KwuADstCAABXvXZdzgQ836.jpg

修改完路徑配置后即可編譯代碼。

控制臺看到上圖的信息即編譯成功,此時進行程序燒錄。

運行示例

程序下載完成后連接并打開終端,按下 TAB 鍵可以看到命令行中出現(xiàn)了兩條 SFDB 的命令:

wKgZomU3KwuAcnN2AADSal2L3a0492.jpg

此時說明 SFDB 已經(jīng)成功運行起來了。而這兩條命令作用如下:

  • sfdb_test:啟動 SFDB 寫入測試,系統(tǒng)會持續(xù)寫入到設(shè)定的上限值

  • sfdb_read:讀取測試數(shù)據(jù)庫內(nèi)的數(shù)據(jù)。

寫入測試

例程中設(shè)定的數(shù)據(jù)庫存儲上限為10000條,同時會寫入10100條數(shù)據(jù)。接下來我們使用 sfdb_test 來啟動寫入測試:

wKgZomU3Kw2AR_gVAAAQWeBqqdo558.png

可以看到日志中完整寫入了10100條數(shù)據(jù),而且每條數(shù)據(jù)的寫入時間也都維持在 5-10 ms,并沒有隨著寫入數(shù)量的增多而增大。

讀取測試

sfdb_read命令的形式有兩種:

  • sfdb_read 讀取數(shù)據(jù)庫基本信息

  • sfdb_read [offset] [number] [order(0:asc 1:dsc)] 根據(jù)orderoffset中讀取number條數(shù)據(jù)

1. 基本信息讀取

基本信息不需要輸入?yún)?shù),直接 sfdb_read 即可:

wKgZomU3Kw2AJ1w4AAANfo1fACo654.png

可以看到,數(shù)據(jù)庫的基本信息包括:

  1. 當前最新數(shù)據(jù)的索引(容量10000,寫入10100,多出來的將會從最老的數(shù)據(jù)開始覆蓋)

  2. 數(shù)據(jù)庫中的總有效數(shù)據(jù)

  3. 每條數(shù)據(jù)的長度

這些數(shù)據(jù)與我們的配置和寫入也是完全一致的,說明我們剛才數(shù)據(jù)庫的創(chuàng)建及寫入操作是成功的。

2. 數(shù)據(jù)讀取

讀取的 order 為讀取順序,其中0為從最老的數(shù)據(jù)開始讀,1為從最新的數(shù)據(jù)開始讀:

- 1. 正序讀?。◤呐f到新)

wKgZomU3Kw2ASbZqAAAhYDSLqDM695.png

- 2.倒序讀?。◤男碌脚f)

wKgZomU3Kw2AFsUtAAAhrRabQ7Y473.png

- 3. 注意

在倒序讀取模式下,由于保留了讀取性能, buf 的數(shù)據(jù)仍然是順序的,使用者需要手動處理 buf 中的數(shù)據(jù)順序。當數(shù)據(jù) 1-100 依次存入時,若以倒序從 offset 為 0 的位置讀取 10 條數(shù)據(jù),存入 buf 中,buf 中的數(shù)據(jù)順序為 91 92 93 94 95 96 97 98 99 100 ,而非 100 99 98 97 96 95 94 93 92 91。使用者可以在應(yīng)用層可以參考例程通過索引倒轉(zhuǎn)的形式實現(xiàn)數(shù)據(jù)順序的倒轉(zhuǎn),如下:


		

1ret=sfdb_read(&sfdb,data_buf,data_sz,offset,number,order); 2for(inti=0;i3if(order==SFDB_READ_ASC){ 4print_index=i; 5}else{ 6print_index=ret-i-1; 7} 8SF_LOG("%-5d:%s",offset+i+1,(char*)&data_buf[print_index*sfdb.hdr.record_len]); 9}

移植篇


如果需要在別的平臺使用SFDB,移植起來也是非常方便。僅需參考 sfdb_port.c 實現(xiàn) sfdb_fs_t 里面的文件操作接口,以及在 sfdb_port.h 中包含當前平臺所需要的頭文件并實現(xiàn) SF_MEMCPY、SF_MEMSETSF_LOG 宏定義即可。

接口結(jié)構(gòu)如下:


		

1typedefstruct_db_fs{ 2int(*op)(struct_sfdb*db,constchar*path,intflags);//Openfile 3int(*cl)(void*fd);//Closefile 4int(*sy)(void*fd);//Syncfile 5size_t(*rd)(void*fd,void*buf,size_tlen);//Readfile 6size_t(*wr)(void*fd,constvoid*buf,size_tlen);//Writefile 7size_t(*sk)(void*fd,size_toffset);//Setfileposition 8int(*rm)(constchar*path);//Deletefile 9}sfdb_fs_t;

RT-Thread 下的移植示例:


		

1//sfdb_port.c 2staticintfs_open(sfdb_t*db,constchar*path,intflags){ 3intoflags=O_RDWR; 4if(flags&SFDB_O_CREATE)oflags|=O_CREAT; 5db->fd=(void*)open(path,oflags); 6if((int)db->fd0){ 7return-1; 8}else{ 9return0; 10} 11} 12staticintfs_close(void*fd){ 13if(fd>=0){ 14close((int)fd); 15return0; 16}else{ 17SF_LOG("invalidfd%d,closefailed",(int)fd); 18return-1; 19} 20} 21staticintfs_sync(void*fd){returnfsync((int)fd);} 22staticsize_tfs_read(void*fd,void*buf,size_tlen){returnread((int)fd,buf,len);} 23staticsize_tfs_write(void*fd,constvoid*buf,size_tlen){returnwrite((int)fd,buf,len);} 24staticsize_tfs_seek(void*fd,size_toffset){ 25intret=0; 26ret=lseek((int)fd,offset,SEEK_SET); 27if(ret0)return0; 28returnret; 29} 30staticintfs_remove(constchar*path){returnunlink(path);} 31sfdb_fs_tsfdb_fs={ 32.op=fs_open, 33.cl=fs_close, 34.sy=fs_sync, 35.rd=fs_read, 36.wr=fs_write, 37.sk=fs_seek, 38.rm=fs_remove, 39};


		

1//sfdb_port.h 2#include 3#include 4#include 5#include 6#include 7#include 8#defineSF_MEMCPYrt_memcpy 9#defineSF_MEMSETrt_memset 10#defineSF_LOG(format,...)rt_kprintf("[SFDB]:"format" ",##__VA_ARGS__)

源碼倉庫


詳細的API說明可以到源碼的倉庫查看:

Github:https://github.com/WKJay/sfdb

Gitee:https://gitee.com/wangjunjie997

———————End——————

wKgZomU3Kw-AYtuHAHiX-BnG6Ho047.gif點擊閱讀原文進入官網(wǎng)


原文標題:SFDB - 專為記錄型數(shù)據(jù)存儲而生

文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1581

    瀏覽量

    44514

原文標題:SFDB - 專為記錄型數(shù)據(jù)存儲而生

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    電能質(zhì)量在線監(jiān)測裝置的暫態(tài)事件記錄的事件記錄容量是多少?

    電能質(zhì)量在線監(jiān)測裝置的暫態(tài)事件記錄容量分為 事件臺賬容量 (僅記錄事件關(guān)鍵參數(shù))和 波形記錄容量 (完整記錄事件波形數(shù)據(jù))兩類,容量大小與設(shè)
    的頭像 發(fā)表于 12-10 17:50 ?1200次閱讀
    電能質(zhì)量在線監(jiān)測裝置的暫態(tài)事件<b class='flag-5'>記錄</b>的事件<b class='flag-5'>記錄</b>容量是多少?

    電能質(zhì)量在線監(jiān)測裝置的監(jiān)測數(shù)據(jù)如何存儲和分析?

    19862-2016、IEC 61000-4-30 等標準要求,兼顧數(shù)據(jù)完整性與分析專業(yè)性。 一、監(jiān)測數(shù)據(jù)存儲機制 數(shù)據(jù)存儲
    的頭像 發(fā)表于 12-05 17:58 ?3302次閱讀
    電能質(zhì)量在線監(jiān)測裝置的監(jiān)測<b class='flag-5'>數(shù)據(jù)</b>如何<b class='flag-5'>存儲</b>和分析?

    MCU單片機串口數(shù)據(jù)記錄儀方案

    在工業(yè)控制、環(huán)境監(jiān)測、物流追蹤等眾多領(lǐng)域,如何可靠、便捷地記錄設(shè)備串口數(shù)據(jù)成為不少工程師關(guān)注的焦點?;贛CU單片機的串口數(shù)據(jù)記錄儀方案,正以其高效集成、靈活
    的頭像 發(fā)表于 11-27 15:02 ?210次閱讀

    Fluke 962A組網(wǎng)溫濕度記錄儀在焊條存儲倉庫的應(yīng)用

    某重型裝備制造企業(yè),為保證焊接的質(zhì)量,對于焊條存儲有嚴格要求。焊條存儲庫內(nèi)需嚴格遵循相對濕度不高于 60%、溫度不低于 10℃ 的存儲標準,因此需要多時段進行溫濕度數(shù)據(jù)的查看和
    的頭像 發(fā)表于 11-06 18:06 ?1777次閱讀

    醫(yī)院專用數(shù)據(jù)記錄儀主要功能有哪些

    數(shù)據(jù)記錄儀的主要功能在于采集、存儲并分析各類數(shù)據(jù),在眾多領(lǐng)域有著廣泛而深入的應(yīng)用,為不同行業(yè)的發(fā)展帶來了新的活力與變革。那么,醫(yī)院專用數(shù)據(jù)
    發(fā)表于 09-28 14:53

    橫河GP20溫升記錄儀外部存儲使用方法 實現(xiàn)數(shù)據(jù)冗余

    橫河GP10/GP20便攜式無紙記錄儀通過內(nèi)部存儲器與外部存儲介質(zhì)結(jié)合的方式實現(xiàn)數(shù)據(jù)冗余,確保測量數(shù)據(jù)的安全性和可訪問性。外部
    的頭像 發(fā)表于 09-07 14:54 ?752次閱讀
    橫河GP20溫升<b class='flag-5'>記錄</b>儀外部<b class='flag-5'>存儲</b>使用方法 實現(xiàn)<b class='flag-5'>數(shù)據(jù)</b>冗余

    醫(yī)院專用數(shù)據(jù)記錄儀產(chǎn)品有哪些?有何推薦?

    testo CFR 數(shù)據(jù)記錄專為過程驗證設(shè)計,符合CFR法規(guī)要求,可用于醫(yī)院凍干工藝等需要高精度驗證的場景。此外,德圖產(chǎn)品均符合醫(yī)院對數(shù)據(jù)記錄
    發(fā)表于 08-25 16:02

    一款專為「鏡面/透明工件」而生的激光位移傳感器

    傳統(tǒng)激光位移傳感器遇到[?高透亮?]工件,會無法檢測,或者誤差很大。光子精密有一款專為「鏡面/透明工件」而生的激光位移傳感器。
    的頭像 發(fā)表于 08-14 10:13 ?792次閱讀
    一款<b class='flag-5'>專為</b>「鏡面/透明工件」<b class='flag-5'>而生</b>的激光位移傳感器

    軌道交通數(shù)據(jù)存儲難題如何破解?ICY DOCK工業(yè)級硬盤盒提供可靠答案!

    軌道交通高強度振動、溫差巨大及嚴苛空間限制,時刻威脅著列車監(jiān)控、乘客信息、安防錄像等關(guān)鍵數(shù)據(jù)存儲安全與穩(wěn)定訪問。設(shè)備易損、維護困難、停機風險高成為行業(yè)痛點。為此,ICYDOCK專為軌道交通
    的頭像 發(fā)表于 07-17 17:58 ?947次閱讀
    軌道交通<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>存儲</b>難題如何破解?ICY DOCK工業(yè)級硬盤盒提供可靠答案!

    存儲示波器的存儲深度對信號分析有什么影響?

    :≥1GS/s(每周期≥10點)。 存儲深度:≥1Mpts(記錄時間≥1μs)。 優(yōu)化:啟用分段存儲(如100段×10μs)或升級至10Mpts。 2. 高速數(shù)據(jù)總線(如DDR4 32
    發(fā)表于 05-27 14:39

    云翎智能礦用本安防爆巡檢記錄儀,讓隱患無所遁形的電子礦工

    云翎智能礦用本安防爆巡檢記錄儀是一款專為礦山環(huán)境設(shè)計的智能化巡檢設(shè)備,它結(jié)合了現(xiàn)代電子技術(shù)與防爆安全標準,旨在為礦山安全生產(chǎn)提供強有力的技術(shù)支撐,讓潛在的安全隱患無所遁形,堪稱礦山作業(yè)中的“電子
    的頭像 發(fā)表于 05-20 10:24 ?531次閱讀
    云翎智能礦用本安<b class='flag-5'>型</b>防爆巡檢<b class='flag-5'>記錄</b>儀,讓隱患無所遁形的電子礦工

    壓力數(shù)據(jù)記錄儀功能有哪些?點開看看就知道

    給操作人員,一旦壓力出現(xiàn)異常波動,就能及時采取措施,避免安全事故的發(fā)生。 二、數(shù)據(jù)存儲功能該記錄儀具備強大的數(shù)據(jù)存儲能力,能夠長時間、大容量
    發(fā)表于 05-19 16:39

    濕度數(shù)據(jù)記錄儀是什么?一文為你解答

    的性能和壽命。通過使用濕度數(shù)據(jù)記錄儀,廠家可以精確掌握生產(chǎn)車間和儲存環(huán)境的濕度狀況,采取相應(yīng)的措施來保證電子產(chǎn)品的質(zhì)量。 濕度數(shù)據(jù)記錄儀的工作原理并不復雜。它通常由濕度傳感器、
    發(fā)表于 03-31 10:35

    KEPServerEX 數(shù)據(jù)存儲插件

    好LogGroup之后,在Triggers里面記錄條件中,設(shè)置 “登錄靜態(tài)間隔”--否; “在數(shù)據(jù)更改時記錄”---是 這樣數(shù)據(jù)就會在變化的時候才會
    的頭像 發(fā)表于 02-28 14:47 ?583次閱讀
    KEPServerEX <b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>存儲</b>插件

    數(shù)據(jù)記錄儀的計數(shù)原理和應(yīng)用場景

    數(shù)據(jù)記錄儀是一種用于測量、記錄和分析各種數(shù)據(jù)的設(shè)備,其計數(shù)原理和應(yīng)用場景可以歸納如下: 一、計數(shù)原理數(shù)據(jù)
    發(fā)表于 02-24 14:28