-
Notifications
You must be signed in to change notification settings - Fork 3
Api
AJIOB edited this page Apr 20, 2018
·
17 revisions
Версию API v4 смотрите по следующей ссылке: https://github.com/Lipotam/trackPlatform/blob/master/docs/Arduino%20api%20v4/Requirements.md
Версия API | Стоп-символ команды | Символ-разделитель между однотипными операндами в одной команде (запросе) | Команда-ответ | Команда подключения (в HEX представлении) | Команда отключения (в HEX представлении) | Первый коммит | Последний коммит | Версия списка поддерживаемых команд | Поддержка USB | Поддержка Bluetooth | Поддержка Wi-Fi | Отключение управляющего устройства по таймауту |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Отсутствует | Точка с запятой (; ) |
Отсутствует по умолчанию (только ответы на запросы) | Не требуется | Не требуется | Не известно | Не известно | 0 | - | + | - | - |
1 | Вертикальная черта (| ) |
Точка с запятой (; ) |
Отсутствует по умолчанию (только ответы на запросы) | 04 01 01 | 04 02 | cxx-api arduino-api | cxx-api arduino-api | 1 | + | + | - | - |
2 | Вертикальная черта (| ) |
Точка с запятой (; ) |
OK (и потом ответ на запрос, если описан в списке команд для данной команды) | 04 01 02 | 04 02 | arduino-api | arduino-api | 1 | + | + | Пока нет | - |
3 | Вертикальная черта (| ) |
Точка с запятой (; ) |
OK (и потом ответ на запрос, если описан в списке команд для данной команды) | 04 01 03 | 04 02 | arduino-api | arduino-api | 2 | + | + | Пока нет | + |
Команда | Группа команды | Запрос (в HEX представлении) | Ответ (в HEX представлении) | Версии списка команд, поддерживающие данную команду |
---|---|---|---|---|
Подключение | Команды соединения (CommunicationCommands) | 04 01 <версия API, 1 байт> | Отсутствует | Все, начиная с версии 1 |
Отключение | Команды соединения (CommunicationCommands) | 04 02 | Отсутствует | Все, начиная с версии 1 |
Обновление соединения | Команды соединения (CommunicationCommands) | 04 03 | Отсутствует | Все, начиная с версии 2 |
Движение вперед | Команды передвижения (MoveEnum) | 01 01 | Отсутствует | Все |
Движение влево | Команды передвижения (MoveEnum) | 01 02 | Отсутствует | Все |
Движение вправо | Команды передвижения (MoveEnum) | 01 03 | Отсутствует | Все |
Движение назад | Команды передвижения (MoveEnum) | 01 04 | Отсутствует | Все |
Остановить движение | Команды передвижения (MoveEnum) | 01 05 | Отсутствует | Все |
Движение вперед с заданной скоростью | Команды передвижения (MoveEnum) | 01 06 <скорость движения в человекочитабельном виде. Параметр должен быть в промежутке [0; 255]> | Отсутствует | Все |
Движение вперед заданное время | Команды передвижения (MoveEnum) | 01 07 <время движения в миллисекундах в человекочитабельном виде> | Отсутствует | Все |
Движение назад с заданной скоростю | Команды передвижения (MoveEnum) | 01 08 <скорость движения в человекочитабельном виде. Параметр должен быть в промежутке [0; 255]> | Отсутствует | Все |
Установить скорость определенной гусеницы | Команды передвижения (MoveEnum) | 01 09 <идентификатор гусеницы в человекочитабельном виде: 0 - левая гусеница, 1 - правая гусеница> 3B <скорость движения в человекочитабельном виде. Параметр должен быть в промежутке [-255; 255]> | Отсутствует | Все |
Установить угол отклонения сервопривода от левого крайнего положения в горизонтальной плоскости | Команды сервопривода (ServoCommands) | 03 01 <угол отклонения в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> | Отсутствует | Все |
Установить угол отклонения сервопривода от левого крайнего положения в вертикальной плоскости | Команды сервопривода (ServoCommands) | 03 02 <угол отклонения в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> | Отсутствует | Все |
Установить угол отклонения сервопривода от левого крайнего положения в горизонтальной и вертикальной плоскостях | Команды сервопривода (ServoCommands) | 03 03 <угол отклонения в горизонтальной плоскости в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> 3B <угол отклонения в вертикальной плоскости в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> | Отсутствует | Все |
Получить угол отклонения сервопривода от левого крайнего положения в горизонтальной и вертикальной плоскостях | Команды сервопривода (ServoCommands) | 03 04 | <угол отклонения в горизонтальной плоскости в человекочитабельном виде в промежутке [0; 180]> 3B <угол отклонения в вертикальной плоскости в человекочитабельном виде в промежутке [0; 180]> | Все |
Получить расстояние с определенного датчика расстояния | Команды сенсоров (SensorsEnum) | 02 01 <номер датчика расстояния в промежутке [1; 5]> | <расстояние до препятствия в сантиметрах (см)> | Все |
Получить расстояние со всех датчиков расстояния | Команды сенсоров (SensorsEnum) | 02 02 | <расстояние до препятствия в сантиметрах (см)> 3B <расстояние ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) | Все |
Получить данные с определенного датчика линии | Команды сенсоров (SensorsEnum) | 02 03 <номер датчика линии в промежутке [1; 5]> | <1, если под датчиком темная область, иначе 0> | Все |
Получить данные со всех датчиков линии | Команды сенсоров (SensorsEnum) | 02 04 | <1, если под датчиком темная область, иначе 0> 3B <число ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) | Все |
Получить расстояние с определенного датчика расстояния в исходном представлении | Команды сенсоров (SensorsEnum) | 02 05 <номер датчика расстояния в промежутке [1; 5]> | <расстояние до препятствия в виде, пришедшем с датчиков (без обработки)> | Все, начиная с версии 4.1 |
Получить расстояние со всех датчиков расстояния в исходном представлении | Команды сенсоров (SensorsEnum) | 02 06 | <расстояние до препятствия в виде, пришедшем с датчиков (без обработки)> 3B <расстояние ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) | Все, начиная с версии 4.1 |
Получить данные с определенного датчика линии в исходном представлении | Команды сенсоров (SensorsEnum) | 02 07 <номер датчика линии в промежутке [1; 5]> | <данные в исходном виде> | Все, начиная с версии 4.1 |
Получить данные со всех датчиков линии в исходном представлении | Команды сенсоров (SensorsEnum) | 02 08 | <данные в исходном виде> 3B <данные ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) | Все, начиная с версии 4.1 |
Особенность | Затрагиваемые версии API |
---|---|
Если отпитать платформу (arduino), то cxx приложение не может связаться с роботом по USB | Все, начиная с версии 1 |
В main для примеров приложений нужно указывать точные параметры соединения на вашем конкретном устройстве (например, для Linux - /dev/ttyS0 , для Windows - COM23 - для последовательного соединения) |
Все |
Приложение не зависит от версии используемого API (т.е. на старые версии приложения можно добавлять новые API, если не оговорено иное) | Все реазизации API под cxx |
Если предполагается использование USB как средство связи с Arduino, то нужно компилировать "решение" Visual Studio с прошивкой только в Release версии. Это обусловлено тем, что в режиме отладки (Debug компиляция) данное соединение используется для передачи внутренних отладочных сообщений от Arduino, которые понимает только Visual Micro (и, возможно, Arduino IDE) | Все |
Обновление соединения требуется производить не реже, чем раз в 2 секунды. Обновление соединения также производится отправкой любой команды (т.е. если хотя бы 2 секунды ничего из списка поддерживаемых команд не было отправлено модулю, соединение будет сброшено и модуль будет искать нового "менеджера") | Список команд v2 и выше |
Чем светлее поверхность под датчиком линии, тем меньшее напряжение будет получено на выходе (в исходном представлении). Такие данные возвращает сам датчик | Все, начиная с версии 4.1 |
Платформа вернет -1, если произошла ошибка получения информации с датчика | Все |