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

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

|
Стоит задача разаработать устройство которое должно иметь возможность управляться через UART. Думаю встроить отладочную консоль чтобы можно было посылать в устройство комманды и получать ответы. Комманды в виде одиночных символов реализовал. Теперь хочу расширить функциональность консоли и реализовать длинные команды (наподобие АТ-комманд). Причём хочется сделать аппаратно-независимую консоль чтобы можно было переносить из проекта в проект меняя только низкоуровневые функции приёма/отправки символовов через UART. Подскажите кто как делает подобные консоли. Интересует прежде всего как осуществляется поиск комманд в потоке принимаемых символов (выделение слов длиной 2 и более символа)? Какие стандартные библиотеки можно использовать? Сейчас реализована входная FIFO-UART которая заполняется в прерываниях и функция считывания символа из FIFO которая возвращает -1 если нет данных или принятый символ. Одиночные символы отлавливать легко (считал - обработал), два - уже сложнее но пока реализую устанавливая флаги. Как отловить три и более символа - вот тут нужны идеи
|
|
|
|
|
 |
Ответов
|
Aug 12 2009, 19:32
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581

|
Цитата(Dog Pawlowa @ Aug 12 2009, 20:21)  И что, как контрпример себя ведет? Использую односимвольные наборы команд в обе стороны. Никаких проблем. Очень удобно - в одну сторону идут коды нажатых клавиш, а в другую - коды символов, подлежащих отображению... У Вас все просто: все что отдал - сканкод, все что принял - подлежит отображению... Я другое имел ввиду. К примеру возьмем дисплей с управляемой внешне подсветкой. Скажем, увеличить на одну градацию - символ "h", уменьшить - "l" . Остальное - отображаем. Как тогда контроллер отреагирует на на сообщение "hello world", если не использовать детерминацию ни по длине строки, ни по времени между поступлениями символов? Если же команды будут длинными, типа "light_background_down" / "light_background_up", то лишними проверками можно себя не утруждать - шанс, что потребуется отобразить именно такую строку, минимален. В этом суть моего первого замечания...
--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
|
|
|
|
|
Aug 13 2009, 02:18
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Goodefine @ Aug 12 2009, 22:32)  В этом суть моего первого замечания... Понятно. Пожалуй, мы ушли далеко от обычного определения консоли. Если устройство выдает "промпт", а человек как-то реагирует в пределах предоставленных ему возможностей, то подобные коллизии исключаются.
--------------------
Уходя, оставьте свет...
|
|
|
|
Сообщений в этой теме
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 _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, 09:17) Наско... Aug 13 2009, 07:02 AHTOXA Цитата(_Pasha @ Aug 13 2009, 13:02) Но, в... Aug 13 2009, 07:23  _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
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|