|
Атомарность выполнения AT-команды |
|
|
|
Jan 18 2016, 18:33
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Всем привет! Может ли в процессе выполнения AT-команды, т. е., между запросами AT+XXX и ответами типа OK, ERROR, ... от модуля/модема придти какой-нибудь URC? Ну, кроме +CME/CMS и ответов с данными... Задекларировано ли это где-нибудь? Код AT+XXX ...
+ZZZ или что-то еще
+XXX ... OK | ERROR ...
--------------------
Благодарю заранее!
|
|
|
|
|
 |
Ответов
(30 - 44)
|
Jan 20 2016, 15:02
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(Alechek @ Jan 20 2016, 14:56)  Так уж вышло, что наше изделие пережило в себе всю последовательность SIM300D-SIM900D-SIM900-SIM900R-SIM900DS, теперь будет пережовывать и SIM800C-DS. И на весь этот табор одна прошивка. И в ней надо определять тип модема, чтобы потом плясать под него. То, что у вас заложена поддержка всех выпускавшихся ранее плат, это конечно удобно, но только до определенной степени. Если модели по функционалу различаются, после какого-то процента различий удобней разделять проекты. Я тоже поддерживаю десяток похожих модификаций приборов, с унификацией 40-70% (навскидку). Сначала пытался строить общие файлы проектов, изголяться с условной трансляцией, чтобы оставить один проект на все модификации, а потом плюнул - проблем больше, чем преимуществ. Допускаешь одну ошибку - и все н-дцать приборов с глюком. Сейчас один прибор - один проект с парой мелких модификаций. А по поводу вашего спора о сложности разбора ответов модема, все похоже на тот анекдот, когда говорят: "Ну, да, ужас! Но никак не УЖАС!!! УЖАС!!!" Проблемы, конечно, есть, но они обходятся. Цитата(koluna @ Jan 20 2016, 15:35)  Так все-таки такое поведение (разрыв строки в любом месте) - баг или нет?  Цитата(CADiLO @ Jan 20 2016, 15:44)  С точки зрения пользователя и написания обработчика - можно считать багом. Но вот с точки зрения GSM cтека - нормальное явление. Ну не додумали малость когда стек писали. А на сегодня исправлять это уже никто не станет. На мой взгляд это баг, и баг серьезный. Это баг на уровне операционки в части организации доступа к разделяемому ресурсу типа последовательного порта. Или, что более вероятно, не на уровне самой РТОС, а на уровне её применения в стеке. Это один из важнейших сервисов любой РТОС и баги в нем недопустимы. И если такой баг бы был, его бы давно уже по тихому пофиксили с короткой строчкой в Релиз Нотес: "Минор баг фиксет ин модем ансверс"
|
|
|
|
|
Jan 20 2016, 15:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(CADiLO @ Jan 20 2016, 19:49)  .. то я предпочту пользоваться документацией именно производителя железки, так как там будет реализованая трактовка, а не предусматриваемая. А при сомнениях еще и запрошу - что именно имелось в виду. К сожалению так оно и есть. И все эти стандарты по сути 100% рекомендательные для поизводителей. Просто по факту получается, что нечаянно документация от производителя в какой-то части соответствует стандарту /потому-что кто-то все таки что-то припомнил/лень было свое изобретать/ А потом нечаянно оказыватся что симки несовсметимы с модулями, модули несовместимы с базовыми станциями и т.п. А во всем виноват стек GSM, потому что он лицензионный и туда никто лезть не имеет права. Это я так, утрирую. Цитата(ArtemKAD @ Jan 20 2016, 19:55)  40кБ кода для треккера? Он что, еще и танцевать умеет? Добавка GPRS это 3-4кБ от силы. Ну, есть у нас и со 150 кб кода прошивка. Танцевать не умеет, но многое может. Про GSM-GPRS прибавку я ж написал, что в простом варианте 4.5 кб+0.5 PDU. В серьезных и за 20 кБ зашкаливает.
|
|
|
|
|
Jan 21 2016, 10:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(CADiLO @ Jan 20 2016, 19:32)  Можно конечно и начихать, но если бы все было так просто никто бы эти сообщения не выводил.  Бесполезны они. SIM800H: +CME ERROR: 793 в ответ на AT+CBST=7,0,1 приходит уже после Call Ready и SMS ready: CODE 15:18:59.334> 9¢<0><0><0><0><0><0>AT 15:18:59.334> 15:18:59.334> 15:18:59.334> OK 15:18:59.334> 15:18:59.772> 15:18:59.772> 15:18:59.772> RDY 15:18:59.772> 15:18:59.772> 15:18:59.772> 15:18:59.772> +CFUN: 1 15:18:59.772> 15:19:00.584> 15:19:00.584> 15:19:00.584> +CPIN: READY 15:19:00.584> 15:19:01.397> ATE0 15:19:01.397> 15:19:01.397> 15:19:01.397> OK 15:19:01.397> 15:19:01.709> 15:19:01.709> 15:19:01.709> Revision:1308B05SIM800H32_BT 15:19:01.709> 15:19:01.709> 15:19:01.709> 15:19:01.709> OK 15:19:01.709> 15:19:01.928> 15:19:01.928> 15:19:01.928> +CSMINS: 0,1 15:19:01.928> 15:19:01.928> 15:19:01.928> 15:19:01.928> OK 15:19:01.928> 15:19:02.209> 15:19:02.209> 15:19:02.209> +CPIN: READY 15:19:02.209> 15:19:02.209> 15:19:02.209> 15:19:02.209> OK 15:19:02.209> 15:19:02.475> 15:19:02.475> 897010221042981810ff 15:19:02.475> 15:19:02.475> 15:19:02.475> 15:19:02.475> OK 15:19:02.475> 15:19:02.569> 15:19:02.725> 15:19:02.725> 15:19:02.725> 250022104298181 15:19:02.725> 15:19:02.725> 15:19:02.725> 15:19:02.725> OK 15:19:02.725> 15:19:03.288> 15:19:03.350> 15:19:03.350> Call Ready 15:19:03.350> 15:19:03.538> 15:19:03.538> 15:19:03.538> OK 15:19:03.538> 15:19:03.788> 15:19:03.788> 15:19:03.788> OK 15:19:03.788> 15:19:03.913> 15:19:03.913> 15:19:03.913> SMS Ready 15:19:03.913> 15:19:03.975> 15:19:03.975> 15:19:03.975> +CME ERROR: 793 15:19:03.975> 15:19:04.225> 15:19:04.225> 15:19:04.225> +CME ERROR: 793 15:19:04.225> 15:19:04.475> 15:19:04.538> 15:19:04.538> +CME ERROR: 793 15:19:04.538> 15:19:04.725> 15:19:04.725> 15:19:04.725> +CME ERROR: 793 15:19:04.725> 15:19:05.038> 15:19:05.038> 15:19:05.038> +CME ERROR: 793 15:19:05.038> 15:19:05.288> 15:19:05.288> 15:19:05.288> +CME ERROR: 793 15:19:05.288> 15:19:05.538> 15:19:05.538> 15:19:05.538> OK После нескольких неудачных попыток все таки приходит ОК. Параметры команды соответствуют документации на модем. Ждать еще манны небесной какое сообщение готовности модуля? И Ой! В SIM800 исправили наконец-то команду +CMSS - не надо теперь в конце "," посылать! Правда, совместимость не оставили - если SIM300D переваривали команду с запятой в конце, то SIM800 ругается на нее +CMS ERROR: 325 /invalid input value/
|
|
|
|
|
Jan 21 2016, 12:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Вообще, COM порт (TA по терминологии GSM 07.07) доступен (с ним можно работать) с момента появления STATUS на ножке. Это соблюдается неукоснительно. Работу TA проверяем по ответу на "AT". Тут кому как - хочет ждет RDY (а его не будет, если у нас скорость порта не фикирована), хочет долбится периодически. Call ready нам по барабану - с телефонной книгой не работаем. SMS ready раньше не было - и ничего, жили. Aх да, PAS не проверил. Ну так тут было сказано, что это пережиток, и достаточно Call + SMS ready. Я же хочу сказать, что верить этому нельзя, как не стоило верить в чудный Reset. И симкому лучше дружить с существующими стандартами и логикой, чем выдумывать свое.
|
|
|
|
|
Jan 21 2016, 15:10
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Да, как оказалось, с +CPAS вариант не китайский, CODE 19:47:10.459> AT+CREG?;+CGREG?;+CPAS 19:47:10.459> 19:47:10.459> +CREG: 0,3 19:47:10.459> 19:47:10.459> +CGREG: 0,3 19:47:10.459> 19:47:10.459> +CPAS: 2 19:47:10.459> 19:47:10.459> OK 19:47:13.834> AT+CREG?;+CGREG?;+CPAS 19:47:13.834> 19:47:13.834> +CREG: 0,2 19:47:13.834> 19:47:13.834> +CGREG: 0,2 19:47:13.834> 19:47:13.834> +CPAS: 2 19:47:13.834> 19:47:13.834> OK 19:47:17.209> AT+CREG?;+CGREG?;+CPAS 19:47:17.209> 19:47:17.209> +CREG: 0,0 19:47:17.209> 19:47:17.209> +CGREG: 0,0 19:47:17.209> 19:47:17.209> +CPAS: 2 19:47:17.209> 19:47:17.209> OK И в 0 оно скидивается только когда есть регистрация в сети. Кто бы сказал, чего ждать? Код 20:02:17.163> AT 20:02:17.163> 20:02:17.163> OK 20:02:17.538> 20:02:17.600> RDY 20:02:17.600> 20:02:17.600> +CFUN: 1 20:02:18.350> 20:02:18.350> +CPIN: READY 20:02:21.163> 20:02:21.163> Call Ready 20:02:21.725> 20:02:21.725> SMS Ready 20:02:24.225> AT+CREG?;+CGREG?;+CPAS 20:02:24.225> 20:02:24.225> +CREG: 0,3 20:02:24.225> 20:02:24.225> +CGREG: 0,3 20:02:24.225> 20:02:24.225> +CPAS: 2 20:02:24.225> 20:02:24.225> OK 20:02:24.413> AT+CBST=?;+CBST=7,0,1 20:02:24.413> 20:02:24.413> +CBST: (0,4-7,12,14,68,70-71,75),(0,4),(0-3) 20:02:24.413> 20:02:24.413> ERROR -- 10:47:47.146> AT+CREG?;+CGREG?;+CPAS 10:47:47.146> 10:47:47.146> +CREG: 0,2 10:47:48.083> 10:47:48.083> Call Ready 10:47:48.083> 10:47:48.083> +CGREG: 0,2 10:47:48.083> 10:47:48.083> +CPAS: 2 10:47:48.083> 10:47:48.083> OK 10:47:48.240> AT+CBST?;+CBST=7,0,1 10:47:48.240> 10:47:48.240> +CBST: 7,0,1 10:47:48.240> 10:47:48.240> ERROR Команда возможна, параметры допустимы, значение считать можно, но установить - ERROR. Или где-то написано, что она операторозависима и возможно ее выполнить только если есть регистрация в сети? Попутно вопрос, а что, ее каждый раз надо делать после регистрации? В новой сети все по-новому?
|
|
|
|
|
Feb 9 2016, 16:30
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Еще приколы SIMCOM Вот пойми его, PIN готов? или не готов? или вобще я/модуль/ с ума сошел? Цитата 20:54:34.027> Revision:1308B05SIM800H32_BT 20:54:34.027> 20:54:34.027> OK 20:54:34.277> AT+CSMINS? 20:54:34.277> 20:54:34.277> +CSMINS: 0,1 20:54:34.277> 20:54:34.277> OK ...... 20:54:35.340> AT+CPIN? 20:54:35.340> 20:54:35.340> ERROR 20:54:35.418> 20:54:35.418> +CPIN: READY 20:54:35.418> 20:54:35.418> +CPIN: NOT READY 20:54:35.590> AT+CPIN? 20:54:35.590> 20:54:35.590> ERROR .... Или 6.2.38 AT+CCALR Call Ready QueryЦитата 21:04:40.355> AT+CCALR? 21:04:40.355> 21:04:40.355> +CCALR: 0 21:04:40.355> 21:04:40.355> OK 21:04:40.605> 21:04:40.605> Call Ready 21:04:40.855> AT+CCALR? 21:04:40.855> 21:04:40.855> +CCALR: 0 21:04:40.855> 21:04:40.855> OK 21:04:41.355> AT+CCALR? 21:04:41.355> 21:04:41.355> +CCALR: 0 21:04:41.355> 21:04:41.355> OK 21:04:41.918> AT+CCALR? 21:04:41.918> 21:04:41.918> +CCALR: 0 21:04:41.918> 21:04:41.918> OK 21:04:42.293> 21:04:42.293> SMS Ready 21:04:42.418> AT+CCALR? 21:04:42.418> 21:04:42.418> +CCALR: 0 21:04:42.418> 21:04:42.418> OK Так Ready или нет? Ввод PIN-кода Код 1:13:56.621> AT+CSMINS? 21:13:56.621> 21:13:56.621> +CSMINS: 0,1 21:13:56.621> 21:13:56.621> OK 21:13:56.871> AT+CPIN? 21:13:56.871> 21:13:56.871> +CPIN: SIM PIN 21:13:56.871> 21:13:56.871> OK 21:13:57.183> AT+CPIN=7324 21:13:57.308> 21:13:57.308> [b]ERROR[/b] Смотрим в мануал: Цитата Response TA stores a password which is necessary before it can be operated (SIM PIN, SIM PUK, PH-SIM PIN, etc.). If the PIN required is SIM PUK or SIM PUK2, the second pin is required. This second pin, <new pin>, is used to replace the old pin in the SIM. OK If error is related to ME functionality: +CME ERROR: <err> Так почему же ERROR, команда то выполнилась?! Где же заветный " +CME ERROR: 16", который по стандарту и который всегда был? ERROR означает, что команда не выполнилась. Таким образом, если она все-таки верна, ее следует повторить. А тут шустро повторили 3 раза - и все, монтажник, ищи PUK...
|
|
|
|
|
Feb 9 2016, 17:11
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(Alechek @ Feb 9 2016, 18:30)  Вот пойми его, PIN готов? или не готов? или вобще я/модуль/ с ума сошел? У меня два варианта: или отваливается SIM карта и модуль переключается туда-сюда, или модуль просто сам по себе глючит  Цитата Где же заветный "+CME ERROR: 16", который по стандарту и который всегда был? У вас AT+CMEE включено? А то по-умолчанию +CMEE: 0 и всегда выдается просто ERROR Вообще первый пример взможен при отваливании симки, второй пример с AT+CCALR прикольная лажа, а в третьем примере ничего необычного не вижу.
|
|
|
|
|
Feb 9 2016, 17:59
|

