Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с чтением смс
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
n.bresh
вижу приходящий смс "+CMTI: "SM",1"
после этого отправляю : "AT+CMGL=\"REC UNREAD\"\r"
но модуль вообще никак не отвечает
пробовал отправлять "AT+CMGR=1,0" и просто "AT\r" - также никаких ответов
хотя далее по прошествии некоторого времени *примерно 10 секунд*
модуль успешно выполняет удаление всех смс
"AT+CMGD = 1,4\r"
далее работает по основному алгоритму
megajohn
не понимаю про какой абстрактный модем говорите, но отвечу по Telit UC864:

>после этого отправляю : "AT+CMGL=\"REC UNREAD\"\r"
проверьте что модем в текстовом режиме а не PDU

>пробовал отправлять "AT+CMGR=1,0"
нужно отправлять AT+CMGR=1


n.bresh
модем SIM900
режим - текстовый
CADiLO
А кто сказал что он должен мгновенно удалить???
Не отвечает пока не удалит. Дожидайтесь OK.
n.bresh
проблема не в том что когда удаляются смс
а в том что не приходит никакого ответа на запрос чтения смс ни на любую другую команду, независимо сколько времени ждать
CADiLO
Прошивка какой версии?
n.bresh
примерно так...

if (strstr(ReceiveString0, "+CMTI") != 0){

delay_ms(200);
Uart2_Write_Text("AT+CMGL=\"REC UNREAD\"\r");

и далее по алгоритму...
}


прошивка 1137B02SIM900M64_ST_ENHANCE
CADiLO
Русский символ или кавычки не того типа нигде не затесались ?
У меня вручную на этой прошивке команда работает
n.bresh
все-таки не могу побороть проблему, но попробую описать по-подробнее:

1. инициализирую SIM900 разными командами
( в терминалке вижу как посылы микроконтроллера так и ответы модема
кроме того для контроля через Soft_UART вывожу в терминалку принятый микроконтроллером буфер)
2. вроде все штатно
3. отправляю AT+CMGL="ALL"\r - ответ приходит корректный
4. отправляю AT+CMGR=1\r - ответ также нормальный
5. ухожу в главный цикл , в котором один раз в секунду опрашиваю метку, которая устанавливается по прерыванию от RING
6. по поднятой метке ( в терминалке вижу пришедший +CMTI......) отправляю AT+CMGL="ALL"\r
ответа никакого вообще, сколько не жди
7. пробовал ждать до 60 секунд - безрезультатно
8. пробовал повторять AT+CMGL="ALL"\r - безрезультатно
9. если же звоню на модуль, то по поднятой в результате прерывания от RING метке команда AT+CMGL="ALL"\r
отрабатывает корректно
10. то есть один и тот же код при звонке работает, а при смс - нет
Romashki
Попробуйте увеличить время ожидания до 1 секунды перед Uart2_Write_Text("AT+CMGL=\"REC UNREAD\"\r"); ... если получится, потом экспериментально подберете минимальное время.
Чтение AT+CMGR=х\r;
где х - индекс смс
n.bresh
да там и так жду достаточно

