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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

Simple and Fast


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

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

特性

  • 使用文件進(jìn)行存儲(chǔ)

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

  • 到達(dá)上限時(shí)自動(dòng)從頭覆蓋

  • 支持順序與倒序查詢

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

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

使用篇


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

創(chuàng)建工程

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

wKgZomU3KwmAZAfuAACVAYoYwK8947.png

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

wKgZomU3KwmADF1pAACd82sc6i8822.jpg

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

wKgZomU3KwmAfWDxAACMpodZc7Q681.jpg

4.添加 SFDB 軟件包。

wKgZomU3KwmARL9cAAB9lGBaaGI941.png

5. 勾選 SFDB 配置項(xiàng)的 Use sfdb example 打開示例代碼。

wKgZomU3KwmAHahfAAB6GTVJ8SE079.jpg

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

編譯及下載

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

wKgZomU3KwqAVrmHAAAmASskF9c103.png

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

wKgZomU3KwuADstCAABXvXZdzgQ836.jpg

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

控制臺(tái)看到上圖的信息即編譯成功,此時(shí)進(jìn)行程序燒錄。

運(yùn)行示例

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

wKgZomU3KwuAcnN2AADSal2L3a0492.jpg

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

  • sfdb_test:?jiǎn)?dòng) SFDB 寫入測(cè)試,系統(tǒng)會(huì)持續(xù)寫入到設(shè)定的上限值

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

寫入測(cè)試

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

wKgZomU3Kw2AR_gVAAAQWeBqqdo558.png

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

讀取測(cè)試

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. 當(dāng)前最新數(shù)據(jù)的索引(容量10000,寫入10100,多出來的將會(huì)從最老的數(shù)據(jù)開始覆蓋)

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

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

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

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

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

- 1. 正序讀取(從舊到新)

wKgZomU3Kw2ASbZqAAAhYDSLqDM695.png

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

wKgZomU3Kw2AFsUtAAAhrRabQ7Y473.png

- 3. 注意

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

移植篇


如果需要在別的平臺(tái)使用SFDB,移植起來也是非常方便。僅需參考 sfdb_port.c 實(shí)現(xiàn) sfdb_fs_t 里面的文件操作接口,以及在 sfdb_port.h 中包含當(dāng)前平臺(tái)所需要的頭文件并實(shí)現(xiàn) SF_MEMCPYSF_MEMSET、SF_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__)

源碼倉庫


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

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

Gitee:https://gitee.com/wangjunjie997

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

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


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

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


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

    關(guān)注

    32

    文章

    1498

    瀏覽量

    43554

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

    功率分析儀的“存儲(chǔ)”與“數(shù)據(jù)保存”模式如何保存測(cè)量數(shù)據(jù)呢?

    數(shù)據(jù)保存”模式和“存儲(chǔ)”模式將通過差異化功能設(shè)定滿足用戶多樣化的數(shù)據(jù)存儲(chǔ)需求:當(dāng)您僅需保存一組數(shù)據(jù)時(shí)可選擇“
    的頭像 發(fā)表于 07-23 17:51 ?628次閱讀
    功率分析儀的“<b class='flag-5'>存儲(chǔ)</b>”與“<b class='flag-5'>數(shù)據(jù)</b>保存”模式如何保存測(cè)量<b class='flag-5'>數(shù)據(jù)</b>呢?

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

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

    存儲(chǔ)示波器的存儲(chǔ)深度對(duì)信號(hào)分析有什么影響?

    :≥1GS/s(每周期≥10點(diǎn))。 存儲(chǔ)深度:≥1Mpts(記錄時(shí)間≥1μs)。 優(yōu)化:?jiǎn)⒂梅侄?b class='flag-5'>存儲(chǔ)(如100段×10μs)或升級(jí)至10Mpts。 2. 高速數(shù)據(jù)總線(如DDR4 32
    發(fā)表于 05-27 14:39

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

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

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

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

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

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

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

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

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

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

    初次啟動(dòng)沖擊記錄儀時(shí)具體該如何操作?別著急,答案就在視頻教程里!#數(shù)據(jù)記錄儀 #沖擊記錄儀 #沖擊監(jiān)測(cè)

    數(shù)據(jù)記錄
    虹科工業(yè)物聯(lián)網(wǎng)技術(shù)
    發(fā)布于 :2025年02月10日 10:38:12

    工業(yè)SD卡:專為嚴(yán)苛環(huán)境設(shè)計(jì)的高端存儲(chǔ)設(shè)備

    工業(yè)SD卡,作為專為工業(yè)環(huán)境設(shè)計(jì)的存儲(chǔ)設(shè)備,在多個(gè)領(lǐng)域都發(fā)揮著至關(guān)重要的作用。其出色的性能、穩(wěn)定性和耐用性,使其成為工業(yè)自動(dòng)化、智能電網(wǎng)、安防監(jiān)控以及醫(yī)療設(shè)備等領(lǐng)域的首選存儲(chǔ)解決方案。
    的頭像 發(fā)表于 11-17 17:05 ?885次閱讀
    工業(yè)SD卡:<b class='flag-5'>專為</b>嚴(yán)苛環(huán)境設(shè)計(jì)的高端<b class='flag-5'>存儲(chǔ)</b>設(shè)備

    一文詳解計(jì)算存儲(chǔ)協(xié)議框架

    側(cè),稱為計(jì)算存儲(chǔ)(Computational Storage),通過存儲(chǔ)側(cè)卸載數(shù)據(jù)預(yù)處理,如數(shù)據(jù)校驗(yàn)、解壓、
    的頭像 發(fā)表于 10-31 14:20 ?1568次閱讀
    一文詳解計(jì)算<b class='flag-5'>型</b><b class='flag-5'>存儲(chǔ)</b>協(xié)議框架