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

 
 
> Есть ли классика обработки ответов от GSM модуля на стороне МК ?, Асинхронный режим, без контроля потока
vassabi
сообщение Mar 17 2013, 10:04
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Задался вопросом, а существует ли классический алгоритм обработки ответов модуля на стороне микроконтроллера?
Лично я пробую обрабатывать на лету:
Временный буфер (50 байт, например), он до начала приема заполнен значениями 0А, это для обработки двух-символьных ответов 30 0D и 34 0D.
Указатель - переменная на последний принятый байт в буфере, по умолчанию = 1.
В основном цикле отправляю команду в модуль и в цикле жду изменения переменной результата.
По прерыванию на UART:
- пополняю временный буфер принятым байтом (пополнение начинается не с нулевого байта, а с первого, опять же, для обработки двух-символьных ответов);
- если указатель >= 2, проверяю три последних символа буфера на соответствие маске (0A 30 0D, 0A 34 0D etc.);
- если соответствие есть - записываю в переменную результата (соответственно 30, 31, 34 etc.);
- инкрементирую указатель на последний принятый байт и опять жду прерывания.

Думал просто искать ответ во временном буфере, выдержав какую-то паузу после отправки команды в модуль, но время выполнения команд может быть очень разное...
В общем, это мой дебютный алгоритм опроса модулей, по этому и задался вопросом, а как пишут бывалые?




Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jack_avenger
сообщение Mar 22 2013, 17:00
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(zebrox @ Mar 22 2013, 15:09) *
Думаю "отлов" это единственно правильный метод. Если "отлов" не ловит 100% сообщений от модема, то и нет гарантии, что ответ на запрос будет правильно обработан и получен вообще.

Цитата(zebrox @ Mar 22 2013, 19:32) *
Ловить надо только то, что нас интересует.

Какая из мыслей окончательная у Вас?

Цитата(zebrox @ Mar 22 2013, 19:32) *
В том то и дело, что модем никому ничего не должен.
Он черный ящик, может отработать, может нет, может отвалится в любой момент может нет.

Поведение модема должно соответствовать даташиту.
Хотя попадался мне модем который даже после команды ATV0 на некоторые команды внутреннего TCP/IP стека отвечал <CR><LF>OK<CR><LF>.

Цитата(zebrox @ Mar 22 2013, 19:32) *
Задача должна занимать порт модема, на определенное время.
Если это отсылка смса, то после отсылки, никто в порт ничего не должен слать, пока не пришло подтверждение отправки, после этого порт отпускается.
А другая задача, контролирует это время, она определила, что порт сильно долго занят, она принудительно отпускает его + пишет сообщение в лог, для последующего разбора полетов.

Если пришел юрц, то просто обрабатываем его, и если он нас интересует, записываем в буфер, какое действие надо сделать.
И сделаем его, как только порт освободится.

По такому принципу сделан прием смс.
В любой момен приходит юрц, с позицией смса в буфере симки.
Эта прозиция сохраняется.
И когда порт будет свободен, смс вычитывается из той позиции.

Получается конечный автомат занятия юарта процессами.

Перед занятием юарта, любая задача должна убедиться, что порт свободен, если не свободен, задача должна проверить юарт через некоторое время и так пока порт не освободится или задача потеряет актуальность.

