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

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

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

|
Цитата(zltigo @ Aug 12 2009, 14:24)  Код .... case 'sst ': ... case 'psst': .... case 'aa ': .... Команды - по первым четырем (для 32битника) символам. А все-таки, если у человека тупо буфер, нету манагера кучи для построения деревьев в ОЗУ - АВР средненький, короче, - так построить интерпретатор команд не получится! Цитата(AHTOXA @ Aug 12 2009, 22:06)  Ну и можно банально забыть писишную программу Интерактив, короче. Для таких применений сложно придумать универсальную программу для ПиСи, имхо. Ага, ОРС-серверы всякие не забывают, а тут-досада  Ничего сложного в универсальной программе - все действия реализуются через регистровую модель. В одном регистре - временной интервал выборки, в другом - адрес источника, в третьем - размер данных. К терминалке это уже не будет иметь отношение - это личное дело девайса - поддержит он данную функцию или нет. Цитата(Goodefine @ Aug 12 2009, 22:32)  Как тогда контроллер отреагирует на на сообщение "hello world" Это все бессмысленно без а) строгого разделения команд без аргументов, хотя бы пробелами. б) минимального синтаксического разбора команд с аргументами.
|
|
|
|
|
Aug 13 2009, 05:45
|

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

|
Цитата(_Pasha @ Aug 13 2009, 11:02)  Ничего сложного в универсальной программе - все действия реализуются через регистровую модель. В одном регистре - временной интервал выборки, в другом - адрес источника, в третьем - размер данных. К терминалке это уже не будет иметь отношение - это личное дело девайса - поддержит он данную функцию или нет. ОРС-серверы - это для устройств, постоянно находящихся на связи. Тут действительно, забыть проблематично  Если же терминал применяется изредка, то шансы возрастают. Цитата(_Pasha @ Aug 13 2009, 11:02)  Ничего сложного в универсальной программе - все действия реализуются через регистровую модель. В одном регистре - временной интервал выборки, в другом - адрес источника, в третьем - размер данных. К терминалке это уже не будет иметь отношение - это личное дело девайса - поддержит он данную функцию или нет. Как реализовать через регистровую модель мини-DOS для флеш-карточки, например?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
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   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
|
|
|