真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ESP8266ArduinoIDE閃存文件操作系統(tǒng)-創(chuàng)新互聯(lián)

一、閃存文件系統(tǒng)基本操作

esp8266 的采用 SPIFFS 嵌入式文件系統(tǒng),在內(nèi)部 Flash 為 4M,其中 1M 用于存儲程序,其他的空間有一部分用于系統(tǒng),3M 中剩下的大部分空間可以用來存放文件。

為昭通等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及昭通網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、昭通網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

其中這個空間大小是可以自定義的,在 arduinoIDE中可以修改。

1.1 初始化文件
#include 
void setup() {
  Serial.begin(9600);
  Serial.println("");
  
  Serial.println("SPIFFS format start");
  SPIFFS.format();    // 格式化SPIFFS
  Serial.println("SPIFFS format finish");
  
  if(SPIFFS.begin()){ // 啟動SPIFFS
    Serial.println("SPIFFS Started.");
  } else {
    Serial.println("SPIFFS Failed to Start.");
  }
 
void loop() {
}

SPIFFS.format(); 函數(shù)將格式化全部用戶讀寫區(qū)。

SPIFFS.begin() 將開啟文件操作,在進行任何操作之前都需要調(diào)用?SPIFFS.begin() 開啟文件系統(tǒng)。

1.2?通過程序向閃存文件系統(tǒng)寫入信息
File dataFile = SPIFFS.open(file_name, "w");// 建立File對象用于向SPIFFS中的file對象(即/notes.txt)寫入信息
dataFile.println("Hello IOT World.");       // 向dataFile寫入字符串信息
dataFile.close();                           // 完成文件寫入后關(guān)閉文件
Serial.println("Finished Writing data to SPIFFS");
1.3?通過程序從閃存文件系統(tǒng)讀取信息
File dataFile = SPIFFS.open(file_name, "r");     //建立File對象用于從SPIFFS中讀取文件
//讀取文件內(nèi)容并且通過串口監(jiān)視器輸出文件信息
for(int i=0; i
1.4?通過程序向閃存文件系統(tǒng)文件添加信息
//確認(rèn)閃存中是否有file_name文件
if (SPIFFS.exists(file_name)){

Serial.print(file_name);
Serial.println(" FOUND.");

File dataFile = SPIFFS.open(file_name, "a");// 建立File對象用于向SPIFFS中的file對象(即/notes.txt)寫入信息
dataFile.println("This is Appended Info."); // 向dataFile添加字符串信息
dataFile.close();                           // 完成文件操作后關(guān)閉文件   
Serial.println("Finished Appending data to SPIFFS");

} else {
Serial.print(file_name);
Serial.print(" NOT FOUND.");
}
1.5 通過程序讀取目錄內(nèi)容
String folder_name = "/taichi-maker";         //被讀取的文件夾

// 顯示目錄中文件內(nèi)容以及文件大小
Dir dir = SPIFFS.openDir(folder_name);  // 建立“目錄”對象

while (dir.next()) {  // dir.next()用于檢查目錄中是否還有“下一個文件”
    Serial.println(dir.fileName()); // 輸出文件名
}
?1.6?從閃存文件系統(tǒng)中刪除文件
//從閃存中刪除file_name文件
if (SPIFFS.remove(file_name)){
  
  Serial.print(file_name);
  Serial.println(" remove sucess");
  
} else {
  Serial.print(file_name);
  Serial.println(" remove fail");
}
1.7?從閃存文件系統(tǒng)中刪除文件
// 閃存文件系統(tǒng)信息
  SPIFFS.info(fs_info);
 
  // 可用空間總和(單位:字節(jié))
  Serial.print("totalBytes: ");     
  Serial.print(fs_info.totalBytes); 
  Serial.println(" Bytes"); 
 
  // 已用空間(單位:字節(jié))
  Serial.print("usedBytes: "); 
  Serial.print(fs_info.usedBytes);
  Serial.println(" Bytes"); 
 
  // 大文件名字符限制(含路徑和'\0')
  Serial.print("maxPathLength: "); 
  Serial.println(fs_info.maxPathLength);
 
  // 最多允許打開文件數(shù)量
  Serial.print("maxOpenFiles: "); 
  Serial.println(fs_info.maxOpenFiles);
 
  // 存儲塊大小
  Serial.print("blockSize: "); 
  Serial.println(fs_info.blockSize);
 
  // 存儲頁大小
  Serial.print("pageSize: ");
  Serial.println(fs_info.pageSize);

1.7 小案例
#include 
String file_name = "/taichi-maker/notes.txt"; //被讀取的文件位置和名稱
 
void setup() {
  Serial.begin(9600);
  Serial.println("");
  
  Serial.println("SPIFFS format start");
  SPIFFS.format();    // 格式化SPIFFS
  Serial.println("SPIFFS format finish");
  
  if(SPIFFS.begin()){ // 啟動SPIFFS
    Serial.println("SPIFFS Started.");
  } else {
    Serial.println("SPIFFS Failed to Start.");
  }
  
  //-------------- 寫入部分---------------------------------
  File dataFile = SPIFFS.open(file_name, "w");// 建立File對象用于向SPIFFS中的file對象(即/notes.txt)寫入信息
  dataFile.println("Hello IOT World.");       // 向dataFile寫入字符串信息
  dataFile.close();                           // 完成文件寫入后關(guān)閉文件
  Serial.println("Finished Writing data to SPIFFS");

  //-------------- 讀取部分---------------------------------
  dataFile = SPIFFS.open(file_name,"r");  //建立File對象用于從SPIFFS中讀取文件
  for(int i = 0;i

這里展示一個簡單的讀寫案例。

可見值被成功讀入

二、通過Arduino IDE向閃存文件系統(tǒng)上傳文件

需要安裝一個 arduino IDE 插件實現(xiàn)無需代碼直接向閃存中寫入文件。這個插件只支持?arduino IDE 1.x 版本,2.x是不能安裝的。我在本機中為了使用這個插件安裝了兩個版本的 arduino IDE。

具體安裝方式參考:3-3-2 通過Arduino IDE向閃存文件系統(tǒng)上傳文件 – 太極創(chuàng)客

三、作為文件 web 服務(wù)器
#include#include#include#includeESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti對象

ESP8266WebServer esp8266_server(80);    // 建立網(wǎng)絡(luò)服務(wù)器對象,該對象用于響應(yīng)HTTP請求。監(jiān)聽端口(80)

void setup() {
  Serial.begin(9600);          // 啟動串口通訊
  Serial.println("");
  
  wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); // 將需要連接的一系列WiFi ID和密碼輸入這里
  wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再啟動后會掃描當(dāng)前網(wǎng)絡(luò)
  wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 環(huán)境查找是否有這里列出的WiFi ID。如果有
  Serial.println("Connecting ...");                            // 則嘗試使用此處存儲的密碼進行連接。
  
  int i = 0;  
  while (wifiMulti.run() != WL_CONNECTED) { // 嘗試進行wifi連接。
    delay(1000);
    Serial.print(i++); Serial.print(' ');
  }
  
  // WiFi連接成功后將通過串口監(jiān)視器輸出連接成功信息 
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // 通過串口監(jiān)視器輸出連接的WiFi名稱
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // 通過串口監(jiān)視器輸出ESP8266-NodeMCU的IP

  if(SPIFFS.begin()){                       // 啟動閃存文件系統(tǒng)
    Serial.println("SPIFFS Started.");
  } else {
    Serial.println("SPIFFS Failed to Start.");
  }
  
  esp8266_server.onNotFound(handleUserRequet);      // 告知系統(tǒng)如何處理用戶請求

  esp8266_server.begin();                           // 啟動網(wǎng)站服務(wù)
  Serial.println("HTTP server started");
}

void loop(void) {
  esp8266_server.handleClient();                    // 處理用戶請求
}

// 處理用戶瀏覽器的HTTP訪問
void handleUserRequet() {         
     
  // 獲取用戶請求網(wǎng)址信息
  String webAddress = esp8266_server.uri();
  
  // 通過handleFileRead函數(shù)處處理用戶訪問
  bool fileReadOK = handleFileRead(webAddress);

  // 如果在SPIFFS無法找到用戶訪問的資源,則回復(fù)404 (Not Found)
  if (!fileReadOK){                                                 
    esp8266_server.send(404, "text/plain", "404 Not Found"); 
  }
}

bool handleFileRead(String path) {            //處理瀏覽器HTTP訪問

  if (path.endsWith("/")) {                   // 如果訪問地址以"/"為結(jié)尾
    path = "/index.html";                     // 則將訪問地址修改為/index.html便于SPIFFS訪問
  } 
  
  String contentType = getContentType(path);  // 獲取文件類型
  
  if (SPIFFS.exists(path)) {                     // 如果訪問的文件可以在SPIFFS中找到
    File file = SPIFFS.open(path, "r");          // 則嘗試打開該文件
    esp8266_server.streamFile(file, contentType);// 并且將該文件返回給瀏覽器
    file.close();                                // 并且關(guān)閉文件
    return true;                                 // 返回true
  }
  return false;                                  // 如果文件未找到,則返回false
}

// 獲取文件類型
String getContentType(String filename){
  if(filename.endsWith(".htm")) return "text/html";
  else if(filename.endsWith(".html")) return "text/html";
  else if(filename.endsWith(".css")) return "text/css";
  else if(filename.endsWith(".js")) return "application/javascript";
  else if(filename.endsWith(".png")) return "image/png";
  else if(filename.endsWith(".gif")) return "image/gif";
  else if(filename.endsWith(".jpg")) return "image/jpeg";
  else if(filename.endsWith(".ico")) return "image/x-icon";
  else if(filename.endsWith(".xml")) return "text/xml";
  else if(filename.endsWith(".pdf")) return "application/x-pdf";
  else if(filename.endsWith(".zip")) return "application/x-zip";
  else if(filename.endsWith(".gz")) return "application/x-gzip";
  return "text/plain";
}

當(dāng)訪問 esp8266 ip的時候,即被重定向到 /index.html 打開網(wǎng)頁。?

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前題目:ESP8266ArduinoIDE閃存文件操作系統(tǒng)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://weahome.cn/article/ppdhd.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部