plate-config-app/Система команд платы v2.x.md
Danil Iarosh 5513eb8a56 Improve controller startup handshake and builds
- Добавлен стартовый handshake: ожидание строки версии контроллера, пауза 2000 мс и подтверждение готовности только по READY!.

- Исправлена работа COM-буфера и аппаратного сброса через RTS, добавлены модульные тесты протокола.

- Добавлена нативная сборка для Debian 13 x86_64 и обновлена документация.

- Улучшена очистка Windows-сборки и кроссплатформенная обработка devnull.
2026-09-11 15:01:45 +03:00

58 KiB
Raw Permalink Blame History

#Периферия

by: Паша Николаевич

[!info] Информация Это раздел с информацией о плате периферийного контроллера. Информацию о плате для витрины призов смотреть в Витрина призов Текущая описанная прошивка: ver_2.3.6_no_auth_prizes.

[!info] Общие сведения

  • Плата подключается к компьютеру по переходу USB - COM порт.
  • В системе определяется как компорт.
  • Параметры: 115200-8-N-1-нет

Оглавление:

  1. #Система команд
    1. #Кнопка SERVICE на плате
    2. #Авторизация
      1. #Алгоритм авторизации
  2. #Команды
    1. #Список команд
    2. #Примечания
      1. #Служебные команды
      2. #Программы адресных диодов
        1. #Настройки адресной подсветки
        2. #Карты матриц
        3. #Специфичные программы
          1. #Отдельный раздел для призовой стойки
          2. #Отдельный раздел для Бродяги морей
          3. #Отдельный раздел для морского боя VR
            1. #Управляющие коды 85
            2. #Поведение после окончания эффекта
            3. #Direct-шкалы 8530..8534
            4. #Тесты морского боя VR 8525TVVV
            5. #Базовые эффекты 8510..8522
            6. #Спецэффекты 8540..8549
            7. #Тестовые заливки 8580..8582
            8. #Диагностика 85
          4. #Отдельный раздел для Данро
            1. #Тесты панели Данро 8625TVVV
            2. #Список эффектов
          5. #Отдельный раздел для RZ
            1. #Тесты панели RZ 8725TVVV
          6. #Дополнительные цифровые GPIO
  3. #Обновление прошивки платы
    1. #Православный новый
    2. #Пендосский старый

Система команд

  • Общение - строка, заканчивающаяся кодами (0xD)+(0xA), достаточно любого из них  для окончания строки
  • Минимально – ДВА (2, two) символа. 00+<Enter> – команда, а 0+<Enter> – уже нет
  • Максимальная длина входной строки - 199 символов
  • Таймаут - 100 миллисекунд, если строка за это время не окончилась - идет игнорирование команды

Команды получаемые от компьютера помещаются в очередь и выполняются последовательно, кроме команд "сброс" (00) и "очистка очереди". Размер очереди команд - 100 строк. Команды 00 и 90 обрабатываются сразу.

Шифрование обмена: двойное рукопожатие при помощи AES256 c фиксированным ключом.

Кнопка SERVICE на плате:

  • Если ее зажать и удержать при включении – выполнится сброс настроек контроллера
  • При работе – посылает команду «SERVICE – предлагая компьютеру перейти в режим настройки игровой программы

[!warning] Внимание! Имеются два режима работы: SILENT (тихий режим) и DEVELOPER (режим разработки, с полными логами).

Переключение режимов: Команда 01 временно переключает режим логирования. В релизной версии команда может быть удалена.

Авторизация

После загрузки контроллер не принимает никаких команд, кроме запросов на авторизацию.

После открытия COM-порта программа выполняет штатный аппаратный сброс контроллера коротким импульсом RTS и затем ожидает отдельную строку periphery controller ver_<номер версии и комментарий>. До её получения программа не отправляет контроллеру команды. После получения строки программа выдерживает паузу 2000 мс и только затем начинает авторизацию.

Запрос – требование зашифровать строку шестнадцатеричных символов с помощью AES256 алгоритма, используя известный ключ.

Компьютер генерирует случайную последовательность из 16 байт и отправляет ее контроллеру на шифрование. Тот ее шифрует и отвечает. Компьютер расшифровывает и проверяет на совпадение.

Можно считать, что контроллер проверку прошел.

==Однако==, чтобы проверить правильность управляющей программы контроллер выдает встречный запрос на шифровку. Если придет правильный ответ контроллер выдаст “READY” и будет исполнять все поступающие команды.

