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

Частый гость
 
Группа: Свой
Сообщений: 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.); - инкрементирую указатель на последний принятый байт и опять жду прерывания.
Думал просто искать ответ во временном буфере, выдержав какую-то паузу после отправки команды в модуль, но время выполнения команд может быть очень разное... В общем, это мой дебютный алгоритм опроса модулей, по этому и задался вопросом, а как пишут бывалые?
|
|
|
|
|
 |
Ответов
|
Mar 22 2013, 17:00
|
Частый гость
 
Группа: Свой
Сообщений: 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)  Задача должна занимать порт модема, на определенное время. Если это отсылка смса, то после отсылки, никто в порт ничего не должен слать, пока не пришло подтверждение отправки, после этого порт отпускается. А другая задача, контролирует это время, она определила, что порт сильно долго занят, она принудительно отпускает его + пишет сообщение в лог, для последующего разбора полетов.
Если пришел юрц, то просто обрабатываем его, и если он нас интересует, записываем в буфер, какое действие надо сделать. И сделаем его, как только порт освободится.
По такому принципу сделан прием смс. В любой момен приходит юрц, с позицией смса в буфере симки. Эта прозиция сохраняется. И когда порт будет свободен, смс вычитывается из той позиции.
Получается конечный автомат занятия юарта процессами.
Перед занятием юарта, любая задача должна убедиться, что порт свободен, если не свободен, задача должна проверить юарт через некоторое время и так пока порт не освободится или задача потеряет актуальность. А я вот не могу себе позволить такую роскошь - несколько процессов для работы с одним только модемом
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|