|
Принцип построения консоли управления устройством, Поделитесь опытом кто как делает :) |
|
|
|
Aug 12 2009, 08:43
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Стоит задача разаработать устройство которое должно иметь возможность управляться через UART. Думаю встроить отладочную консоль чтобы можно было посылать в устройство комманды и получать ответы. Комманды в виде одиночных символов реализовал. Теперь хочу расширить функциональность консоли и реализовать длинные команды (наподобие АТ-комманд). Причём хочется сделать аппаратно-независимую консоль чтобы можно было переносить из проекта в проект меняя только низкоуровневые функции приёма/отправки символовов через UART. Подскажите кто как делает подобные консоли. Интересует прежде всего как осуществляется поиск комманд в потоке принимаемых символов (выделение слов длиной 2 и более символа)? Какие стандартные библиотеки можно использовать? Сейчас реализована входная FIFO-UART которая заполняется в прерываниях и функция считывания символа из FIFO которая возвращает -1 если нет данных или принятый символ. Одиночные символы отлавливать легко (считал - обработал), два - уже сложнее но пока реализую устанавливая флаги. Как отловить три и более символа - вот тут нужны идеи
|
|
|
|
|
 |
Ответов
|
Aug 13 2009, 07:02
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(AHTOXA @ Aug 13 2009, 09:17)  Насколько я понял, автор темы хочет консоль управления/отладки. Тогда здесь регистровая модель(у нас с Вами болтовня именно с нее началась) - никаким макаком. Но, вернемся к периодическому опросу АЦП или чего другого. Очевидно, что хотя бы период опроса может быть регулируемым. Цитата(mempfis_ @ Aug 13 2009, 09:41)  Именно. Мне нужна консоль ... Будет и самому интуитивно понятнее и система команд значительно расширяется. И обязательная команда help (лучше "?")для всех приборов. А еще страшнее - контекстная помощь, например help WFLASH или ?WFLASH - как по мне, то лучше в постфиксной форме Код WFLASH ? . Объясню: "?" может рассматриваться как стандартный аргумент команды, минимум писанины. Дополнительные хинты уже зависят от принятой команды. И еще раз скажу: просто команды - это уже обговорили. А как же быть с аргументами?  Они ж тоже переменной длины!
|
|
|
|
|
Aug 13 2009, 07:23
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Pasha @ Aug 13 2009, 13:02)  Но, вернемся к периодическому опросу АЦП или чего другого. Очевидно, что хотя бы период опроса может быть регулируемым. Дык, какие проблемы? Аргументы (всё что после команды) передаются обработчику. Там может быть и период: >POOLADC 0 0 20 - опросить АЦП, число опросов 0 (до нажатия кнопы), канал 0, интервал 20 мс. Цитата(_Pasha) И обязательная команда help (лучше "?")для всех приборов. А еще страшнее - контекстная помощь, например help WFLASH или ?WFLASH - как по мне, то лучше в постфиксной форме Код WFLASH ? . +1, кроме постфиксной формы. Зачем делать это в каждой команде, проще централизованно  Типа : Код typedef struct { char *const command_name; // command name CmdHandler handler; // command handler char *const help_text; // command description }Command;
const Command CommandTable[] = { {"GET", GetCommandHandler, "get variable (VARS for list)"}, {"SET", SetCommandHandler, "set variable (VARS for list)"}, {"HELP", HelpHandler, "display this help"}, ... };
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
mempfis_ Принцип построения консоли управления устройством Aug 12 2009, 08:43 ukpyr нужен приемный буфер на макс.количество символов в... Aug 12 2009, 10:17 _Pasha Собираете словарь команд (ASCIIZ), например
Кодcon... Aug 12 2009, 10:26 zltigo Цитата(_Pasha @ Aug 12 2009, 13:26) Собир... Aug 12 2009, 11:24  _Pasha Цитата(zltigo @ Aug 12 2009, 14:24) Станд... Aug 12 2009, 11:40  AlexMad Цитата(zltigo @ Aug 12 2009, 15:24) С раз... Aug 20 2009, 18:52   zltigo Цитата(AlexMad @ Aug 20 2009, 20:52) А не... Aug 20 2009, 19:23 DpInRock Длинные команды - бессмысленное пижонство. Aug 12 2009, 12:06 Goodefine Зато обеспечивают детерминированное поведение сист... Aug 12 2009, 14:31 Dog Pawlowa Цитата(Goodefine @ Aug 12 2009, 17:31) За... Aug 12 2009, 15:44 Goodefine Цитата(Dog Pawlowa @ Aug 12 2009, 18:44) ... Aug 12 2009, 15:50 Dog Pawlowa Цитата(Goodefine @ Aug 12 2009, 18:50) В ... Aug 12 2009, 17:21  AHTOXA Цитата(Dog Pawlowa @ Aug 12 2009, 23:21) ... Aug 12 2009, 17:49   Dog Pawlowa Цитата(AHTOXA @ Aug 12 2009, 20:49) Гораз... Aug 12 2009, 18:27    AHTOXA Цитата(Dog Pawlowa @ Aug 13 2009, 00:27) ... Aug 12 2009, 19:06    _Pasha Цитата(Dog Pawlowa @ Aug 12 2009, 21:27) ... Aug 12 2009, 19:10 SasaVitebsk Читал протокол Пирамида. Правда это надпротокольны... Aug 12 2009, 19:08 Goodefine Цитата(Dog Pawlowa @ Aug 12 2009, 20:21) ... Aug 12 2009, 19:32 Dog Pawlowa Цитата(Goodefine @ Aug 12 2009, 22:32) В ... Aug 13 2009, 02:18 _Pasha Цитата(zltigo @ Aug 12 2009, 14:24) Код..... Aug 13 2009, 05:02 AHTOXA Цитата(_Pasha @ Aug 13 2009, 11:02) Ничег... Aug 13 2009, 05:45  _Pasha Цитата(AHTOXA @ Aug 13 2009, 08:45) Как р... Aug 13 2009, 05:52   AHTOXA Что-то не могу себе представить... Расскажите чуть... Aug 13 2009, 06:00    _Pasha Цитата(AHTOXA @ Aug 13 2009, 09:00) как, ... Aug 13 2009, 06:09     AHTOXA Насколько я понял, автор темы хочет консоль управл... Aug 13 2009, 06:17      mempfis_ Цитата(AHTOXA @ Aug 13 2009, 09:17) Наско... Aug 13 2009, 06:41       SasaVitebsk Цитата(mempfis_ @ Aug 13 2009, 09:41) ... Aug 13 2009, 16:01  _Pasha Цитата(AHTOXA @ Aug 13 2009, 10:23) проще... Aug 13 2009, 07:33   AHTOXA Цитата(_Pasha @ Aug 13 2009, 13:33) Ага. ... Aug 13 2009, 09:30 rezident В дополнение ко всему хотел бы заметить, что конфи... Aug 13 2009, 19:03 SasaVitebsk Цитата(rezident @ Aug 13 2009, 22:03) В д... Aug 14 2009, 06:54  MrYuran Цитата(SasaVitebsk @ Aug 14 2009, 10:54) ... Aug 14 2009, 07:13 amaora Обычно использую бинарный протокол для отладки, но... Aug 14 2009, 17:02 defunct ЦитатаПринцип построения консоли управления устрой... Aug 15 2009, 15:52 C.S. Цитата(mempfis_ @ Aug 12 2009, 12:43) Сей... Aug 25 2009, 11:56 _Pasha Цитата(C.S. @ Aug 25 2009, 14:56) Смущает... Aug 25 2009, 12:08 C.S. 2_Pasha Кхм, я путаюсь уровнем ниже. Как принимаем... Aug 25 2009, 12:25 _Pasha Цитата(C.S. @ Aug 25 2009, 15:25) Первый ... Aug 25 2009, 12:58 AHTOXA Цитата(C.S. @ Aug 25 2009, 18:25) Как при... Aug 25 2009, 13:03 C.S. На время между символами. Наверное, может и не нуж... Aug 25 2009, 13:02 _Pasha Цитата(C.S. @ Aug 25 2009, 16:02) А sym_p... Aug 25 2009, 13:17 C.S. ЦитатаРазворачиваем это все в другой буфер (к сожа... Aug 25 2009, 13:26 _Pasha Цитата(C.S. @ Aug 25 2009, 16:26) Аааа... Aug 25 2009, 13:36 C.S. Цитатаэто ж ответ от девайса пойдет только после п... Aug 25 2009, 13:54 _Pasha Цитата(C.S. @ Aug 25 2009, 16:54) Так вед... Aug 25 2009, 14:03 C.S. Так а если надо будет вернуть чего-то более разумн... Aug 25 2009, 14:17 _Pasha Цитата(C.S. @ Aug 25 2009, 17:17) Так а е... Aug 25 2009, 14:36 C.S. Понял. Идиот. Спасибо большое! Aug 25 2009, 15:18 C.S. Парсинг команд сделал. Использовал побайтовое срав... Aug 27 2009, 09:33 _Pasha Цитата(C.S. @ Aug 27 2009, 12:33) Команды... Aug 27 2009, 14:19 C.S. Хм, попробую и так. Просто делить их по запятой. А... Aug 27 2009, 14:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|