Перейти к содержимому
Черновик: материал сгенерирован и ещё не вычитан.

Работа с содержимым файлов

Прибор умеет читать и записывать содержимое файлов на microSD или eMMC, но не сам по себе: за это отвечают готовые алгоритмы EasyLogic. Каждый алгоритм добавляет прибору свои команды.

Что нужноАлгоритмКоманды
Записать данные в файлgalileosky/filewriteFWRITE
Записать данные с сессиейgalileosky/filewritedFWRITEDNAME, FWRITED
Прочитать данные из файлаgalileosky/filereadFREAD
Узнать размер файлаgalileosky/filesizeGETFILESIZE
Вывести файл в диагностикуgalileosky/fileviewFILEVIEWSTART, 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,573785088
res=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>,…]
  • sessionId0 открывает новую сессию; ответ 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,30
sz=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» · Вкладка «Терминал»