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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как обрабатывать сообщение REMOTE IP:
Guest_@Ark_*
сообщение Nov 8 2008, 13:23
Сообщение #16





Guests






Цитата(david_off @ Nov 8 2008, 16:00) *
... Пробовал, но программа получается дико несмотрибельной. При достаточном количестве команд, появлеются дикие деревья вложенных IF, Количество внеших IF стремится к размеру алфавита, а внутренних при одинаковых первых символах, также прибаляет новые внутренние ветки...

Здесь снова все упирается в реализацию... Вообще-то, достаточно предварительно отсортировать весь набор ответов по алфавиту. И использовать процедуру бинарного поиска... Тогда все не так страшно - без диких деревьев и вложенных IF. И процесс распознавания очередного символа занимает не много времени...
Go to the top of the page
 
+Quote Post
Baser
сообщение Nov 8 2008, 13:45
Сообщение #17


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(david_off @ Nov 8 2008, 15:00) *
Не знаю что у вас за железо, но я это реализую на mega128+SIM300C. Чего то для этой парочки не слышал про какую-то ось.

Ну, если люди умудряются в PIC-и с 8-ю килограммами памяти запихивать маленькие ОСьки, то в mega128 можно применить любую из доступных для МК wink.gif Здесь в конфе много инфы по этому вопросу.
Но да ладно, это уже отход от существа вопроса. Просто, именно столкнувшись когда-то с задачей управлением модемом, я понял все прелести наличия ОСи, когда передача данных через модем - это только одна из N-цати задач, которые нужно решать одновременно.
Go to the top of the page
 
+Quote Post
david_off
сообщение Nov 8 2008, 15:47
Сообщение #18


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



Цитата(Baser @ Nov 8 2008, 17:45) *
Ну, если люди умудряются в PIC-и с 8-ю килограммами памяти запихивать маленькие ОСьки, то в mega128 можно применить любую из доступных для МК wink.gif Здесь в конфе много инфы по этому вопросу.
Но да ладно, это уже отход от существа вопроса. Просто, именно столкнувшись когда-то с задачей управлением модемом, я понял все прелести наличия ОСи, когда передача данных через модем - это только одна из N-цати задач, которые нужно решать одновременно.

Не знал что под мой зверёк тоже есть оси. Я думал оси пишут только для DSP и выше.
Поищу. Может быть жить станет красивей.
Кстати будет ещё интересно пару слов о ваших предпочтениях в этом вопросе. Наверняка будет много разных вариантов, львиную долю которых вы уже забраковали и лишите меня приятного права наткнулся на уже пройденные грабли. smile.gif
PS: cпасибо за просвящение.
Go to the top of the page
 
+Quote Post
Baser
сообщение Nov 8 2008, 17:19
Сообщение #19


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(david_off @ Nov 8 2008, 17:47) *
Кстати будет ещё интересно пару слов о ваших предпочтениях в этом вопросе. Наверняка будет много разных вариантов, львиную долю которых вы уже забраковали и лишите меня приятного права наткнулся на уже пройденные грабли.

Извиняйте, тут я вам не советчик. Все времени нет плотно за это взяться laughing.gif
Обычно, когда появляется подходящая задача, уже разбираться поздно - "нужно работу работать". В нескольких проектах применяю то, о чем писал выше.
Почитайте эти ветки, судя по тому, что эти три RTOS выделили в отдельные подфорумы, они самые популярные среди местной братии smile.gif
Go to the top of the page
 
+Quote Post
FormatCft
сообщение Nov 9 2008, 10:18
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145



Цитата(Baser @ Nov 8 2008, 03:23) *
А я так и не пойму, как при таком алгоритме можно принимать не только сообщения модема, но еще и данные, которые сыпятся по GPRS-у (или по CSD). Я уже писал об этом тут рядом.

У меня основа алгоритма - кольцевой приемный буфер достаточного размера, чтобы разместить мах возможный пакет данных + несколько ответов модема, включая незапрашиваемые (unsolicited).
Признак получения данных - таймаут (дырка в данных) в ~50ms
После чего начинает работать обработчик по разбору всего, что пришло (причем в это время могут начинать валится новые данные, они попадут дальше в кольцевой буфер и будут обработаны позднее)

Обработчик сверяет по шаблону все нужные ответы. Если ответ найден, он стирается, если нет, то ожидаются еще данные в пределах максимального времени ожидания ответа на данную команду (эти времена у меня разные для разных команд, мах несколько минут). Если за это время ожидания не обнаружено требуемых в данном месте ответов, то обработчик выдает ошибку, весь приемный буфер очищается и продвигаемся далее по алгоритму обработки ошибок.

Тут имейте в виду, что ответы модема не только часто состоят из нескольких строчек, но и еще в разных условиях они могут менять свой порядок. sad.gif Я как-то об этом писал.

Еще добавлю, что работать с модемом без операционки я не рискую, уж больно большой гемор cool.gif
Правда, я сам полноценную ОС не использую, а применяю ее зачаток, где кроме главного цикла и прерываний есть еще один поток, в котором выполняются модемные процедуры и можно применять "ожидания событий", во время которых крутится главный цикл (ну и прерывания ессно) smile.gif

А почему бы еще плюсом очереди (queue) не использовать?
Go to the top of the page
 
+Quote Post
Baser
сообщение Nov 9 2008, 16:38
Сообщение #21


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(FormatCft @ Nov 9 2008, 12:18) *
А почему бы еще плюсом очереди (queue) не использовать?

Да все можно использовать, было-бы время и желание. Как говорил, со временем напряженка, так что пока будет работать так, а дальше посмотрим smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:32
Рейтинг@Mail.ru


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