问题标签 [spiffs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
126 浏览

arduino - 添加无关代码后,SPIFSS 代码崩溃

我遇到了一个奇怪的行为。我正在使用 ESP8266 arduino SPIFFS 来存储配置设置。这是mycode的相关部分;

在上面的代码中,UART 将收到一个命令“XXX\r”,然后运行 ​​saveConfig() 将配置参数 ssid 和参数保存到 SPIFSS。在我添加更多完全不相关的代码之前,这段代码工作得很好。

这就是新代码的样子。

添加额外的 else 子句后,向 UART 发送“XXX\r”并导致 saveConfig() 将导致异常错误。这令人费解,因为新代码甚至没有运行。

异常错误如下;

0 投票
1 回答
1141 浏览

esp8266 - 使用 esptool 将固件下载到 ESP8266

我正在使用带有 SPIFFS 的 ESP8266 Arduino 来存储配置设置。

此命令用于将二进制固件.bin 刷入 ESP8266 for Arduino。

该命令用于使用 SMING 框架将二进制固件.nin 刷入 ESP8266。

用于 Arduino 闪存下载的命令有一些令人费解的方面。

  • 为什么 Arduino 的 SPIFFS 没有单独的 bin 文件?我注意到在编译 bin 文件期间未使用 esp8266\tools\mkspiffs 文件夹中的工具“mkspiffs.exe”。为什么不使用它?

  • Arduino esptool 如何知道使用哪个地址分配给 SPIFFS 文件系统地址?

我想了解编程二进制文件的过程,因为我遇到了带有 ESP8266 Arduino 的 SPIFFS 的奇怪行为。我对使用 SMING 框架的类似固件没有任何问题。我想知道问题是否是由如何使用 esptool 将固件刷新到 ESP8266 引起的。

0 投票
1 回答
574 浏览

esp8266 - 可以在 ESP8266 Arduino 上配置文件大小 >1024 字节吗?

我以 ESP8266 Arduino ConfigFile.ino 为例,在 SPIFFS 上存储配置设置。

https://github.com/esp8266/Arduino/blob/master/libraries/esp8266/examples/ConfigFile/ConfigFile.ino

在此代码段中,configFile 不能大于 1024 字节。

为什么配置文件大小限制为 1024 字节?如果这确实是一个限制,有没有办法克服这个限制?

0 投票
1 回答
5140 浏览

arduino - ESP8266 SPIFFS 复制文件内容,删除和重命名

我有一个问题,我将除第一行之外的所有内容从文件复制到另一个临时文件。然后我删除原始文件并将临时文件重命名为原始文件。在每个循环之后,我还将一行数据附加到原始文件中。该代码在第一次运行时运行良好,然后内容消失,原始文件中只有一行。

原始文件:
第1行:aaa
第2行:bbb
第3行:ccc
第4行:ddd
第5行:eee

在我第一次运行该功能后:

第一个循环:
第1行:bbb
第2行:ccc
第3行:ddd
第4行:eee
第5行:fff

第二个循环后:
第 1 行:ggg

更新:
看起来当我重命名文件并用 spiffs 打开它时,esp 看不到文件的内容,所以它只写函数结束后添加的行。

Update2:
即使我注释掉向文件添加行的函数,deleteFirstLine 函数也不起作用。我尝试在包含 5 行的文件上使用该函数。结果相同,第一个循环没问题,然后第二个循环文件​​中没有任何内容...

我在arduino中使用的代码:

0 投票
1 回答
670 浏览

c++ - 只有 SPIFFS 的第一行适用于 WiFi.begin() - ESP8266-12E

当我运行下面的代码时,只有一行可以工作。如果我注释掉 SSID 写入/读取部分,密码将起作用。如果我注释掉 SSID 将起作用的密码部分。但是,如果我将两者都留在 WiFi 中,则永远无法连接。我将 WiFi.begin() 中的 SSID 和密码都硬编码为健全性检查,并确定它已连接。所以它一定与我使用 SPIFFS 编写或阅读多行的方式有关。但是,我确实正确地恢复了两条线,所以至少如果我使用 Serial.println() 的话。我也愿意为 SPIFFS 提供任何建议的替代方案,因为我对使用返回字符串的函数不太感兴趣。我当然更希望有一个返回 char* 的函数,但我的 C 非常生疏。我还在写作和阅读级别尝试了各种终止符 \r 然后 \0 ,到目前为止没有任何效果,还尝试修剪字符串。我遗漏了基础知识,但我做了一个 SPIFFS.begin() 和格式(当然不是按那个顺序),这似乎正在工作,因为我似乎让 Serial.println() 看起来正确。我使用 win10 x64 安装了最新的 arduino IDE 和 SPIFFS。这是代码:

0 投票
2 回答
774 浏览

esp8266 - SPIFFS.begin 或 SPIFFS.format 上的看门狗超时

我正在使用亚马逊的 ESP-12E NodeMCU 板和 Arduino IDE。它一直在工作,没有任何问题,但现在我正在尝试使用 SPIFFS 存储数据,当我调用 SPIFFS.begin 或 SPIFFS.format 时,我在 8 秒后得到了看门狗超时。

我已经运行了示例 CheckFlashConfig 草图,它报告了大小不匹配。IDE大小为4M,实际大小为1M。我正在使用 NodeMCU 1.0(ESP-12E 模块)的 Adruino IDE 板定义,闪存设置为 4M(3M SPIFFS)。

这是 CheckFlashConfig 草图的完整代码:

0 投票
0 回答
1843 浏览

c++ - ESP8266 SPIFFS 文本文件读取返回奇怪的字符

我试图在 ESP8266 的 SPIFFS 中存储一些十六进制调色板,但是当我尝试检索它们时,我得到了一些奇怪的字符。代码和日志输出如下:

代码(ino 文件):

Arduino 的 IDE 控制台输出:

我不明白为什么将这些字符 ( ⸮?8⸮?tu @) 添加到有限大小的缓冲区中。我试图char buf[fileSize];用这样的唯一指针替换我的缓冲区():(std::unique_ptr<char[]> buf(new char[fileSize]);在函数中readFilebuf.get()在接下来的 2 个语句中使用,但结果完全相同。

我错过了什么吗?

编辑:正如下面提到的@leetibbett,我在尝试读取字节时正在写一个字符串。这是readFile功能的更正:

0 投票
0 回答
599 浏览

file-upload - SPIFFS上传大小说明

我有一个 ESP8266,特别是 ESP-12-E。

我正在使用这个 aruino 工具将数据上传到我可用的 4MB SPIFFS 存储:https ://github.com/esp8266/arduino-esp8266fs-plugin

我正在上传几个文件,根据我的计算加起来

当我上传文件时

[SPIFFS] 数据:/Users/andy/Documents/Personal/proj/p/relay_controller/data

[SPIFFS] 尺寸:1004

[SPIFFS] 页:256

[SPIFFS] 块:8192

/css/bootstrap.min.css

/pretty.html

/wifi.htm

跳过 .DS_Store

[SPIFFS] 上传:/var/folders/kq/jq1t3j257tn7n_dqy0m9_zl80000gn/T/arduino_build_804509/relay_controller.spiffs.bin

[SPIFFS] 地址:0x300000

[SPIFFS] 重置:nodemcu

[SPIFFS] 端口:/dev/cu.SLAB_USBtoUART

[SPIFFS] 速度:115200

从 /var/folders/kq/jq1t3j257tn7n_dqy0m9_zl80000gn/T/arduino_build_804509/relay_controller.spiffs.bin上传1028096字节

我已将我有疑问的部分加粗。

上面写着 1004 码……什么是 1004 码!?

最后最重要的是它说上传了1,028,096字节,即1004 KB,这必须解释1004。但是为什么当我的数据文件夹只有〜145KB时它上传了1004KB?

0 投票
1 回答
1024 浏览

arduino - 如何使用 Arduino IDE 将 esp8266 SPIFFS 中存储的内容加载到 server.send() 生成的页面中

我在 SPIFFS 中存储了一张图像当我启动浏览器并输入 esp8266 IP 地址/images/image.jpg 时,我可以看到该图像。该图像还显示在根目录的 index.html 页面中。

当我生成一个页面时

该页面不显示图像,只是一个图像占位符。而且我无法再通过 IP 地址/images/image.jpg 访问该图像。我在想 server.send() 改变了根的上下文。

感谢您的任何帮助。

0 投票
2 回答
486 浏览

javascript - Javascript - 从 esp8266 SPIFFS 读取 Json

首先我想说我在 Javascript/jQuery 方面的经验为零,而且我知道我的问题的解决方案实际上可能非常简单。

我想用我的 ESP8266 制作一个 WiFi 扫描仪,在页面上的表格中显示 SSID。到目前为止,下面的代码可以工作,但是延迟非常混乱。我认为如果 json 文件实际已填充,则必须可以在 while 循环中检查,如果是,则读取它并显示 ssid。