Алгоритм авторизации

  1. 07 – запрос авторизации от компа (16 байт или 32 HEX-символа): Пример: 078C704E9C4CBF4BA2255741C566FB0F7A
  2. Встречный запрос от контроллера: CHAL<symbols> (16 байт или 32 HEX-символа) Пример: CHAL3D821AA288C153DF7C521E03C5FB9351
  3. Компьютеру следует ответить: 08<symbols>. (16 байт или 32 HEX-символа), зашифрованных AES256 Пример: 08FC9D59F43ACB06A382E764B101B10B5B
  4. Контроллер ответит на первый запрос компа: RAES<symbols> (16 байт или 32 HEX-символа) Пример: RAES99ED731648AB8C1709CC4C3C8C3BB0E1
  5. Контроллер может отправить промежуточные ответы AUTH_PC_OK и статус.
  6. Авторизация считается полностью завершённой только после получения отдельной точной строки READY!. Ответы RAES, AUTH_PC_OK и любые другие строки сами по себе не означают успешного завершения авторизации.

Команды

Список команд

Команда Назначение, примеры, ответы
#Служебные команды Перезагрузить контроллер (RESET)
#Служебные команды Отладочная. включает-выключает подробные логи. В релизе будет отключена
#Служебные команды Подготовиться к приему файла. освободить место, отформатировать встроенную файловую, проверить хватит ли места.
Например, 02356987 - заявка на файл обновления размером 356987 байт.
Выполняется около 15 секунд, после чего весь прием  данных в порту заносится в файл "update.bin".
Ответ при приеме файла - каждый блок (4096) - размер принятого.
По окончании - переход снова в режим команд (подробнее – Обновление).
#Служебные команды Показать содержимое SPIFFS
#Служебные команды Запустить ОТА обновление с ранее записанным файлом SPIFFS: /update.bin
#Служебные команды Показать версию прошивки (указана в дефолтах)
#Служебные команды Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером
#Авторизация Безопасность (запрос авторизации от компа. На этот запрос создается рандомный запрос навстречу. См. #Алгоритм авторизации)
#Авторизация Безопасность (прием ответа от компьютера на запрос 07. См. #Алгоритм авторизации)
#Служебные команды Сброс EEPROM (параметром - MAC без двоеточий, иначе не сбросится)
10 Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью 200 мс (сколько приняли койнов, столько и подтверждений быть должно)
20X Установить состояние выходов - всего выходов 8, давать их двоичное состояние.
Например, 203 - вывести 1 и 2 выходы по единичке, остальные - нолики. Соответственно, выход на разъеме будет "прижат" к земле.
21XY Установить состояние выхода номер Х в -> Y [0,1,2(инверсия)].
Примеры:
2131 - Включить 3 по индексу выход
2170 - Выключить 7 по индексу выход
#Отдельный раздел для призовой стойки Витрина призов (см. #Отдельный раздел для призовой стойки):
25 - запрос состояния;
2501B - выдать приз из ячейки B;
2511B - открыть ячейку B;
25991/25990 - включить/выключить авторежим витрины.
30X Хоппер 1.
301 - Включить мотор хоппера
300 - Выключить мотор хоппера
309 - Выдать приз (в авторежиме1)
40X Хоппер 2.
Аналогично
#Дополнительные цифровые GPIO Дополнительные цифровые GPIO25/GPIO26 (см. #Дополнительные цифровые GPIO):
50 - запрос состояния;
5001P - конфигурация входа;
5005P - запрос уровня входа;
5010P - установка выходов.
#Программы адресных диодов] Выбор программы адресных диодов YY по каналу X.
Для программы 08 дополнительно передается цвет RRRGGGBBB, для 8012../8013.. - direct-группы из проекта 1 на 4-й ленте, где принимаются только 00 и 01..03 (см. #Программы адресных диодов).
#Отдельный раздел для морского боя VR] Эффекты активной VM-матрицы (выбирается командой 96).
Для матрицы s_b:
управляющие 00/01;
тесты 25;
direct-шкалы 30..34;
базовые 10..22;
спец. 40..49;
заливки 80..82.

Для dan_ro/rz:
эффекты 51..56;
группа 8550XX принудительно задаёт dan_ro.
SSS — длительность в секундах (см. #Отдельный раздел для морского боя VR).
#Программы адресных диодов Без параметра отключает процесс рендеринга эффектов (чтобы освободить оперативную память)
#Отдельный раздел для Данро] Данро (принудительная матрица dan_ro):
855000 — очистить экран;
855001 — автокарусель вкл;
эффекты 855010..855016;
SSS — длительность в секундах (см. #Отдельный раздел для Данро).
#Отдельный раздел для RZ] Резервная панель RZ (принудительная матрица rz):
856000 — очистить экран;
856001 — автокарусель вкл;
эффекты 856010..856016;
SSS — длительность в секундах (см. #Отдельный раздел для резервной панели RZ).
#Отдельный раздел для RZ] Резервная панель RZ:
сначала 96rz — выбрать матрицу, затем 85 — стоп;
8500/8501 — авто выкл/вкл;
эффекты 8551..8556; тесты 8525TVVV (см. #Отдельный раздел для резервной панели RZ).
#Настройки адресной подсветки Настройки WS2812:
C=0 - все 4 ленты,
C=1/2/3 - 2-й/3-й/4-й физический канал;
K=0 - порядок цветов (0 RGB, 1 RBG, 2 BRG, 3 BGR, 4 GRB, 5 GBR),
K=1 - яркость 0..255,
K=2 - гамма 0/1.
Примеры:
8901255 - яркость всех каналов 255;
89021 - включить гамму;
89304 - порядок GRB для 4-го физического канала.
90 Очистить очередь команд
91 Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде.
Для уменьшения объема передаваемой информации, преобразуется в десятичное число
Примеры:
INPUT67108863 (11111111111111111111111111) - все кнопки не нажаты
INPUT67108861 (11111111111111111111111101) - нажата вторая кнопка
91X Дополнительно: задать время антидребезга платы (10..100 для штатного использования; по умолчанию 50 мс).
Например, 9110 - установить антидребезг на 10 мс
92 Запрос значения аналоговых входов (отключает автовывод) - ответ в формате ADC0,0,0,0.
Всего 4 аналоговых входа
92X Периодический автовывод значений аналоговых входов.
Например, 92100 - каждые 100 милисекунд выдавать значения ADC (50..5000)
93 Запрос global_summa (число коинов, нестираемо)
#Карты матриц Без параметра — запрос текущей активной VM-матрицы (ответ: MATRIX:<name> ROWS:<n> COLS:<n>).
С параметром — выбор и сохранение матрицы в NVS.
Список доступных карт см. #Карты матриц.
Примеры:
96s_b — морской бой;
96dan_ro — Данро;
96rz — резервная панель.
97 Показать сохранённое в NVS имя активной матрицы.
Формат вывода: ROLE : <имя> (до 20 символов).
98 Запрос загруженности ядер, оперативки, свободного места в памяти
99 Запрос статуса

Примечания

Служебные команды

02…09 – команды относятся к служебным (обновление прошивки и двойное рукопожатие)

[!warning] Внимание! Перешивается только основная программа, не трогается таблица разделов и буты. Поэтому контроллер должен шиться изначально в файловую систему «OTA0-1M+OTA1-1M+SpiFFS-1.7M». При прошивке зашивается ключ шифрования и AES ключ авторизации. Прошивка для обновления идет бин-файлом, уже криптованным.

Программы адресных диодов

8XYY[PARAMS] - выбор программы адресных диодов, где X - номер канала в формате одной цифры, а YY - номер параметра базового эффекта.

Программа зависит от автомата и не может быть унифицирована. Именно для этого требуется обновление прошивки контроллера.

Список базовых эффектов:

  • 00 – ничего не выводить в канал
  • 01 – повторный периодический вывод буфера
  • 02 – погасить (выводить нолики на всю длину)
  • 03 – красный
  • 04 – зеленый
  • 05 - синий
  • 06 - серый (100, 100, 100)
  • 07 - белый
  • 08RRRGGGBBB - пользовательский цвет, каждая компонента 3 десятичные цифры (000..255)
  • 09 - выводить ЛГБТ переливы
  • 10 - морская волна для шапки морского боя
  • 11 - автоперебор медленных эффектов шапки морского боя

Для бродяг морей 4 канал - монетник и выдача приза: 8012хх 8013хх

  • 1200 - очистить обе direct-группы на 4-й ленте; 1201..1203 - direct-группа 1, эффекты 1..3
  • 1300 - очистить обе direct-группы на 4-й ленте; 1301..1303 - direct-группа 2, эффекты 1..3

Настройки адресной подсветки

89CKP меняет настройки вывода WS2812. Это не выбор эффекта, а настройка того, как уже рассчитанный цвет будет записан в буфер конкретной ленты:

  • C - канал: 0 для всех каналов подсветки, 0..3 для конкретного канала;
  • K - настройка: 0 порядок цветов, 1 яркость, 2 гамма-коррекция;
  • P - значение настройки. Может состоять из нескольких цифр, например 255 для яркости. Если отправить только 89CK без P, параметр будет принят как 0, поэтому лучше передавать P явно.
K P Что меняет Сохранение
0 0..5 Порядок цветов в буфере WS2812 Сохраняется в NVS
1 0..255 Яркость ленты Только до перезагрузки
2 0/1 Гамма-коррекция: 1 включить, 0 выключить Только до перезагрузки

Порядки цвета для K=0:

P Порядок
0 RGB
1 RBG
2 BRG
3 BGR
4 GRB
5 GBR

Для проверки удобно включать тестовые цвета:

  • 8003 - все ленты красным;
  • 8004 - все ленты зеленым;
  • 8005 - все ленты синим.

Если какая-то лента показывает цвета неверно, поменяйте ее порядок через 89C0P.

Примеры порядка цветов
Команда Что делает
89004 Установить GRB для всех лент
89104 Установить GRB для 2-го физического канала
89204 Установить GRB для 3-го физического канала
89304 Установить GRB для 4-го физического канала
89000 Установить RGB для всех лент
89300 Установить RGB для 4-го физического канала
Примеры яркости и гаммы
Команда Что делает
8901255 Яркость 255 для всех лент
8901128 Яркость 128 для всех лент
8931128 Яркость 128 для 4-го физического канала
89021 Включить гамма-коррекцию для всех лент
89020 Выключить гамма-коррекцию для всех лент
89321 Включить гамма-коррекцию для 4-го физического канала

Карты матриц

Выбор карты командой 96<имя>, сохраняется в NVS, восстанавливается при загрузке.

Морской бой (s_b):

  • s_b — основная карта, 58×42, 4 канала
  • s_b_v1 — версия 1, 65×69, 3 канала, 4 канал шкалы (3 шкалы)
  • s_b_v2 — версия 2, 65×69, 3 канала, 4 канал шкалы (4 шкалы)

Данро (dan_ro):

  • dan_ro — основная карта, 61×19, 2 стрипа (strip 0 зеркалируется в strip 1)
  • dan_ro_v1 — версия 1, 61×19, 1 стрип (без зеркала)

Резервная панель RZ (rz):

  • rz — основная карта, 61×19, 2 стрипа (strip 0 зеркалируется в strip 1)
  • rz_v1 — версия 1, 61×19, 1 стрип (без зеркала)

Специфичные программы

Отдельный раздел для призовой стойки
  • 20 - режим простоя призовой стойки
  • 21BCF - подсветить полку призовой стойки: B ячейка 1..5, C цвет, F мигание 0/1
  • 22 - красная мигающая тревога
  • 23 - ЛГБТ переливы на всю ленту
  • 90 - выводить внешний буфер, который заполняет рендер виртуальной панели

25CCB:

  • CC – подкоманда;
  • B – номер ячейки 1..5, если подкоманда работает с ячейкой.
Формат Назначение
25 Показать состояние всех ячеек
2501B Выдать приз из ячейки B
2511B Открыть ячейку B без списания приза
25991 Включить автозапуск режима призовой стойки и перезагрузиться через 3 сек
25990 Выключить автозапуск режима призовой стойки и перезагрузиться через 3 сек

Ответы:

  • BOX<n>_OPEN – ячейка открыта;
  • BOX<n>_ERROR – ячейка не открылась или нет приза;
  • BOX<n>_OK – ячейка закрыта и содержит приз;
  • BOX<n>_OK+CARD – в ячейке есть приз и привязанная RFID-карта;
  • BOX<n>_EMPTY – ячейка пуста.
Отдельный раздел для Бродяги морей

81XX[NN] управляет двумя отдельными direct-объектами Бродяги морей. Эта группа похожа на direct-шкалы 8530..8534, но не является частью команды 85 и используется отдельно от панелей 85, 86 и 87.

  • XX - подкоманда объекта;
  • NN - уровень заполнения объекта;
  • короткие команды 81311..81313 - эффекты для объекта 1;
  • короткие команды 81321..81323 - эффекты для объекта 2;
  • если нужен ручной уровень 1..3, передавайте уровень с ведущим нулем: 813101..813103 или 813201..813203;
  • эффекты 81311..81313 и 81321..81323 ускорены примерно в 3 раза, цветовые переходы сглажены.
Команда Назначение Максимальный уровень
8130 Очистить оба объекта -
8131NN Объект 1. Заполнить шкалу градиентом красный -> фиолетовый -> синий 21
81311 Эффект 1 объекта 1: плавный перелив синий -> фиолетовый -> фиолетово-красный -
81312 Эффект 2 объекта 1: плавный перелив фиолетовый -> синий -> сине-голубой -
81313 Эффект 3 объекта 1: мягкое мигание белым -
8132NN Объект 2. Заполнить шкалу градиентом красный -> зеленый 44
81321 Эффект 1 объекта 2: плавный перелив синий -> фиолетовый -> фиолетово-красный -
81322 Эффект 2 объекта 2: плавный перелив фиолетовый -> синий -> сине-голубой -
81323 Эффект 3 объекта 2: мягкое мигание белым -

Если NN больше длины объекта, значение ограничивается полной длиной объекта. Если NN=0, объект гаснет. Команды 8130, 8131NN и 8132NN останавливают эффект соответствующего объекта.

Примеры:

  • 8130 - очистить оба объекта
  • 813105 - установить уровень 5 для первого объекта
  • 81311 - запустить эффект 1 первого объекта
  • 81312 - запустить эффект 2 первого объекта
  • 81313 - запустить эффект 3 первого объекта
  • 81321 - запустить эффект 1 второго объекта
  • 81322 - запустить эффект 2 второго объекта
  • 81323 - запустить эффект 3 второго объекта
  • 813101 - вручную установить уровень 1 для первого объекта, не запускать эффект
  • 813201 - вручную установить уровень 1 для второго объекта, не запускать эффект
  • 813121 - полностью зажечь первый объект
  • 813244 - полностью зажечь второй объект
Отдельный раздел для морского боя VR

85XX[SSS] управляет виртуальной панелью морского боя (s_b). Это отдельная группа анимаций, которая работает независимо от обычных программ подсветки.

  • XX – код управления или эффекта, две цифры после 85;
  • SSS – необязательная длительность в секундах, все оставшиеся цифры после XX;
  • для direct-шкал XX=30..34 хвост команды трактуется как уровень 0..22, а не как время;
  • для тестов XX=25 хвост команды разбирается как TVVV.

Примеры разбора:

Команда Как разбирается
85 Остановить анимации s_b
8500 Автокарусель выключена, очистить экран, перейти в ожидание
8501 Автокарусель включена
8510 Горизонтальная волна с длительностью по умолчанию
851005 Горизонтальная волна на 5 секунд
853105 Первая direct-шкала на уровень 5
854506 CHARGE на 6 секунд
858006 Красная тестовая заливка на 6 секунд

85 без параметра отключает анимации s_b. В debug-режиме контроллер может отправить 85 - rendering OFF.

Любая непустая команда 85... запускает анимации s_b, если они еще не запущены. Direct-группы 813x и 8530..8534 управляются отдельными командами и не смешиваются с обычными эффектами 85.

Анимации рассчитываются как виртуальная 2D-панель. Для внешней программы важны только коды эффектов, длительность и правила возврата к предыдущему состоянию.

Управляющие коды 85
XX Назначение Длительность по умолчанию
00 Автокарусель выключена, очистить экран, перейти в ожидание -
01 Автокарусель включена 10 сек на эффект
Поведение после окончания эффекта
  • Если запущен базовый эффект 10..22 и автокарусель выключена, после истечения времени экран очищается и s_b переходит в ожидание.
  • Если автокарусель включена, базовые эффекты переключаются по кругу 10 -> 11 -> ... -> 22 -> 10.
  • Если запущен спецэффект 40..49 или 80..82, после завершения контроллер возвращается к последнему базовому эффекту.
  • Если автокарусель выключена, после спецэффекта экран очищается и уходит в ожидание.
Direct-шкалы 8530..8534

Эти команды управляют отдельными шкалами s_b. Параметр после XX - уровень шкалы 0..22. Значения больше 22 ограничиваются до полной шкалы.

Шкалы живут независимо от эффектов и не обнуляются при 8500, 8501, 8510..8522, 8540.., перезапуске анимаций или автопереходе карусели. Обновляются командами 8531..8534; 8530 вручную очищает шкалы.

Команда Назначение Параметр
8530 Очистить все direct-шкалы не используется
8531NN Шкала 1: красный -> фиолетовый -> синий уровень 0..22
8532NN Шкала 2: красный -> зеленый уровень 0..22
8533NN Шкала 3: красный -> фиолетовый -> синий уровень 0..22
8534NN Шкала 4: красный -> зеленый уровень 0..22

Примеры:

  • 8530 - очистить все direct-шкалы
  • 853105 - установить уровень 5 для первой шкалы
  • 853222 - полностью зажечь вторую шкалу
  • 853300 - погасить третью шкалу
  • 853422 - полностью зажечь четвертую шкалу
Тесты морского боя VR 8525TVVV

При запуске теста обычные анимации s_b останавливаются, и панель переходит в тестовый режим.

Команда Назначение
85250 Стоп теста, очистить тестовый режим
85251 Общий тест подсветки VR: бегущая змейка, цвета меняются
85252NN Тест строки панели VR, NN - номер строки
85253NN Тест столбца панели VR, NN - номер столбца
85254NNN Тест адресного элемента NNN

Примеры:

  • 85251 - змейка VR
  • 8525212 - строка 12 VR
  • 852533 - столбец 3 VR
  • 85254105 - адресный элемент 105
Базовые эффекты 8510..8522
XX Имя в коде Визуальный смысл Длительность по умолчанию
10 hor wave Горизонтальная волна: синяя и красная волны идут навстречу 10 сек
11 vert wave Вертикальная морская волна снизу вверх/вниз, ping-pong 10 сек
12 diag wave Диагональная волна с темно-синим/оранжевым характером 10 сек
13 plazma Плазма: смешение синий/красный/зеленый 10 сек
14 night Ночной градиент: голубой, фиолетовый, розовый 10 сек
15 rainbow Радуга, полный HSV-спектр 10 сек
16 fire-ice Огонь-лед, красный к голубому 10 сек
17 wave Вода, диагональная темно-синяя/голубая волна 10 сек
18 stars Звезды, розово-зеленая диагональная динамика 10 сек
19 scaner Зеленый сканер с затуханием 10 сек
20 flame Поток / 2D RGB-градиент 10 сек
21 shtorm Быстрая радужная буря 10 сек
22 ice Лед, холодный вариант красный/голубой 10 сек
Спецэффекты 8540..8549

Спецэффекты предназначены для событий игры. Они имеют приоритет над базовой анимацией, очищают состояние панели перед показом и после завершения возвращают систему к предыдущему базовому состоянию или в ожидание.

XX Имя в коде Назначение Длительность по умолчанию
40 START Старт: волны темно-синий -> бирюзовый снизу вверх 3 сек
41 FINISH Финиш / завершение 3 сек
42 ONE_SHOT Попадание / торпеда 2 сек
43 SHOT Выстрел / boom: красно-оранжево-желтые полосы от центра 1 сек
44 MISS Промах: зелено-голубая волна снизу вверх 1 сек
45 CHARGE Зарядка: сине-красный фон и индикатор заряда 2 сек
46 SONAR Сонар: расширяющиеся концентрические круги 3 сек
47 RED WAVE Красная волна сверху вниз 3 сек
48 ALARM Тревога: мигание красным 3 сек
49 PULSE Оранжевая пульсация 2 сек
Тестовые заливки 8580..8582

Эти коды идут через тот же механизм спецэффектов:

XX Назначение Длительность по умолчанию
80 Залить всю виртуальную панель красным 3 сек
81 Залить всю виртуальную панель зеленым 3 сек
82 Залить всю виртуальную панель синим 3 сек
Диагностика 85

В debug-режиме возможны сообщения:

Сообщение Значение
85 - rendering ON Рендер s_b запущен
85 - rendering OFF Рендер остановлен командой 85
[S_B_] autoCarousel ON Автокарусель включена
[S_B_] autoCarousel OFF Автокарусель выключена, экран очищен
[S_B_] effect: 85XX (...) Запущен базовый эффект
[S_B_] gauge: 85XX, level=N Обновлена direct-шкала 30..34
[S_B_] spec: XX (...) Запущен спецэффект
[S_B_] effect done, waiting... Эффект завершен, экран очищен, режим ожидания

Ограничения текущего кода:

  • параметры после 85 должны быть цифрами, но строгой проверки каждого символа сейчас нет;
  • для спецэффектов в текущем коде принимается любой XX >= 40, но безопасно описаны только 40..49 и 80..82;
  • полный останов анимаций выполняется пустой командой 85.
Отдельный раздел для Данро

86XX[SSS]:

  • XX – команда;
  • SSS – время в секундах.

Пример: 864906 – включить эффект "Падающие ряды" на 6 секунд

86 – без параметра отключает анимации Данро.

Команды 86XX[SSS] управляют только панелью Данро и не меняют direct-объекты других аппаратов.

Тесты панели Данро 8625TVVV

При запуске теста обычные анимации Данро останавливаются, и панель переходит в тестовый режим.

Команда Назначение
86250 Стоп теста, очистить тестовый режим
86251 Общий тест подсветки Данро: бегущая змейка, цвета меняются
86252NN Тест строки панели Данро, NN - номер строки
86253NN Тест столбца панели Данро, NN - номер столбца
86254NNN Тест адресного элемента NNN

Примеры:

  • 86251 - змейка Данро
  • 8625212 - строка 12 Данро
  • 862533 - столбец 3 Данро
  • 86254105 - адресный элемент 105
Список эффектов
Команда (XX) Название эффекта
00 Autoplay OFF, очистить экран
01 Autoplay ON
25 Тесты подсветки панели
40 Горизонтальная волна
41 Вертикальная волна
42 Диагональная волна
43 Радуга
44 Волна вверх
45 Вертикальная волна вверх
46 Конечная волна
47 Синяя волна
48 Диагональная волна 2
49 Падающие ряды
50 Оранжевая волна
51 Морская волна
52 Диагональная волна 3
Отдельный раздел для RZ

87XX[SSS] - резервная виртуальная панель. Формат и эффекты совпадают с 86.

Команды 87XX[SSS] управляют только резервной панелью RZ и не меняют direct-объекты других аппаратов.

Тесты панели RZ 8725TVVV

При запуске теста обычные анимации RZ останавливаются, и панель переходит в тестовый режим.

Команда Назначение
87250 Стоп теста, очистить тестовый режим
87251 Общий тест подсветки RZ: бегущая змейка, цвета меняются
87252NN Тест строки панели RZ, NN - номер строки
87253NN Тест столбца панели RZ, NN - номер столбца
87254NNN Тест адресного элемента NNN

Примеры:

  • 8701 - включить автоперебор резервной панели
  • 8743 - rainbow с длительностью по умолчанию
  • 872533 - тест столбца 3
  • 87254105 - адресный элемент 105
  • 87 - остановить анимации
Дополнительные цифровые GPIO

50CCP:

  • CC – подкоманда;
  • P – числовой параметр.
Формат Назначение
50 Показать режимы и уровни GPIO25/GPIO26
5001P Настроить режимы: если P > 9, GPIO25 выход; если младший бит P равен 1, GPIO26 выход
5005P Показать краткое состояние: ADD:..
5010P Установить уровни выходов: GPIO25 = P > 9, GPIO26 = младший бит P

Обновление прошивки платы

Православный (новый)

Зайти в Новое приложение для работы с платой, и Новое приложение для работы с платой#Обновление прошивки через него.

Для этого надо:

  1. Заполучить новую прошивку
  2. Подключить плату
  3. Открыть приложение
  4. Подключиться к плате через приложение
  5. Обновить прошивку через специальный пункт "Обновление прошивки"

Пендосский (старый)

Файл обновления принимается командой 02<size>. После полного приема контроллер отвечает текущим количеством записанных байт и итоговым file size=<size> OK, затем обновление запускается командой 04.

Для обновления платы на новую версию прошивки надо:

  1. Волшебным образом заполучить флешку с новой прошивкой
  2. Проверить, что прошивка на плате точно старше при помощи команды 05
  3. Выбрать файл новой прошивки с флешки
  4. Выполнить появившуюся команду
  5. После успешного выполнения команды, проверить состояние файла обновления
  6. При наличии выделенного места, обновить прошивку при помощи команды 04, дождаться завершения обновления
  7. Проверить, что прошивка на плату встала при помощи команды 05
  8. ...
  9. PROFIT!

  1. Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK" ↩︎