|
SIM800 чтение SMS |
|
|
|
May 17 2016, 12:57
|
Группа: Участник
Сообщений: 13
Регистрация: 17-05-16
Пользователь №: 91 771

|
Привет всем!
Возникла у меня странная ситуация с SIM800. Ожидаю смс вызовом в цикле AT+CMGR=1,0. Он мне возвращает OK пока смс не принят. Посылаю смс на номер, после чего uart стоит по таймауту, буфер, естественно пустой. Кто нибудь встречался с такой бедой? Таймаут 5 сек.
Да, и еще. Если смс отправить до того, как sim зарегистрировался в сети, то все нормально отрабатывает. Получаем +CMGR: 1,...
Помогите люди добрые. Уже невмоготуууу...
Прошивка 1418B03SIM800C24 Uart на autoban(менял на фикс.скорость - не помогает) Регистрируюсь в сети обычно. AT+CFUN=1 AT+CSQ AT+CPIN? AT+CREG? AT+CMGF=1 AT+CSCS="GSM" AT+CPMS="SM"
M2M, МТС
Сообщение отредактировал an24 - May 17 2016, 12:59
|
|
|
|
|
 |
Ответов
|
May 18 2016, 11:17
|

Гуру
     
Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988

|
Чтобы не придумывать для себя проблемы с UART, наверное стоит изучить как работают AT команды. Начать желательно не с руководста по командам для конкретного модуля, ибо оно уже предполагает, что пользователь знаком с предметом. А начать со стандартов где это более подробно описано. Иначе это будет попытка написать роман не прочитав букварь. Желательно под рукой иметь следующие стандарты GSM 03.38. GSM 03.40. GSM 07.05. GSM 07.07. GSM 11.11.
И до написания на Си тоже рановато - отмоделируйте алгоритм в терминале - сначала вручную, потом макросом. А уж когда все будет понятно, тогда к программе можно приступать. Иначе сами путаетесь и объяснить не можете.
И совет на будущее - не крутите циклы, изучите как работает CNMI
AT+CNMI Настройка формирования отчетов о событиях SMS. "Команда AT+CNMI управляет настройками SMS, относящимися к представлению кодов URC. По этой команде выбирается процедура индикации приема нового короткого сообщения для TE, если это устройство TE активно (например, сигнал DTR находится в состоянии ON). Если TE неактивно (например, сигнал DTR находится в состоянии OFF), прием сообщения должен быть выполнен согласно спецификации 3GPP TS 23.038. Если сигнал DTR отсутствует или его состояние игнорируется (команда AT&D0 V.250), то достоверная передача сообщения обеспечивается использованием процедуры подтверждения AT+CNMA......"
ну и так далее
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
May 18 2016, 12:14
|
Группа: Участник
Сообщений: 13
Регистрация: 17-05-16
Пользователь №: 91 771