А я вот не могу себе позволить такую роскошь - несколько процессов для работы с одним только модемом
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vassabi   Есть ли классика обработки ответов от GSM модуля на стороне МК ?   Mar 17 2013, 10:04
- - kan35   Я сделал структуру для ответа с собственно массиво...   Mar 17 2013, 12:31
- - vassabi   ЦитатаОтсекая строки по 0D 0A... Так не все же отв...   Mar 17 2013, 13:06
|- - kan35   Цитата(vassabi @ Mar 17 2013, 17:06) Так ...   Mar 17 2013, 18:00
- - andrewlekar   Классики нет, особенно если требуется принимать да...   Mar 17 2013, 13:26
- - AlexandrY   Цитата(vassabi @ Mar 17 2013, 12:04) В об...   Mar 17 2013, 13:47
|- - x893   Цитата(AlexandrY @ Mar 17 2013, 17:47) Пр...   Mar 17 2013, 14:27
|- - AlexandrY   Цитата(x893 @ Mar 17 2013, 16:27) Не выго...   Mar 17 2013, 18:25
|- - kan35   Цитата(AlexandrY @ Mar 17 2013, 22:25) DM...   Mar 17 2013, 19:03
- - vassabi   Цитата("AlexandrY")...записываются симво...   Mar 17 2013, 20:30
- - jack_avenger   Цитата(kan35 @ Mar 17 2013, 15:31) Я сдел...   Mar 17 2013, 23:00
- - vassabi   Цитата("vassabi")Очень круто, но я так п...   Mar 18 2013, 00:34
- - GeGeL   И после всего этого еще ругают OCPU, EAT etc. На...   Mar 18 2013, 19:49
|- - Aurochs   Цитата(GeGeL @ Mar 18 2013, 21:49) И посл...   Mar 18 2013, 22:19
|- - stepper88   Недавно соорудил управление Quectel M10 аналогии с...   Mar 22 2013, 09:13
|- - _Артём_   Цитата(stepper88 @ Mar 22 2013, 11:13) Но...   Mar 22 2013, 11:17
- - jack_avenger   Цитата(GeGeL @ Mar 18 2013, 22:49) И посл...   Mar 18 2013, 20:12
- - zebrox   Думаю "отлов" это единственно правильный...   Mar 22 2013, 12:09
|- - megajohn   делаю всё как AlexandrY но с некоторыми отличиями:...   Mar 22 2013, 14:13
|- - _Артём_   Цитата(zebrox @ Mar 22 2013, 14:09) Думаю...   Mar 22 2013, 14:35
- - jack_avenger   Думаю что речь не идет о 100% парсинге, а только о...   Mar 22 2013, 14:44
|- - stepper88   to megajohn А как у вас построенна эта обработка а...   Mar 22 2013, 15:07
|- - vassabi   Цитата(stepper88 @ Mar 22 2013, 17:07) .....   Mar 22 2013, 15:15
|- - stepper88   Цитата(vassabi @ Mar 22 2013, 21:15) А за...   Mar 22 2013, 17:03
- - jack_avenger   Цитата(stepper88 @ Mar 22 2013, 18:07) to...   Mar 22 2013, 15:28
- - zebrox   Ловить надо только то, что нас интересует. В том ...   Mar 22 2013, 16:32
|- - zebrox   Цитата(jack_avenger @ Mar 22 2013, 20:00)...   Mar 22 2013, 17:31
- - jack_avenger   Цитата(zebrox @ Mar 22 2013, 20:31) Оконч...   Mar 22 2013, 17:41
|- - zebrox   Цитата(jack_avenger @ Mar 22 2013, 20:41)...   Mar 22 2013, 18:09
|- - vassabi   Цитата(zebrox)... выставляет сигнал РТЦ. После вых...   Mar 22 2013, 18:13
- - zebrox   да, ртс   Mar 22 2013, 22:23
- - jack_avenger   Цитата(zebrox @ Mar 22 2013, 22:09) Для э...   Mar 23 2013, 13:18
|- - vassabi   Цитата(jack_avenger @ Mar 23 2013, 15:18)...   Mar 23 2013, 17:13
- - zebrox   Честно говоря, не совсем понимаю зачем отличать юр...   Mar 23 2013, 17:52
- - jack_avenger   Цитата(vassabi @ Mar 23 2013, 21:13) По э...   Mar 23 2013, 18:32
|- - vassabi   Цитата(jack_avenger @ Mar 23 2013, 20:32)...   Mar 23 2013, 18:44
- - zebrox   Да нет, обработчик один, на все отведы, эха, юрц. ...   Mar 23 2013, 19:55
- - jack_avenger   Цитата(vassabi @ Mar 23 2013, 22:44) Это ...   Mar 23 2013, 19:55
|- - vassabi   Цитата(jack_avenger @ Mar 23 2013, 21:55)...   Mar 23 2013, 23:44
- - jack_avenger   Цитата(vassabi @ Mar 24 2013, 03:44) GSM ...   Mar 23 2013, 23:51


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

 


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


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