Технический форум по робототехнике.
=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.
Проверил - всё работает, дальше пропишу процедуру регистрации парсеров по первым буквам и вынесу в отдельные процедуры парсеры под каждую команду. А после сделаем механизм регистрации парсеров такой же, как механизм регистрации драйверов.
setar » 23 авг 2010, 23:54
похоже Вы приблизились к линукс подобному командному интерфейсу
что то типа усеченного функционала применяемого в загрузчиках типа u-boot
возможно есть смысл посмотреть готовый код парсинга параметров командной стороки и выдачи хелпа в коде u-boot
Добавлено спустя 2 минуты 52 секунды:
если длинна строки не очень коротка то возможно есть смысл парсить полные команды с их укороченными алиасами
например чтобы можно было написать
set port 0 direction out
или
s p 0 d o
Виталий » 24 авг 2010, 00:05
Мы с товарищем решили для сделать немного по-другому.
Просто сделали RPC для контроллера и все, на мой взгляд это удобнее.
Скоро выложим версию для Ардуино.
Кратко суть такая...
Пишешь функцию на контроллере, которая реализует какую-то работу с периферией:
- Код: Выделить всё • Развернуть
void SetUART1Baud(int baud);
Жмешь в Ардуине спец. кнопку, генерируются привязки, при помощи которых можно вызвать эту функцию с ПК.
Пользоваться надо будет так (для C#):
- Код: Выделить всё • Развернуть
var robot = new RemoteObject();
robot.SetUART1Baud(9600);
=DeaD= » 24 авг 2010, 07:52
Виталий писал(а):Мы с товарищем решили для сделать немного по-другому.
Просто сделали RPC для контроллера и все, на мой взгляд это удобнее.
Это не то чтобы удобнее, это вообще другая задача

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

=DeaD= » 24 авг 2010, 08:38
Говорил-то говорил, а вот ключевой пункт 2 из-за которого по большому счету всё и затевается ты упустил

Очень уж утомительно объяснять людям 2 протокола и поддерживать 2 прошивки

остальное - приятный бонус

Grem » 24 авг 2010, 09:41
что будет с существующим вариантом ORFA?
=DeaD= » 24 авг 2010, 10:05
Я думаю он будет интегрирован в новый вариант, т.е. система будет понимать как команды "S40 11 00 05BC P", так и "#0 P1500", первый формат останется по большому счету для работы с подчиненными i2c-девайсами, а совместимость со старым протоколом - приятный бонус.
Grem » 24 авг 2010, 10:38
да, я совместимость и имел ввиду. хотя мне, как конечному пользователю, существующий. вариант команд более нравится.
=DeaD= » 24 авг 2010, 11:20
Существующий вариант команд, или в самом плохом случае - аналогичный, будет сохранён. Я просто убьюсь писать весь софт с нуля под шестиногов и прочую живность, поэтому крайне хочется иметь совместимость по командам с SSC-32.
=DeaD= » 26 авг 2010, 11:42
Текущий вариант файлов (от command.* отказался) для папки serialgate
- Вложения
-
serialgate.zip
- (7.16 КиБ) Скачиваний: 0
Vooon » 26 авг 2010, 18:52
Выкинул serialgate, orc32.
i2c_slave сделал системной библиотекой i2c. ее еще нужно научить перекидывать свои сообщения мастер-внутренний слейв.
Написал eTerm, в нем набор парсеров sg и orc32 (TODO).
=DeaD= » 01 окт 2010, 00:04
Добавил в orc32 парсер обработку команды управления сервами #+P с модификаторами S и T
Добавил в sg парсер обработку локальных i2c запросов
Уже близко к релизу. Осталось сделать парсеры и простые команды для работы с портами и АЦП.
Текущие результаты в репозитарии, ветка new_parser
Michael_K » 01 окт 2010, 02:07
Dead, а можно прояснить вот такой вопрос.
Допустим, я хочу подключить к I2C на OR-контроллере внешние датчики (ну, компас, например и термометр)... Cможет ли штатная ORFA с ними работать, или надо вписывать свои драйверы-адаптеры?
Или тот же вопрос с другой стороны - допустим, я хочу сделать I2C датчик. Что мне нужно знать, чтобы ОРФЕ было хорошо?
Пытался читать доку - не въехал...
(для кого вы ее писали - для себя?)
=DeaD= » 01 окт 2010, 07:27
Штатная ORFA должна без вопросов работать с внешними i2c-slave устройствами.
Пытался читать доку - не въехал...
(для кого вы ее писали - для себя?)
Обожаю такие глубокомысленные замечания.
1. Какую конкретно доку пытался читать?
2. М.б. для пущей конструктивности критики стоит указать что конкретно непонятным осталось?