1.通过程序读取目录内容
程序如下:
/**********************************************************************
项目名称/Project : 零基础入门学用物联网
程序名称/Program name : esp8266-flash-folder-read
团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author : CYNO 朔
日期/Date(YYYYMMDD) : 20191109
程序目的/Purpose : 此程序用于演示如何从NodeMCU的内置SPIFFS中文件夹里读取文件信息
文件夹内容将会通过串口监视器显示出来。
***********************************************************************/
#include <FS.h>
String file_name = "/taichi-maker/myFile.txt"; //被读取的文件位置和名称
String folder_name = "/taichi-maker"; //被读取的文件夹
void setup() {
Serial.begin(9600);
Serial.println("");
if(SPIFFS.begin()){ // 启动闪存文件系统
Serial.println("SPIFFS Started.");
} else {
Serial.println("SPIFFS Failed to Start.");
}
File dataFile = SPIFFS.open(file_name, "w");// 建立File对象用于向SPIFFS中的file对象(即myFile.txt)写入信息
dataFile.println("Hello Taichi-Maker."); // 向dataFile写入字符串信息
dataFile.close(); // 完成文件写入后关闭文件
Serial.println(F("Finished Writing data to SPIFFS"));
//Serial.println("Finished Writing data to SPIFFS");
// 显示目录中文件内容以及文件大小
Dir dir = SPIFFS.openDir(folder_name); // 建立“目录”对象
while (dir.next()) { // dir.next()用于检查目录中是否还有“下一个文件”
Serial.println(dir.fileName()); // 输出文件名
}
}
void loop() {
}
1.关于Arduino的Serial.print(F(""))问题
Serial.println(F(“Finished Writing data to SPIFFS”));
Serial.println(“Finished Writing data to SPIFFS”);
使用Serial.println(“Finished Writing data to SPIFFS”);
项目使用了 294644 字节,占用了 (28%) 程序存储空间。最大为 1044464 字节。
全局变量使用了 27244 字节,(33%)的动态内存,余留54676字节局部变量。最大为81920字节。
使用Serial.println(F(“Finished Writing data to SPIFFS”));
程序编译如下:
项目使用了 294820 字节,占用了 (28%) 程序存储空间。最大为 1044464 字节。 FLASH占用增加
全局变量使用了 27212 字节,(33%)的动态内存,余留54708字节局部变量。最大为81920字节。 SRAM占用减少
可以得到的结论:添加 F() 相当于为字符串常量定义了PROGMEM属性,常量字符串仍然存储在FLASH中,但是程序运行时不会再将常量字符串从FLASH中copy到SRAM中,而是直接读取FLASH中的字符串,这样一来就节约了SRAM,但是代码运行速度就下降了。
定义全局常量时,使用 PROGMEM 关键字,或使用 PROGMEM 数据类型,告诉编译器 “ 把这个信息存到程序存储空间 ”,而不是存到“ 动态内存 ”。
SRAM存储器(静态随机存取存储器)是一种只要在供电条件下便能够存储数据的存储器件,而且是大多数高性能系统的一个关键部分。
SRAM存储器是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒久保持。对比DRAM存储器里面所储存的数据需要周期性做出更新。但当电力供应停止时,SRAM存储器储存的数据还是会消失,因此SRAM存储器也称为volatile memory,这就跟在断电后还能储存数据的ROM存储器或FLASH闪存是不同的。SRAM存储器具有较高的性能,被广泛应用于在高端产品应用。