Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot_c:exp43 [2024/12/01 16:14] – labuser30 | products:laboratory_iot_c:exp43 [2024/12/01 17:48] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 8: | Строка 8: | ||
| ==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
| + | <file arduino Exp43.ino[enable_line_numbers=" | ||
| + | #include " | ||
| + | |||
| + | void listDir(String path, bool showPath) { | ||
| + | Serial.println(); | ||
| + | File dir = LittleFS.open(path, | ||
| + | File file = dir.openNextFile(); | ||
| + | while (dir) { | ||
| + | Serial.print(" | ||
| + | if (showPath) Serial.print(file.fullName()); | ||
| + | else Serial.print(file.name()); | ||
| - | Для работы с файловой системой необходимо подключить библиотеку: | + | if (file.isDirectory()) Serial.print(", |
| - | <code python> | + | else Serial.print(" |
| - | import os | + | |
| - | </ | + | Serial.print(" |
| + | Serial.println(file.size()); | ||
| + | |||
| + | file = dir.openNextFile(); | ||
| + | } | ||
| + | } | ||
| - | После этого можно работать с функциями файловой системы. Для начала получим список файлов: | + | void setup() { |
| - | <file python Exp43-1.py[enable_line_numbers=" | + | Serial.begin(9600); |
| - | import os | + | |
| + | |||
| + | LittleFS.format(); | ||
| + | LittleFS.begin(); | ||
| - | files = os.listdir() | + | File file = LittleFS.open("/ |
| + | file.print(" | ||
| + | file.close(); | ||
| + | listDir("/", | ||
| - | for file in files: | + | LittleFS.mkdir("/ |
| - | print(file) | + | |
| - | </file> | + | |
| - | Программы вывела в терминал список файлов. В вашем случае вывод может отличаться. | + | file = LittleFS.open("/ |
| - | < | + | file.print(" |
| - | boot.py | + | file.close(); |
| - | init.mpy | + | |
| - | lcd_api.py | + | |
| - | esp8266_i2c_lcd.py | + | |
| - | mfrc522.mpy | + | |
| - | temp_data.csv | + | |
| - | </code> | + | |
| - | Мы видим список файлов. Однако нам может требоваться допонительная информация, | + | LittleFS.remove("/ |
| - | <file python Exp43-2.py[enable_line_numbers="2", | + | LittleFS.rmdir("/ |
| - | import os | + | |
| + | |||
| + | LittleFS.rename("/test.txt", "/ | ||
| + | listDir("/", | ||
| + | } | ||
| - | files = os.ilistdir() | + | void loop() { |
| - | for file in files: | + | } |
| - | print(file) | + | </ |
| - | </ | + | |
| - | Программа выводит список | + | Для |
| + | <code arduino[enable_line_numbers=" | ||
| + | #include " | ||
| + | </ | ||
| - | < | + | Для вывода содержимого директории мы написали специальную функцию: |
| - | (' | + | < |
| - | ('init.mpy', 32768, 0, 225) | + | void listDir(String path, bool showPath) { |
| - | (' | + | |
| - | (' | + | File dir = LittleFS.open(path, " |
| - | (' | + | File file = dir.openNextFile(); |
| - | (' | + | while (dir) { |
| + | Serial.print(" | ||
| + | | ||
| + | else Serial.print(file.name()); | ||
| + | |||
| + | | ||
| + | else Serial.print(" | ||
| + | |||
| + | Serial.print(" | ||
| + | Serial.println(file.size()); | ||
| + | |||
| + | file = dir.openNextFile(); | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| + | Она принимает два аргумента: | ||
| - | Теперь давайте создадим директорию с именем dir: | + | Создаем объект директории: |
| - | '' | + | <code arduino[enable_line_numbers=" |
| + | File dir = LittleFS.open(path, " | ||
| + | </ | ||
| - | < | + | Открываем первый файл: |
| - | ('boot.py', 32768, 0, 252) | + | < |
| - | (' | + | File file = root.openNextFile(); |
| - | (' | + | |
| - | (' | + | |
| - | (' | + | |
| - | (' | + | |
| - | (' | + | |
| </ | </ | ||
| - | Как видно, директория dir создалась. | + | Далее |
| + | <code arduino[enable_line_numbers=" | ||
| + | Serial.print(" | ||
| + | if (showPath) Serial.print(file.fullName()); | ||
| + | else Serial.print(file.name()); | ||
| + | </ | ||
| - | В файловых системах есть такое понятие как //путь//. Это последовательность вложенных | + | Определяем является ли объект директорией или файлом и печатаем соответствующий текст: |
| - | <file python Exp43-3.py[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | import os | + | if (file.isDirectory()) Serial.print(", |
| + | else Serial.print(" | ||
| + | </ | ||
| - | uos.getcwd() | + | Выводим размер объекта (для директории он всегда равен 0): |
| - | </file> | + | <code arduino[enable_line_numbers=" |
| + | Serial.print("size: "); | ||
| + | Serial.println(file.size()); | ||
| + | </code> | ||
| - | Результат: | + | В конце тела цикла открываем следующий файл в директории: |
| - | < | + | < |
| - | '/' | + | file = dir.openNextFile(); |
| + | </code> | ||
| + | |||
| + | В следующих строках мы последовательно форматируем файловую систему и инициализируем ее. | ||
| + | <code arduino[enable_line_numbers=" | ||
| + | LittleFS.format(); | ||
| + | LittleFS.begin(); | ||
| </ | </ | ||
| - | Текущей директорией является / - это значит, | ||
| - | <file python Exp43-3.py[enable_line_numbers=" | + | Создаем файл "test.txt", добавляем в него текст "Some text", закрываем файл и выводим содержимое корневой директории файловой системы: |
| - | import os | + | <code arduino[enable_line_numbers=" |
| + | File file = LittleFS.open("/ | ||
| + | file.print(" | ||
| + | file.close(); | ||
| + | listDir("/", | ||
| + | </ | ||
| - | os.chdir('/dir') | + | Создаем в корневой директории директорию " |
| - | uos.getcwd() | + | <code arduino[enable_line_numbers=" |
| - | </file> | + | LittleFS.mkdir("/dir"); |
| + | | ||
| + | </code> | ||
| - | Результат: | + | Создаем в директории " |
| - | < | + | Выводим содержимое директории " |
| - | '/dir' | + | < |
| + | file = LittleFS.open(" | ||
| + | file.print(" | ||
| + | file.close(); | ||
| + | listDir("/ | ||
| + | listDir("/ | ||
| </ | </ | ||
| - | Это значит, что мы перешли в директорию /dir и сейчас она является текущей | + | |
| - | Если мы сейчас запросим список файлов, то получим пустой ответ так как в директории /dir у нас нет файлов. Мы можем получить список файлов в корне | + | Удаляем сначала файл " |
| - | < | + | < |
| - | files = os.listdir('/') | + | |
| + | LittleFS.rmdir("/ | ||
| + | listDir("/", | ||
| </ | </ | ||
| - | Вернемся обратно в корень файловой системы и удалим директорию dir: | + | Переименовываем файл |
| - | <file python Exp43-4.py[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | import os | + | |
| + | listDir("/", | ||
| + | </ | ||
| - | os.chdir('/' | + | Ниже приведен полный вывод программы в последовательный порт: |
| - | os.rmdir(' | + | <code> |
| - | </file> | + | |
| - | Директорию нельзя удалить, | + | name: test.txt type: file, size: 9 |
| - | Также мы можем удалить файл | + | name: dir, type: folder, size: 0 |
| - | <code python> | + | name: test.txt type: file, size: 9 |
| - | uos.remove(' | + | |
| - | </code> | + | name: test2.txt type: file, size: 15 |
| + | |||
| + | name: /dir/ | ||
| + | |||
| + | name: test.txt type: file, size: 9 | ||
| - | или переименовать файл | + | name: test_new.txt type: file, size: 9 |
| - | <code python> | + | |
| - | uos.rename(' | + | |
| </ | </ | ||
| - | <WRAP center round info 60%> | + | Так как программа выполняется |
| - | [[https:// | + | |
| - | </ | + | |