前提
現在、ESP32C3用のプログラムを作成しています。
実現したいこと
SPIFFS領域へファイルを作成したり、読み込みためのプログラムを追加してビルドするとエラーが発生してしまいます。
プログラム作成では下記のサイトを参考にしました。
ESP32でSPIFFSにファイルを読み書きする方法 | 次世代情報技術研究所(仮)
何かインクルードするべきライブラリなどありますでしょうか?
解決方法をご教示の程よろしくお願い致します。
発生している問題・エラーメッセージ
[Starting] Analyzing sketch 'OnDemandAP.ino' [Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README. 構成をロード中… パッケージを初期化中… ボードを準備中… 検証中… OnDemandAP:11:14: error: variable or field 'listDir' declared void void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ ^~ OnDemandAP:11:14: error: 'fs' has not been declared OnDemandAP:11:22: error: 'fs' was not declared in this scope void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ ^~ d:\mywork\Arduino\CarDoorChecker\OnDemandAP.ino:11:22: note: suggested alternative: 'fls' void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ ^~ fls OnDemandAP:11:26: error: expected primary-expression before 'const' void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ ^~~~~ OnDemandAP:11:56: error: expected primary-expression before 'levels' void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ ^~~~~~ OnDemandAP:42:15: error: variable or field 'readFile' declared void void readFile(fs::FS &fs, const char * path){ ^~ OnDemandAP:42:15: error: 'fs' has not been declared OnDemandAP:42:23: error: 'fs' was not declared in this scope void readFile(fs::FS &fs, const char * path){ ^~ d:\mywork\Arduino\CarDoorChecker\OnDemandAP.ino:42:23: note: suggested alternative: 'fls' void readFile(fs::FS &fs, const char * path){ ^~ fls OnDemandAP:42:27: error: expected primary-expression before 'const' void readFile(fs::FS &fs, const char * path){ ^~~~~ OnDemandAP:62:16: error: variable or field 'writeFile' declared void void writeFile(fs::FS &fs, const char * path, const char * message){ ^~ OnDemandAP:62:16: error: 'fs' has not been declared OnDemandAP:62:24: error: 'fs' was not declared in this scope void writeFile(fs::FS &fs, const char * path, const char * message){ ^~ d:\mywork\Arduino\CarDoorChecker\OnDemandAP.ino:62:24: note: suggested alternative: 'fls' void writeFile(fs::FS &fs, const char * path, const char * message){ ^~ fls OnDemandAP:62:28: error: expected primary-expression before 'const' void writeFile(fs::FS &fs, const char * path, const char * message){ ^~~~~ OnDemandAP:62:47: error: expected primary-expression before 'const' void writeFile(fs::FS &fs, const char * path, const char * message){ ^~~~~ OnDemandAP:79:17: error: variable or field 'appendFile' declared void void appendFile(fs::FS &fs, const char * path, const char * message){ ^~ OnDemandAP:79:17: error: 'fs' has not been declared OnDemandAP:79:25: error: 'fs' was not declared in this scope void appendFile(fs::FS &fs, const char * path, const char * message){ ^~ d:\mywork\Arduino\CarDoorChecker\OnDemandAP.ino:79:25: note: suggested alternative: 'fls' void appendFile(fs::FS &fs, const char * path, const char * message){ ^~ fls OnDemandAP:79:29: error: expected primary-expression before 'const' void appendFile(fs::FS &fs, const char * path, const char * message){ ^~~~~ OnDemandAP:79:48: error: expected primary-expression before 'const' void appendFile(fs::FS &fs, const char * path, const char * message){ ^~~~~ exit status 1 [Warning] Failed to generate IntelliSense configuration. [Error] Analyzing sketch 'OnDemandAP.ino': Exit with code=1
該当のソースコード
c
1#include "FS.h" 2#include "SPIFFS.h" 3 4 5 6#define FORMAT_SPIFFS_IF_FAILED true 7 8String gSerialName; 9 10 11void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ 12 Serial.printf("Listing directory: %s\r\n", dirname); 13 14 File root = fs.open(dirname); 15 if(!root){ 16 Serial.println("- failed to open directory"); 17 return; 18 } 19 if(!root.isDirectory()){ 20 Serial.println(" - not a directory"); 21 return; 22 } 23 24 File file = root.openNextFile(); 25 while(file){ 26 if(file.isDirectory()){ 27 Serial.print(" DIR : "); 28 Serial.println(file.name()); 29 if(levels){ 30 listDir(fs, file.path(), levels -1); 31 } 32 } else { 33 Serial.print(" FILE: "); 34 Serial.print(file.name()); 35 Serial.print("\tSIZE: "); 36 Serial.println(file.size()); 37 } 38 file = root.openNextFile(); 39 } 40} 41 42void readFile(fs::FS &fs, const char * path){ 43 Serial.printf("Reading file: %s\r\n", path); 44 45 File file = fs.open(path); 46 if(!file || file.isDirectory()){ 47 Serial.println("- failed to open file for reading"); 48 return; 49 } 50 51 Serial.println("- read from file:"); 52 53 while(file.available()){ 54 Serial.write(file.read()); 55 //Serial.println(file.read()); 56 } 57 file.close(); 58} 59 60 61 62void writeFile(fs::FS &fs, const char * path, const char * message){ 63 Serial.printf("Writing file: %s\r\n", path); 64 65 File file = fs.open(path, FILE_WRITE); 66 if(!file){ 67 Serial.println("- failed to open file for writing"); 68 return; 69 } 70 if(file.print(message)){ 71 Serial.println("- file written"); 72 } else { 73 Serial.println("- write failed"); 74 } 75 file.close(); 76} 77 78 79void appendFile(fs::FS &fs, const char * path, const char * message){ 80 Serial.printf("Appending to file: %s\r\n", path); 81 82 File file = fs.open(path, FILE_APPEND); 83 if(!file){ 84 Serial.println("- failed to open file for appending"); 85 return; 86 } 87 if(file.print(message)){ 88 Serial.println("- message appended"); 89 } else { 90 Serial.println("- append failed"); 91 } 92 file.close(); 93} 94 95 96void setup() { 97 98 if (!SPIFFS.begin(true)) { 99 Serial.println("An Error has occurred while mounting SPIFFS"); 100 return; 101 } 102 103} 104 105void loop() { 106 // put your main code here, to run repeatedly: 107 108 109} 110 111 112 113 114 115
試したこと
気になる点があるのですが、
今まで、マルチタスク機能やAWS機能を入れたコードを作成していましたが、正常に動作しない箇所があるため、一旦上記コードのようにほぼsetup,loopのシンプルなものにして再ビルドしていました。
そしてとりあえずファイル操作のプログラムを追加してみたところ、今回の不具合に遭遇しました。
上記のファイル操作に関するプログラムは別のファイル”spiffs.ino”というファイルにいままではまとめていました。
その時は、正常にビルド成功しており、プログラムも動作しておりました。その時のgitのリビジョンに戻れば、正常にビルドできます。
今回setup,loop関数のあるファイルにまとめる作業を行ってみたところ、現在の不具合現象が発生しております。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー