roboforum.ru

Технический форум по робототехнике.

Новый протокол под ORFA

Правила форума
Правила раздела OpenRobotics

Новый протокол под ORFA

=DeaD= » 23 авг 2010, 23:03

Цели:
1. Получить более человек-читаемый протокол работы с контроллерами OR;
2. Унифицировать прошивки ORFA и ORC-32 (которая совместимая по командам с SSC-32);
3. Позволить в протоколе выполнять не только унифицированные i2c-команды, но и обращаться к конкретным устройствам удобным, а не унифицированным способом. Например выставление сервы 0 в положение 1600 будет "#0 P1600<cr>";
4. Встроить минимальную подсказку прямо в контроллер, чтобы можно было в терминале написать "?" и получить подсказку по синтаксису основных команд;

Начал работу, для начала свел оба парсера в одно место (сейчас парсинг идёт в два захода - сначала парсится команда из уарта - идёт контроль синтаксиса + все числа из текста переводятся в байты, а потом это выполняется).

Так что вместо прежних parser.c + command.c теперь будет чистый parcer.c.

Проверил - всё работает, дальше пропишу процедуру регистрации парсеров по первым буквам и вынесу в отдельные процедуры парсеры под каждую команду. А после сделаем механизм регистрации парсеров такой же, как механизм регистрации драйверов.

Re: Новый протокол под ORFA

setar » 23 авг 2010, 23:54

похоже Вы приблизились к линукс подобному командному интерфейсу
что то типа усеченного функционала применяемого в загрузчиках типа u-boot
возможно есть смысл посмотреть готовый код парсинга параметров командной стороки и выдачи хелпа в коде u-boot

Добавлено спустя 2 минуты 52 секунды:
если длинна строки не очень коротка то возможно есть смысл парсить полные команды с их укороченными алиасами
например чтобы можно было написать
set port 0 direction out
или
s p 0 d o

Re: Новый протокол под ORFA

Виталий » 24 авг 2010, 00:05

Мы с товарищем решили для сделать немного по-другому.
Просто сделали RPC для контроллера и все, на мой взгляд это удобнее.
Скоро выложим версию для Ардуино.

Кратко суть такая...
Пишешь функцию на контроллере, которая реализует какую-то работу с периферией:
Код: Выделить всёРазвернуть
void SetUART1Baud(int baud);

Жмешь в Ардуине спец. кнопку, генерируются привязки, при помощи которых можно вызвать эту функцию с ПК.

Пользоваться надо будет так (для C#):
Код: Выделить всёРазвернуть
var robot = new RemoteObject();
robot.SetUART1Baud(9600);

Re: Новый протокол под ORFA

=DeaD= » 24 авг 2010, 07:52

Виталий писал(а):Мы с товарищем решили для сделать немного по-другому.
Просто сделали RPC для контроллера и все, на мой взгляд это удобнее.

Это не то чтобы удобнее, это вообще другая задача :) хотя тоже нужная и полезная.

Re: Новый протокол под ORFA

EdGull » 24 авг 2010, 08:27

=DeaD= писал(а):1. Получить более человек-читаемый протокол работы с контроллерами OR;
3. Позволить в протоколе выполнять не только унифицированные i2c-команды, но и обращаться к конкретным устройствам удобным, а не унифицированным способом. Например выставление сервы 0 в положение 1600 будет "#0 P1600<cr>";
4. Встроить минимальную подсказку прямо в контроллер, чтобы можно было в терминале написать "?" и получить подсказку по синтаксису основных команд;

а я тебе сколько лет назад говорил об этом? :wink:

Re: Новый протокол под ORFA

=DeaD= » 24 авг 2010, 08:38

Говорил-то говорил, а вот ключевой пункт 2 из-за которого по большому счету всё и затевается ты упустил :)
Очень уж утомительно объяснять людям 2 протокола и поддерживать 2 прошивки :pardon: остальное - приятный бонус :roll:

Re: Новый протокол под ORFA

Grem » 24 авг 2010, 09:41

что будет с существующим вариантом ORFA?

Re: Новый протокол под ORFA

=DeaD= » 24 авг 2010, 10:05

Я думаю он будет интегрирован в новый вариант, т.е. система будет понимать как команды "S40 11 00 05BC P", так и "#0 P1500", первый формат останется по большому счету для работы с подчиненными i2c-девайсами, а совместимость со старым протоколом - приятный бонус.

Re: Новый протокол под ORFA

Grem » 24 авг 2010, 10:38

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

Re: Новый протокол под ORFA

=DeaD= » 24 авг 2010, 11:20

Существующий вариант команд, или в самом плохом случае - аналогичный, будет сохранён. Я просто убьюсь писать весь софт с нуля под шестиногов и прочую живность, поэтому крайне хочется иметь совместимость по командам с SSC-32.

Re: Новый протокол под ORFA

=DeaD= » 26 авг 2010, 11:42

Текущий вариант файлов (от command.* отказался) для папки serialgate
Вложения
serialgate.zip
(7.16 КиБ) Скачиваний: 0

Re: Новый протокол под ORFA

Vooon » 26 авг 2010, 18:52

Выкинул serialgate, orc32.
i2c_slave сделал системной библиотекой i2c. ее еще нужно научить перекидывать свои сообщения мастер-внутренний слейв.

Написал eTerm, в нем набор парсеров sg и orc32 (TODO).

Re: Новый протокол под ORFA

=DeaD= » 01 окт 2010, 00:04

Добавил в orc32 парсер обработку команды управления сервами #+P с модификаторами S и T
Добавил в sg парсер обработку локальных i2c запросов

Уже близко к релизу. Осталось сделать парсеры и простые команды для работы с портами и АЦП.

Текущие результаты в репозитарии, ветка new_parser

Re: Новый протокол под ORFA

Michael_K » 01 окт 2010, 02:07

Dead, а можно прояснить вот такой вопрос.
Допустим, я хочу подключить к I2C на OR-контроллере внешние датчики (ну, компас, например и термометр)... Cможет ли штатная ORFA с ними работать, или надо вписывать свои драйверы-адаптеры?
Или тот же вопрос с другой стороны - допустим, я хочу сделать I2C датчик. Что мне нужно знать, чтобы ОРФЕ было хорошо?

Пытался читать доку - не въехал...
(для кого вы ее писали - для себя?)

Re: Новый протокол под ORFA

=DeaD= » 01 окт 2010, 07:27

Штатная ORFA должна без вопросов работать с внешними i2c-slave устройствами.

Пытался читать доку - не въехал...
(для кого вы ее писали - для себя?)

Обожаю такие глубокомысленные замечания.
1. Какую конкретно доку пытался читать?
2. М.б. для пущей конструктивности критики стоит указать что конкретно непонятным осталось?


Rambler\'s Top100 Mail.ru counter