日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

玩轉(zhuǎn) ESP32 + Arduino (二十一) SPIFFS文件系統(tǒng) (已棄用)

發(fā)布者:Leishan最新更新時間:2025-04-02 來源: jianshu關(guān)鍵字:ESP32  Arduino  文件系統(tǒng) 手機看文章 掃描二維碼
隨時隨地手機看文章

SPIFFS已被拋棄, ????, 原因參考: https://www.bilibili.com/video/BV1kR4y1o7H7

現(xiàn)在我們使用LittleFS代替它, 請參考后續(xù)文章


一. 文件系統(tǒng) SPIFFS

ESP32 自帶SPIFFS.h庫用來管理文件系統(tǒng)

注意: 此文件系統(tǒng)是沒用文件層次的  比如你建立一個 /doc/test.txt 那這個txt的名字就是 doc/test, 而不是在doc目錄下有個 test.txt


#include 'SPIFFS.h'

二. SPIFFS相關(guān)函數(shù)

1. SPIFFS.begin();  //開啟SPIFFS

參數(shù):- formatOnFail : 打開失敗就格式化 (bool)- *basePath :  根目錄 

- maxOpenFiles  : 最大可打開文件數(shù)量


返回值: 打開成功或者失敗bool fs::SPIFFSFS::begin(bool formatOnFail = false, const char *basePath = '/spiffs', uint8_t maxOpenFiles = (uint8_t)'n')

SPIFFS.begin();

2.  SPIFFS.open //創(chuàng)建或打開文件

參數(shù):- path : 文件路徑- mode : 打開方式, 可選:

                       FILE_READ (讀文件) 

                       FILE_WRITE (寫文件) 

                       FILE_APPEND (添加內(nèi)容)返回值: 一個File類型的對象, 其實就是打開的文件對象


File FS::open(const char* path, const char* mode){}

我們可以看到 SPIFFS.open其實是繼承自 FS類的


File file = SPIFFS.open('/test.txt', FILE_WRITE);

注意:

File重載了 Boolean運算符, 如果文件打開了 file就為true


if(!file){

     Serial.println('There was an error opening the file for writing');

     return;}

關(guān)于File類型的函數(shù)放在下一節(jié)


3. SPIFFS.format() //文件系統(tǒng)格式化

SPIFFS.format();

4. SPIFFS.exists('/test.txt')  //判斷有沒有某個文件

SPIFFS.exists('/test.txt');

5. SPIFFS.remove('/test.txt'); //刪除某個文件

SPIFFS.exists('/test.txt')

6.  SPIFFS.rename('原文件名','新文件名');  //文件重命名

7. SPIFFS.end(); //結(jié)束文件系統(tǒng)掛載

三. File類相關(guān)函數(shù)

1. file.name(); //讀取文件的名字

返回文件的名字, char *字符串


2. file.print(''); //往文件中寫入內(nèi)容

參數(shù): 要寫入的字符串

返回值: 寫入的char的個

size_t Print::print(const char *)

我們可以看到 File的print 是繼承并擴展了 Print類


f(file.print('TEST')) {

    Serial.println('File was written');}else {

    Serial.println('File write failed');}

3. file.println(''); //往文件中寫入一行內(nèi)容

這個方法有好多個重載, 輸入內(nèi)容的方式比較豐富,可用看一下源碼了解一下


file.println('xiongba,haha');

4. file.printf(); //寫入內(nèi)容

file.printf('tizhong:%dKG',90);

5. file.find('!'); //在文件中尋找某個char或字符串

返回布爾值!


  Serial.print('尋找!位置');

  Serial.println(file.find('!'));

4. file.findUntil('haha','!'); //在文件中尋找某個char或字符串(遇到某字符串就停止)

返回布爾值!


file.findUntil('haha','!');

5. file.close(); //關(guān)閉文件

6. file.size(); //文件大小

讀模式下能返回文件大小,寫模式下返回 -負值文件大小


7. file.readString(); //讀取字符串, 返回讀取字符串

8. file.readStringUntil(); //讀取字符串, 遇到終止符終止, 返回讀取字符串

9. file.readBytes(); //讀取數(shù)據(jù)到buf中,

  char *buf;

  file.readBytes(buf,15);