Профессионал
    
Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718

|
Цитата PIN готов? или не готов? или вобще я/модуль/ с ума сошел? проверьте трассировку http://electronix.ru/forum/index.php?showtopic=131098Цитата 6.2.38 AT+CCALR Call Ready Query на ваше усмотрение)) тов CADiLO говорил, что логика у этих модемов такова: пока не пришёл CallReady - ничего не обещаем. Цитата 3 если CMEE > 0, но приходит ERROR, то ошибка может быть в синтаксисе команды: попробуйте заключить в кавычки пин-код.
|
|
|
|
|
Feb 10 2016, 05:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(Baser @ Feb 9 2016, 22:11)  У меня два варианта: или отваливается SIM карта и модуль переключается туда-сюда, или модуль просто сам по себе глючит  С целью проверить устойчивость готового изделия, начал туда втыкать все симки, что нашел у себя на столе. В том числе и нерабочие /убитые более ранними изделиями/. Вот от такой нерабочей модуль и сошел с ума. Пускай меня закидают камнями, со словами "нечего подсовывать модулю нечто не работающее по стандарту", я же лишь констатирую, что обработка ошибок в модуле реализована, мягко говоря, плохо. Цитата(Baser @ Feb 9 2016, 22:11)  У вас AT+CMEE включено? А то по-умолчанию +CMEE: 0 и всегда выдается просто ERROR Спасибо, Вы правы! СМЕЕ устанавливался, но позже. Видать 300 и 900 серии либо сохраняли настройку без ведома пользователя, либо CMEE=1 по-умолчанию. Кстати, по первому примеру, после включения CMEE=1 Код 10:42:09.012> AT+CSMINS? 10:42:09.012> 10:42:09.012> +CSMINS: 0,1 10:42:09.012> 10:42:09.012> OK 10:42:09.262> AT+CPIN? 10:42:09.262> 10:42:09.324> +CME ERROR: 14 10:42:09.574> 10:42:09.574> +CPIN: READY 10:42:09.574> 10:42:09.574> +CPIN: NOT READY
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|