Цитата(White_rat @ Jun 1 2012, 11:47)

+CMTI может прийти не только в основном цикле, но и как я понимаю при любой команде MDM.recieve
Выход я вижу в AT@CMGL с опцией "REC UNREAD". Не очень нравится, что постоянно придется обращаться к SIM-карте...
И вообще, зачем тогда вообще нужны и RING и +CMTI, если их прямое использование проблематично.
Опрашивайте периодически используя AT+CMGL="REC UNREAD".
Я сам так делаю. Но перед опросом Вы должны проверить готовность SIM. Например AT#QSS=2\r - это настройка делается один раз, AT#QSS - проверка.
Будет так
AT#QSS
Ожидание OK
если 2,3 - можно читать СМС
иначе выход
AT+CMGL="REC UNREAD"
Ожидание OK
разгребание ответа.
В скрипте сложно выполнять поиск RING/CMTI т.к. он вклинивается в ответы на MDM.read.
Другое дело когда модем подключён к процессору. Там эти сообщения намного проще отловить особенно в режиме CMUX т.к. они приходят одним фрэймом, а вся работа с CMUX построена на ожидании фреймов. Да и если не в CMUX работать всёравно в обработчике сообщений от модема можно легко отловить RING/CMTI анализируя принятые строки (RING например приходит как RING\r\n\r\n CMTI скорее всего также)