10. file.readBytesUntil('1',buf,15); //讀取數(shù)據(jù)到buf中, 遇到終止符終止

  uint8_t *buf;

  file.readBytesUntil(0x18,buf,15);


  char *buf;

  file.readBytesUntil('!',buf,15);

三. 簡單測試

#include #include void setup(){

  Serial.begin(115200);

  delay(3000);

  Serial.println('opening SPIFFS');

  while (!SPIFFS.begin())

  {

    Serial.print('...');

  }

  Serial.println('SPIFFS OK!');



  File file = SPIFFS.open('/test.txt', FILE_WRITE);

  if (!file)

  {

    Serial.println('open file failed');

  }

  Serial.println(file.print('hello,xiongba!'));

  file.println('xiongba,haha');

  Serial.println(file.print('hello,xiongba!'));

  file.printf('tizhong:%dKG',90);

  file.close();


  

  file = SPIFFS.open('/test.txt', FILE_READ);

  Serial.print('可用file.available():');

  Serial.println(file.available());

  Serial.print('test.txt的大小:');

  Serial.println(file.size());

  Serial.print('讀取文件');

  String data = file.readString();

  Serial.println(data);

  Serial.print('尋找字符串');

  Serial.println(file.find('!'));

  file.findUntil('haha','!');

  Serial.println(file.name());

  file.close();


  Serial.printf('SPIFFS的總體積: %d 字節(jié)rn', SPIFFS.totalBytes());

  Serial.printf('SPIFFS的已用體積: %d 字節(jié)rn', SPIFFS.usedBytes());


  Serial.print('現(xiàn)在存在/test.txt嗎:');

  Serial.println(SPIFFS.exists('/test.txt'));

  Serial.println('現(xiàn)在把/test.txt改名為/test2.txt');

  SPIFFS.rename('/test.txt', '/test2.txt');

  Serial.print('現(xiàn)在存在/test.txt嗎:');

  Serial.println(SPIFFS.exists('/test.txt'));

  Serial.print('現(xiàn)在存在/test2.txt嗎:');

  Serial.println(SPIFFS.exists('/test2.txt'));

  Serial.println('刪除/test2.txt');

  SPIFFS.remove('/test2.txt');

  Serial.print('現(xiàn)在還存在/test2.txt嗎:');

  Serial.println(SPIFFS.exists('/test2.txt'));

  SPIFFS.end();}void loop(){}


四. 測試FILE_WRITE和FILE_APPEND的區(qū)別(答案顯而易見)

先說結(jié)論: FILE_WRITE是把文件重寫, FILE_APPEND是從源文件的基礎(chǔ)上增量


1.FILE_WRITE

#include #include void setup(){

  Serial.begin(115200);

  delay(3000);

  Serial.println('opening SPIFFS');

  while (!SPIFFS.begin())

  {

    Serial.print('...');

  }

  Serial.println('SPIFFS OK!');



  File file = SPIFFS.open('/test.txt', FILE_WRITE);

  if (!file)

  {

    Serial.println('open file failed');

  }

  Serial.println(file.print('hello,xiongba!'));

  file.println('xiongba,haha');

  Serial.println(file.print('hello,xiongba!'));

  file.printf('tizhong:%dKG',90);

  file.close();



  file = SPIFFS.open('/test.txt', FILE_READ);

  Serial.print('可用file.available():');

  Serial.println(file.available());

  Serial.print('test.txt的大小:');

  Serial.println(file.size());

  Serial.print('讀取文件');

  String data = file.readString();

  Serial.println(data);

  Serial.print('尋找字符串');

  Serial.println(file.find('!'));

  file.findUntil('haha','!');

  Serial.println(file.name());

  file.close();


  Serial.printf('SPIFFS的總體積: %d 字節(jié)rn', SPIFFS.totalBytes());

  Serial.printf('SPIFFS的已用體積: %d 字節(jié)rn', SPIFFS.usedBytes());


  SPIFFS.end();}void loop(){}

2. FILE_APPEND模式

File file = SPIFFS.open('/test.txt', FILE_APPEND);


關(guān)鍵字:ESP32  Arduino  文件系統(tǒng) 引用地址:玩轉(zhuǎn) ESP32 + Arduino (二十一) SPIFFS文件系統(tǒng) (已棄用)

