Skip to content

TrollFace324/ControlStation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Идентификаторы запросов станции управления

Автоматический запрос

  • Если фронтенд не отправляет никаких запросов в течение 10 секунд, он автоматически отправляет REQ,-1.

  • Идентификатор -1 — это запрос на поддержание соединения и не привязан к какой-либо кнопке.

  • Подчиненный модуль отвечает на него одним сообщением: RESP,-1.

На фронтенде все кнопки, кроме fullscreen-кнопки в правом верхнем углу, отправляют запрос на slave через master.

Общий формат запроса:

  • запрос: REQ,<id>

Формат ответа зависит от id.

Обычный одиночный ответ:

  • RESP,<id>

Повторный ответ для специальных id:

  • первый ответ: RESP,<id>,0
  • второй ответ: RESP,<id>,1

Для всех кнопок в DOM добавлен CSS-класс вида req_id-<baseId>.

Для servo-кнопок реальный id дополняется номером сервопривода:

  • базовый id: 20
  • если выбран сервопривод 1, в slave уходит 20_1
  • если выбран сервопривод 4, в slave уходит 20_4

Во фронтенде номер сервопривода берётся явно из servoOptions[].servoNumber, а не из текста кнопки.

Также для удобства на кнопки добавлен data-request-id, а на servo-кнопки ещё и data-servo-number.

master принимает ответ так:

  • для обычных id ждёт один пакет от slave
  • для специальных id ждёт оба пакета в рамках одного HTTP-запроса
  • это нужно, чтобы второй ответ не перепутался со следующим нажатием кнопки

Повторные ответы

Повторный ответ есть у базовых id:

  • 6
  • 10
  • 11
  • 12
  • 16
  • 17
  • 20
  • 21
  • 22
  • 23
  • 24

Если это servo-команда, повторный ответ работает тоже по базовому id.

Примеры:

  • 20_1 -> сначала RESP,20_1,0, потом RESP,20_1,1
  • 24_3 -> сначала RESP,24_3,0, потом RESP,24_3,1

Поведение сайта для повторного ответа:

  • как только фронтенд получает первый ответ RESP,<id>,0, поверх сайта появляется полупрозрачное серое окно
  • это окно блокирует управление интерфейсом
  • как только фронтенд получает второй ответ RESP,<id>,1, затемнение пропадает

Карта кнопок

Кнопка CSS-класс Base id Что реально отправляется Ответ slave
Вкладка Main req_id-0 0 0 RESP,0
Вкладка Kran req_id-1 1 1 RESP,1
Вкладка Lapa req_id-2 2 2 RESP,2
Вкладка Servo req_id-3 3 3 RESP,3
Вкладка Telemetry req_id-4 4 4 RESP,4
Вкладка Label req_id-5 5 5 RESP,5
Кнопка старта автономного режима req_id-6 6 6 RESP,6,0 -> RESP,6,1
Kran: режим Авто req_id-7 7 7 RESP,7
Kran: режим Ручной req_id-8 8 8 RESP,8
Kran: стрелка вверх req_id-9 9 9 RESP,9
Kran: стрелка вниз req_id-10 10 10 RESP,10,0 -> RESP,10,1
Kran: кнопка Исходное req_id-11 11 11 RESP,11,0 -> RESP,11,1
Kran: кнопка Выбросить req_id-12 12 12 RESP,12,0 -> RESP,12,1
Lapa: кнопка Лапа 1 req_id-13 13 13 RESP,13
Lapa: кнопка Лапа 2 req_id-14 14 14 RESP,14
Lapa: кнопка Лапа 3 req_id-15 15 15 RESP,15
Lapa: кнопка Захватить req_id-16 16 16 RESP,16,0 -> RESP,16,1
Lapa: кнопка Отпустить req_id-17 17 17 RESP,17,0 -> RESP,17,1
Servo: открыть/закрыть список сервоприводов req_id-18 18 18_<servoNumber> RESP,18_<servoNumber>
Servo: выбрать сервопривод из списка req_id-19 19 19_<servoNumber> RESP,19_<servoNumber>
Servo: кнопка A- req_id-20 20 20_<servoNumber> RESP,20_<servoNumber>,0 -> RESP,20_<servoNumber>,1
Servo: кнопка A+ req_id-21 21 21_<servoNumber> RESP,21_<servoNumber>,0 -> RESP,21_<servoNumber>,1
Servo: кнопка Возврат в 0 req_id-22 22 22_<servoNumber> RESP,22_<servoNumber>,0 -> RESP,22_<servoNumber>,1
Servo: кнопка Задать 0 с текущего положения req_id-23 23 23_<servoNumber> RESP,23_<servoNumber>,0 -> RESP,23_<servoNumber>,1
Servo: кнопка Задать конечную позицию с текущего положения req_id-24 24 24_<servoNumber> RESP,24_<servoNumber>,0 -> RESP,24_<servoNumber>,1
Servo: кнопка Отправить req_id-25 25 25_<servoNumber> RESP,25_<servoNumber>
Telemetry: открыть/закрыть список req_id-26 26 26 RESP,26
Telemetry: пункт Общая информация req_id-27 27 27 RESP,27
Telemetry: пункт Колесная база req_id-28 28 28 RESP,28
Telemetry: пункт Подъемник req_id-29 29 29 RESP,29

Задержка второго ответа

На slave второй ответ для специальных id сейчас отправляется через 2000 ms.

Эта задержка задаётся константой REPEATED_RESPONSE_DELAY_MS в atMega/src/main.cpp.

Исключение

Fullscreen-кнопка в правом верхнем углу:

  • не имеет req_id-*
  • не отправляет запросов на slave
  • только переключает режим полного экрана браузера

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors