реклама на сайте
подробности

 
 
> Принцип построения консоли управления устройством, Поделитесь опытом кто как делает :)
mempfis_
сообщение Aug 12 2009, 08:43
Сообщение #1


Профессионал
*****

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



Стоит задача разаработать устройство которое должно иметь возможность управляться через UART.
Думаю встроить отладочную консоль чтобы можно было посылать в устройство комманды и получать ответы.
Комманды в виде одиночных символов реализовал. Теперь хочу расширить функциональность консоли и реализовать длинные команды
(наподобие АТ-комманд). Причём хочется сделать аппаратно-независимую консоль чтобы можно было переносить из проекта в проект меняя только низкоуровневые функции приёма/отправки символовов через UART.

Подскажите кто как делает подобные консоли. Интересует прежде всего как осуществляется поиск комманд в потоке принимаемых символов (выделение слов длиной 2 и более символа)? Какие стандартные библиотеки можно использовать?

Сейчас реализована входная FIFO-UART которая заполняется в прерываниях и функция считывания символа из FIFO которая возвращает -1 если нет данных или принятый символ. Одиночные символы отлавливать легко (считал - обработал), два - уже сложнее но пока реализую устанавливая флаги.
Как отловить три и более символа - вот тут нужны идеи smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Pasha
сообщение Aug 13 2009, 07:02
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AHTOXA @ Aug 13 2009, 09:17) *
Насколько я понял, автор темы хочет консоль управления/отладки.

Тогда здесь регистровая модель(у нас с Вами болтовня именно с нее началась) - никаким макаком. Но, вернемся к периодическому опросу АЦП или чего другого. Очевидно, что хотя бы период опроса может быть регулируемым.

Цитата(mempfis_ @ Aug 13 2009, 09:41) *
Именно. Мне нужна консоль ... Будет и самому интуитивно понятнее и система команд значительно расширяется.

И обязательная команда help (лучше "?")для всех приборов.
А еще страшнее - контекстная помощь, например help WFLASH или ?WFLASH - как по мне, то лучше в постфиксной форме
Код
WFLASH ?
. Объясню: "?" может рассматриваться как стандартный аргумент команды, минимум писанины. Дополнительные хинты уже зависят от принятой команды.

И еще раз скажу: просто команды - это уже обговорили. А как же быть с аргументами? wink.gif Они ж тоже переменной длины!
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 13 2009, 07:23
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 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, кроме постфиксной формы. Зачем делать это в каждой команде, проще централизованноsmile.gif
Типа :
Код
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"},
...
};


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.03093 секунд с 7
ELECTRONIX ©2004-2016