|
Цитата(CADiLO @ May 18 2016, 16:17)  Чтобы не придумывать для себя проблемы с UART, наверное стоит изучить как работают AT команды.
И совет на будущее - не крутите циклы, изучите как работает CNMI
AT+CNMI Настройка формирования отчетов о событиях SMS. "Команда AT+CNMI управляет настройками SMS, относящимися к представлению кодов URC. По этой команде выбирается процедура индикации приема нового короткого сообщения для TE, если это устройство TE активно (например, сигнал DTR находится в состоянии ON). Если TE неактивно (например, сигнал DTR находится в состоянии OFF), прием сообщения должен быть выполнен согласно спецификации 3GPP TS 23.038. Если сигнал DTR отсутствует или его состояние игнорируется (команда AT&D0 V.250), то достоверная передача сообщения обеспечивается использованием процедуры подтверждения AT+CNMA......"
ну и так далее Спасибо за ответ. Вам мой вопрос оказался понятен и это радует. Причину проблемы я нашел 20 минут назад самостоятельно. Оставлю решение здесь, так как вижу что здешние гуру в практике не очень сильны. Итак. В SIM800 по умолчанию неожиданно выставлено AT+CNMI 2,1 что приводит к тому, что после первой любой команды чтения смс SIM в UART начинает гнать оповещения при приеме смс. Естественно, мой цикл чтения смс этого не ожидает и посылает в UART команду чтения AT+CMGR. Тут UARTу и наступает конец. Решение простое. Если хотите получать смс методом опроса выполните перед циклом AT+CNMI=0. Если хотите методом оповещения, то после первого AT+CMGR переходите к циклу чтения из UART и ожидайте оттуда +CMT. Всем успехов!
|
|
|
|
|
May 18 2016, 17:33
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(an24 @ May 18 2016, 17:14)  Естественно, мой цикл чтения смс этого не ожидает и посылает в UART команду чтения AT+CMGR. Поэтому и существует совет забросить МК и освоить вначале терминал. А потом написать на компьютере C файл, работающий с модемом. А всякие UART_Read и UART_Write опередлить на ReadFile и WriteFile. Отладка на компьютере в разы удобней. Ваш цикл все равно никуда не годится, если он "зависает" на таких мелочах. От "RING" как спасаться будете? А он с очень большим успехом залезет там, где его не ждут. И еще совет: научитесь выражать свои мысли правильно. Если Вы не можете сформулировать грамотно задачу, исполнить ее (написать программу) не получится. Цитата(an24 @ May 17 2016, 23:09)  После приема смс из uart ничего не читается командой AT+CMGR=1,0. Приема SMS кем? /модулем, телефоном, базовой станцией/ Как можно из UART прочитать командой AT...? Из него можно вычитать ДАННЫЕ функцией чтения. А вот прочесть СМС из МОДУЛЯ (заставить его ВЫДАТЬ данные) можно подав ему команду.
|
|
|
|
Сообщений в этой теме
an24 SIM800 чтение SMS May 17 2016, 12:57 Alechek Чет так и не понял, в чем проблема и кто стоит.
Ес... May 17 2016, 17:50 an24 Цитата(Alechek @ May 17 2016, 22:50) Чет ... May 17 2016, 18:09  Alechek Для начала научитесь выражаться правильно. А то мо... May 18 2016, 05:17   an24 Цитата(Alechek @ May 18 2016, 10:17) Для ... May 18 2016, 11:09   an24 Цитата(Alechek @ May 18 2016, 22:33) Ваш ... May 19 2016, 04:15    Alechek Цитата(an24 @ May 19 2016, 09:15) Боротьс... May 19 2016, 04:26 CADiLO Дык тот кто знаком с принципом приема SMS, в перву... May 18 2016, 12:59 an24 Цитата(CADiLO @ May 18 2016, 17:59) Дык т... May 18 2016, 14:12 CADiLO >>>И никто из них даже не упоминает, о то... May 18 2016, 17:12 Rash Цитата(an24 @ May 19 2016, 07:15) Боротьс... May 19 2016, 05:40 Alechek Rash, ему еще далеко до этого. Если он не понимает... May 19 2016, 07:32 an24 Цитата(Alechek @ May 19 2016, 12:32) Rash... May 19 2016, 08:06  Alechek Цитата(an24 @ May 19 2016, 13:06) Полагаю... May 19 2016, 08:45   an24 Цитата(Alechek @ May 19 2016, 13:45) ко... May 19 2016, 09:07    Alechek Цитата(an24 @ May 19 2016, 14:07) Нужно б... May 19 2016, 11:15 ArtemKAD ЦитатаОчевидно, что тот кто придумал такую обработ... May 19 2016, 10:59 an24 Цитата(ArtemKAD @ May 19 2016, 15:59) Вну... May 19 2016, 15:41 Rash тему в юмор можно занести, особенно про асинхронно... May 19 2016, 14:13 Alechek Цитата(Rash @ May 19 2016, 19:13) тему в ... May 19 2016, 16:46  an24 Цитата(Alechek @ May 19 2016, 21:46) +1
Э... May 19 2016, 16:55   Alechek Цитата(an24 @ May 19 2016, 21:55) Приколь... May 20 2016, 07:28 ArtemKAD ЦитатаПотому что в любой момент вам может приехать... May 19 2016, 15:43 an24 Цитата(ArtemKAD @ May 19 2016, 20:43) С ч... May 19 2016, 15:58  Baser Цитата(an24 @ May 19 2016, 18:58) Конечно... May 19 2016, 16:05 Baser Цитата(an24 @ May 19 2016, 11:06) Я хотел... May 19 2016, 15:48 ArtemKAD ЦитатаНо в SIM800 он реализован как полудуплексный... May 19 2016, 16:15 an24 Цитата(ArtemKAD @ May 19 2016, 21:15) Или... May 19 2016, 16:29  ArtemKAD Цитата(an24 @ May 19 2016, 19:29) Я его в... May 19 2016, 17:09 Baser Цитата(ArtemKAD @ May 19 2016, 19:15) ЗЫ.... May 19 2016, 16:33  ArtemKAD Цитата(Baser @ May 19 2016, 19:33) Не ста... May 19 2016, 16:51
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|