Работа с содержимым файлов
Прибор умеет читать и записывать содержимое файлов на microSD или eMMC, но не сам по себе: за это отвечают готовые алгоритмы EasyLogic. Каждый алгоритм добавляет прибору свои команды.
| Что нужно | Алгоритм | Команды |
|---|---|---|
| Записать данные в файл | galileosky/filewrite | FWRITE |
| Записать данные с сессией | galileosky/filewrited | FWRITEDNAME, FWRITED |
| Прочитать данные из файла | galileosky/fileread | FREAD |
| Узнать размер файла | galileosky/filesize | GETFILESIZE |
| Вывести файл в диагностику | galileosky/fileview | FILEVIEWSTART, FILEVIEWSTOP |
Удалить, переименовать или получить список файлов можно и без алгоритмов — командами прибора, см. «Хранение данных».
Загрузка алгоритма
Заголовок раздела «Загрузка алгоритма»Два способа.
С сервера скриптов. Настройте выход прибора в интернет по GPRS или Wi-Fi
и отправьте команду вида SCRIPT galileosky/filewrite. Дождитесь загрузки:
имя алгоритма появится на вкладке «Устройство». На медленном соединении
загрузка может занять до 20 минут.
⚙ Открыть команды
Локально по USB или Bluetooth. Загрузите соответствующий бинарный файл
(например, filewrite.bin) во вкладке EasyLogic.
⚙ Открыть EasyLogic
Алгоритмы можно комбинировать: например, загрузить одновременно чтение и запись.
Как задаются имена файлов и данные
Заголовок раздела «Как задаются имена файлов и данные»Команды FWRITE, FWRITED, FREAD, GETFILESIZE, FILEVIEWSTART не
принимают строк — все текстовые параметры передаются числами.
- каждое число — знаковое 32-битное целое в порядке Big-Endian, то есть 4 байта имени в кодировке CP-1251;
- имя обязательно заканчивается нулевым символом
\0; - общая длина команды со всеми параметрами — не более 255 байт.
Например, /data/log.txt записывается как
795107700,1630497903,1731097720,1946157056.
Собирать такие числа руками неудобно — используйте калькулятор с переводом из десятичного в шестнадцатеричный вид и таблицу CP-1251.
Запись файла
Заголовок раздела «Запись файла»Простая запись
Заголовок раздела «Простая запись»FWRITE <имя_0>[,<имя_1>,…],<pos>,<dataSize>,<data_0>[,<data_1>,…]имя_i— части имени файла, 1…64 чисел;pos— позиция начала записи, отсчёт от 0;-1— дописать в конец файла. Если файла не было, запись идёт с начала;dataSize— размер записываемых данных, 1…476 байт;data_j— сами данные, 1…119 чисел.
FWRITE 795107700,1630497903,1731097720,1946157056,10,11,-1430532899,-285278191,573785088res=1Пример записывает в /data/log.txt с позиции 10 одиннадцать байт
AA BB CC DD EE FF 00 11 22 33 44.
Коды результата: 1 — успешно, -1 — некорректное имя файла,
-2 — некорректный размер данных, -3 — ошибка записи.
Доступно на Galileosky 7x с прошивки 38.20 и на Galileosky 10. Нужна установленная microSD-карта или eMMC.
Расширенная запись с сессией
Заголовок раздела «Расширенная запись с сессией»Алгоритм filewrited разделяет установку имени и запись данных. Это удобно
при длинной записи: имя передаётся один раз, а не в каждой команде.
FWRITEDNAME <sessionId>,<имя_0>[,<имя_1>,…]sessionId—0открывает новую сессию; ответid=<sessionId>возвращает её идентификатор;- имя файла — 1…63 байта без завершающего
\0, до 64 чисел; - чтобы закрыть сессию, передайте пустое имя — параметр
0; ответres=1.
Пока сессия открыта, команды от посторонних источников блокируются. Таймер сессии — 30 секунд, каждая новая команда его обнуляет.
FWRITED <sessionId>,<pos>,<size>,<data_0>[,<data_1>,…]size— 1…480 байт;data_i— 1…120 чисел.
Коды результата: 1 — успешно, -1 — некорректная длина имени,
-2 — некорректный размер данных, -3 — ошибка записи (проверьте файловую
систему), -4 — ошибка сессии (занята или не открыта).
Чтение файла
Заголовок раздела «Чтение файла»FREAD <имя_0>[,<имя_1>,…],<pos>,<size>pos— позиция начала чтения, отсчёт от 0;size— сколько байт прочитать, 1…186.
Ответы:
- успех —
sz=<размер>,<данные в base64>; - ошибка —
er=<код>:-1некорректный размер файла,-2файл не найден,-3некорректный размер читаемых данных.
FREAD 795107700,1630497903,1731097720,1946157056,10,30sz=29,MDA6MDA6MzAKR1NNLlR1cm4gb24KMDA6MDA6NDA=Размер файла
Заголовок раздела «Размер файла»GETFILESIZE <имя_0>[,<имя_1>,…]size=160Ответ size=-1 означает, что файла не существует. На медленных каналах
запрашивайте размер перед чтением — это экономит трафик.
Просмотр файла в диагностике
Заголовок раздела «Просмотр файла в диагностике»Алгоритм fileview выводит содержимое файла диагностическими сообщениями —
удобно, когда файл нужно просто посмотреть, а не забирать.
FILEVIEWSTART <режим>,<имя_0>[,<имя_1>,…]rcv cmd. go to diagРежимы: 0 — шестнадцатеричные данные, 1 — текст, 2 — текст
и шестнадцатеричные данные. Имя файла — до 32 чисел.
Перед выводом включите во вкладке «Диагностика» опцию Диагностика алгоритмов и скриптов. После команды у вас есть 3 секунды на переключение, затем начинается вывод.
⚙ Открыть диагностику
В диагностику печатается заголовок fsize("<имя>")=<размер>:, далее
содержимое. По достижении конца файла или по команде FILEVIEWSTOP
(ответ fview stopped) вывод прекращается сообщением fview end.
Чего в приложении пока нет. Графического редактора файлов — вкладки, где имя файла, содержимое и режим hex задаются полями формы, а загрузка и запись идут с индикатором прогресса, — в конфигураторе нет. Работа с содержимым файлов выполняется командами.
См. также: Хранение данных — внутренняя память, microSD и eMMC · Удалённая синхронизация файлов (WebDAV) · Вкладка «EasyLogic» · Вкладка «Терминал»