上一篇:玩轉(zhuǎn) ESP32 + Arduino (二十二) SIM800L上傳數(shù)據(jù)到阿里IOT(溫濕度和LBS)(NTP對時)
下一篇:玩轉(zhuǎn) ESP32 + Arduino (二十) SIM800L上傳數(shù)據(jù)到OneNet(新版Mqtts)

推薦閱讀最新更新時間:2025-06-29 10:21

玩轉(zhuǎn) ESP32 + Arduino (十七) deepsleep深睡眠模式
一. 關(guān)于UPL協(xié)處理器的概念 ESP32 有強大的超低功耗協(xié)處理器 (ULP co-processor) ULP 協(xié)處理器是一個功耗極低的協(xié)處理器設(shè)備,無論主 CPU 是處于正常運行模式還是 Deep-sleep 模式,ULP 協(xié)處理器都可以獨立運行。超低功耗協(xié)處理器的補充使得 ESP32 能夠勝任一些對低功耗要求較高的應(yīng)用場合。 ULP 協(xié)處理器的主要特性有: 采用 8 MHz 頻率和 8 KB 內(nèi)存 內(nèi)建 ADC 和 I2C 接口 支持正常模式和 Deep-sleep 模式 可喚醒主 CPU 或向主 CPU 發(fā)送中斷 能夠訪問主 CPU 的外圍設(shè)備、內(nèi)部傳感器及 RTC 寄存器 鑒于以上的特性,ULP 協(xié)處理器能夠在消耗
[單片機]
IMX6ULL學習筆記(3)——掛載NFS網(wǎng)絡(luò)文件系統(tǒng)
一、簡介 NFS(Network File System) 即網(wǎng)絡(luò)文件系統(tǒng),是FreeBSD支持的文件系統(tǒng)中的一種,它允許網(wǎng)絡(luò)中的計算機之間通過TCP/IP網(wǎng)絡(luò)共享資源。開啟了NFS服務(wù)后,客戶端訪問服務(wù)器共享的文件時如同訪問本地存儲器(磁盤/SD卡/NAND FLASH等)上的文件一樣,對于上層應(yīng)用來說沒有任何差別。 在嵌入式開發(fā)中,可將在虛擬機中編譯通過的程序共享到開發(fā)板中,在開發(fā)板上直接運行需要調(diào)試的程序,避免了燒錄的耗時操作。 二、搭建實驗環(huán)境 2.1 連接到局域網(wǎng) 開發(fā)板與電腦接入到同一個局域網(wǎng)中,然后電腦提供NFS服務(wù),開發(fā)板通過NFS與電腦連接共享文件。電腦生成的目標板應(yīng)用程序放在NFS的共享文件夾內(nèi),開發(fā)板訪
[單片機]
NFS掛載文件系統(tǒng)出現(xiàn)nfs is not responding,still trying
采用NFS掛載根文件系統(tǒng)啟動開發(fā)板出現(xiàn): 1 nfs xxx is not responding,still trying 2 nfs xxx is OK 3 nfs xxx is not responding,still trying 4 ............... 不斷的出現(xiàn)沒有回應(yīng)。。成功。。要很長時間才能啟動開發(fā)板 解決辦法: 修改uboot啟動配置 uboot之前的啟動配置: 1 setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.130:/home/ming/windows
[單片機]
文件系統(tǒng)的移植(三):ramdisk文件系統(tǒng)的移植
內(nèi) 核 版 本:linux-3.0 u-boot版本:u-boot-2010.09 開發(fā)板型號:FL2440 1、對根文件系統(tǒng)進行修改 無修改 2、添加內(nèi)核對 nfs 的支持 2.1、 在內(nèi)核中為 256M 的nandflash 進行分區(qū),修改文件arch/arm/plat-s3c24xx/common-smdk.c 中第 109 行開始處的代碼如下: static struct mtd_partition smdk_default_nand_part = { = { .name = mtdblock0 u-boot 1MB , .size = SZ_1M*1,
[單片機]
<font color='red'>文件系統(tǒng)</font>的移植(三):ramdisk<font color='red'>文件系統(tǒng)</font>的移植
05-S3C2440學習之內(nèi)核(移植)linux3.4.2移植(2) yffs2文件系統(tǒng)移植+內(nèi)核裁剪+內(nèi)核制作補丁
一、移植YFFS2文件系統(tǒng) yffs文件系統(tǒng)更加支持nand設(shè)備 上節(jié)移植了jffs2文件系統(tǒng)(點擊查看)到移植的內(nèi)核中,這節(jié)我們將yffs2文件系統(tǒng)移植到剛移植好的內(nèi)核中。 (1)獲取源碼并解壓 git clone git://www.aleph1.co.uk/yaffs2 tar xjf yaffs2.tar.bz2 (2)給內(nèi)核打上yffs2補丁 ./patch-ker.sh c m /home/book/linux-3.4.2 (3) 配置內(nèi)核支持YAFFS 1. ls fs/yaffs2 (4)編譯、生成uImage 出錯,制作yffs2 source工程. (
[單片機]
05-S3C2440學習之內(nèi)核(移植)linux3.4.2移植(2) yffs2<font color='red'>文件系統(tǒng)</font>移植+內(nèi)核裁剪+內(nèi)核制作補丁
基于ESP32實現(xiàn)示波器的制作教程
   示波器 是任何 電子工程師 必備的測試儀器。它用于可視化和觀察各種 信號 ,通常作為一個二維圖,其中一個或多個信號隨時間繪制。它們用于 電子 設(shè)備的設(shè)計和調(diào)試,以查看和比較波形,并確定施加在其輸入端的信號隨時間變化的電壓電平、頻率、噪聲和其他參數(shù)。這使得示波器成為電子工程師或制造商辦公桌上非常重要的工具。然而,示波器相當昂貴。入門級型號的價格從 500 美元到 2,000 美元不等。而先進的示波器則要花費數(shù)千美元,這使得它們超出了基本用戶的承受能力。但是如果我們能創(chuàng)造出一種更便宜、更緊湊、并且容易制作?這就是導致今天 教程 的問題。    ESP32 示波器功能   單通道   1Msps   50000 @ 16bit
[測試測量]
基于<font color='red'>ESP32</font>實現(xiàn)示波器的制作教程
I.MX6Q(TQIMX6Q/TQE9)學習筆記——新版BSP之根文件系統(tǒng)掛載
經(jīng)過前面的移植,新版BSP的uboot和kernel已經(jīng)能夠在tqimx6q開發(fā)板上運行了,接下來我們來掛載文件系統(tǒng)。 DTB整理 前面的文章中提到,新版BSP的DTB管理感覺不是太好,在之前移植的BSP上我發(fā)現(xiàn)即便有根文件系統(tǒng),內(nèi)核也會掛掉,由于原來的DTS文件中配置內(nèi)容太多,不好確定問題的源頭,本文對DTS進行了整理,整理后只需要一個DTS文件,其內(nèi)容如下: /* * Copyright 2012 Freescale Semiconductor, Inc. * Copyright 2011 Linaro Ltd. * * The code contained herein is licensed under
[單片機]
VDK與嵌入式文件系統(tǒng)的投入使用
  Blackfin(BF)系列 DSP 是ADI公司和Intel公司共同開發(fā)的DSP,采用了一種新型結(jié)構(gòu)MSA.BF系列中的BF537具有較塊的運算速度和豐富的接口資源,長于控制和視頻圖像處理,且其帶有符合IEEE 802.3規(guī)范的以太網(wǎng)控制器,如果在BF537中移植帶有LwIP協(xié)議棧的VDK工程,并利用網(wǎng)絡(luò)芯片對537進行擴展,就能便捷地實現(xiàn)嵌入式系統(tǒng)與因特網(wǎng)的通信。   由于低功耗、數(shù)據(jù)非易失、存儲速度快、存儲密度大等優(yōu)點,Nand Flash在閃存行列中脫穎而出,常被用作大容量數(shù)據(jù)的存儲媒質(zhì)。隨著存儲系統(tǒng)容量和存取速度的不斷提升,構(gòu)建嵌入式文件系統(tǒng)來實現(xiàn)存儲系統(tǒng)中數(shù)據(jù)的管理。   1 VDK與嵌入式文件系統(tǒng)   1.1
[單片機]
VDK與嵌入式<font color='red'>文件系統(tǒng)</font>的投入使用
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved