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

 
 
> Есть ли классика обработки ответов от 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
Ответов
zebrox
сообщение Mar 22 2013, 12:09
Сообщение #2


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

Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838



Думаю "отлов" это единственно правильный метод. Если "отлов" не ловит 100% сообщений от модема, то и нет гарантии, что ответ на запрос будет правильно обработан и получен вообще. Если бы модем только отвечал на запросы, и никогда сам ничего не генерил, то отлов не нужен был бы. А если есть хоть малая вероятность того, что модем сам что-то выдаст, то нужно быть готовым в любой момент, обработать любую строку от модема.

У меня так:
const char READ_SMS_descriptor[] = "+CMGR:";


потом в где-то в основмном цикле
if(CPUSearchInArray(READ_SMS_descriptor, GL_BUFFERS.GSM))
{
GL_INTERRUPTS.SMS_IS_COMING = SMSPreprocessSMSMessage();
}
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 22 2013, 14:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



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

Вы уверены, что в документации на модем описаны все 100% сообщений, которые может выдать модем?
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
|- - megajohn   делаю всё как AlexandrY но с некоторыми отличиями:...   Mar 22 2013, 14:13
- - 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
- - jack_avenger   Цитата(zebrox @ Mar 22 2013, 15:09) Думаю...   Mar 22 2013, 17:00
|- - 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 Текстовая версия Сейчас: 28th July 2025 - 20:59
Рейтинг@Mail.ru


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