if ( metka_RING == 1 ){

delay_ms(2000);
String0(); // прочитать буфер
debug_soft0(); // выдать его в Soft_UART PORT
delay_ms(2000);

ClearBuffer(); // принудительно очищаю буфер

Uart2_Write_Text("AT+CMGL=\"ALL\"\r");

delay_ms(3000);
String0(); // прочитать буфер
Romashki
Попробуйте для начале с помощью терминала вручную проделать эти операции, чтоб понимать в чем проблема. Я использую прерывания от UARTa в МК, анализирую и читаю смс, проблем нет.
n.bresh
отключил выполнение всех команд кроме AT\r
повторяю эту команду с интервалом в 5 секунд
первый раз модем отвечает - AT и OK
на все последующие запросы вообще не отвечает
CADiLO
А фиксированную скорость модему выставили, или на автоопределении работаете?
n.bresh
еще нет
АТ - первая команда
но заметил одну особенность: при инициализации выполняю группу команд
и если какую-нибудь из команд повторяю то ответа OK от модема не дождаться
как будто он зависает
CADiLO
Не просто желательно, а НЕОБХОДИМО перевести модуль на работу с фиксированой скоростью. Отпадет масса вопросов.

И еще разбег скоростей UART модуля и источника более 1.5% уже критичен.

На какой скорости пытаетесь общаться с модулем?
n.bresh
я уже выше описывал
все работало нормально и команда AT+IPR=9600\r - третья в в списке, собственно после AT и ATE0
проблема возникла при выполнении AT+CMGL="ALL"\r
там я заметил что именно повторное чтение смс не проходит
стал проверять повторное выполнение всех команд, и в итоге добрался до самого начала - то есть AT\r
CADiLO
Перепроверяем правильность стыковки по уровням и отсутствие фантомки.
Фиксируем скорость и проверяем с терминала.

Эта прошивка работает на дофига скольки модемах.
n.bresh
попробовал изменить скорость общения между модулем и модемом - с 9600 на 19200
в настроенной терминалке вижу корректные посылки от микроконтроллера и кракарзябры в качестве ответов модема
переключил все на 4800 - та же картина
то есть ответы модема читабельны, толькл если скорость - 9600
CADiLO
Выбросьте контроллер, соединитесь терминалкой и убедитесь что обмен нормальный на всех ФИКСИРОВАНЫХ скоростях.

Не используйте на модуле автоскорость.

После этого пересчитайте еще раз делители для примененного кварца на контроллере.
Если разбег от требуемой скорости будет больше 1.5 процента - обмена не будет.

Уже было с каким-то атмеловским контроллером когда при 20 мегагерцах обмен был "на грани" и пришлось поставить "модемный" кварц 18.432 мгц
n.bresh
убрал контроллер
Настроил терминалку на 9600
запустил модем
дождался Call Ready в терминалке
отправляю AT - в ответ кракозябры
отправляю AT+IPR=9600 - в ответ кракозябры

повторил процедуру несколько раз - всегда с отключением модема и рестартом терминалки
один раз поймал OK на обе посланные команды, но на запрос AT+IPR? получил кракозябры

CADiLO
теперь с этого места вернемся к железу

- через что модуль подключен к компу, и какое питание согласователя?
n.bresh
через FT232
VCCIO - 3 вольта
CADiLO
3 или 3.3 ??

я имею в виду берете собственное с FT232 или VEXT с модуля?
n.bresh
VCCIO запитано от Vext
CADiLO
хм.... тогда озадачили....

так не бывает.... должно работать

провода не длинные от FT до модуля

если замкнуть RX-TX отсоединив модуль - свое эхо стабильное на FT?
n.bresh
провода сантиметров 15
эхо стабильное
CADiLO
Нечистые электромагнитные силы

разве что предположить что слетела прошивка и перепрошить модуль......

или часть земли от модуля отвалилась и он чудит по падению питания...
n.bresh
перепрошил модуль
вроде все заработало
прошивка : 1137B01SIM900M64_ST_ENHANCE
есть ли еще более свежая? и если есть - то имеет ли смысл обновлять ?

ну и конечно всем спасибо! без вашей помощи ребята наверно давно бы уже все бросил к чертям.
CADiLO
Да - для SIM900 последняя 1137B02SIM900M64_ST_ENHANCE

Обновлять стоит однозначно, много пофиксено и добавлено.

Запрос письмом своему дистрибьютору.

Учитывая что в 900-х прошивка слетит только в случае фантомки, перепроверьте уровни, схему стыковки с контроллером и алгоритм общения.....
x893
А проще выкинуть SIM900
Alechek
Цитата(x893 @ Apr 15 2014, 23:31) *
А проще выкинуть SIM900

А еще проще вообще ничего не делать. bb-offtopic.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.