|
Атомарность выполнения 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 ...
--------------------
Благодарю заранее!
|
|
|
|
|
 |
Ответов
(1 - 47)
|
Jan 19 2016, 11:42
|

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

|
Цитата(jcxz @ Jan 19 2016, 10:20)  Вы не поверите, но URC может прийти даже во время приёма ответа, внутри него. Или между ним и "\r\n"; или между '\r' и '\n'. Т.е. например: ERR<URC...>OR Даже такое бывает. Насчет такого скажу, что это грубая ошибка ПО и при работе с SIM300/SIM900 такого никогда не видел. Цитата(jcxz @ Jan 19 2016, 12:14)  Это конечно косяк, но это печальная реальность - сталкивался с таким в Bluegiga WT-12. К сожалению - таков уровень их программистов написавших её прошивку. А вот у Bluegiga, подтверждаю, видел. Работал с WT11i и с BLE112 - и там и там случается. Вроде солидная фирма, их даже Silicon Labs купила, а такие баги. Цитата(koluna @ Jan 18 2016, 20:33)  Может ли в процессе выполнения AT-команды, т. е., между запросами AT+XXX и ответами типа OK, ERROR, ... от модуля/модема придти какой-нибудь URC? Я в своем софте применяю след. гипотезу Ответы на команду есть двух видов: от стека модема и от мобильной сети. Вот я считаю, что между командой и ответом стека ничего влезть не может (не должно  ). А вот при ожидании ответа от ГСМ сети может что-нибудь и влезть, хотя тоже очень редко, обычно это ошибки и отлупы от ГСМ сети. Типа PDP DEACT может придти когда угодно. А чтобы не разгребать все возможные ответы модема (там бесконечное число вариантов  ) просто периодически проверяется состояние конекта, и если что не так, запускаются процедуры восстановления.
|
|
|
|
|
Jan 19 2016, 12:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(CADiLO @ Jan 19 2016, 13:42)  Абсолютно соотносится, так как нет никакого ограничения в стандарте на это. О да! В стандартах не прописывают, что п/о должно быть без глюков и багов  Цитата(Baser @ Jan 19 2016, 16:42)  Я в своем софте применяю след. гипотезу Ответы на команду есть двух видов: от стека модема и от мобильной сети. Вот я считаю, что между командой и ответом стека ничего влезть не может (не должно  ). Ну и зря. Выполнение команды модемом можно разделить на этапы: 1. Прием команды по физическому интерфейсу. 2. Разбор принятого модемом 3. Выполнение команды. 4. Формирование ответа. 5. Отправка ответа по физическому интерфейсу. Так вот, даже если допустить, что от момента выполнения команды до отправки ответа ничего влезть не сможет, то как определить фазу выполнения команды? Пока мы что-то отправляем на модем, нам УЖЕ может валится URC типа "у меня смс новое". Естественно, после отправки команды мы ждем "OK", а получаем "+CNMI" и злимся на модем, что "незванный гость хуже татарина.."
|
|
|
|
|
Jan 19 2016, 14:38
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Baser @ Jan 19 2016, 17:42)  Я в своем софте применяю след. гипотезу Ответы на команду есть двух видов: от стека модема и от мобильной сети. Вот я считаю, что между командой и ответом стека ничего влезть не может (не должно  ). А вот при ожидании ответа от ГСМ сети может что-нибудь и влезть, хотя тоже очень редко, обычно это ошибки и отлупы от ГСМ сети. Типа PDP DEACT может придти когда угодно. Имхо - неправильный алгоритм. Я классифицирую по-другому. Сообщения от модуля к клиенту (не важно GSM или какой другой общающийся через UART посредством команд от клиента) можно разделить на: а) синхронные - реакция модуля на переданные ему команды клиентом (т.е. - это ответы на команды, в том числе и многострочные); б) асинхронные - уведомления о некоторых событиях внутри модуля, напрямую несвязанных с переданными ему командами, происходящими асинхронно относительно основного командного обмена. Любая передача как от клиента к модулю, так и наоборот, делится на кадры (строки). Кадр - это последовательность допустимых символов, ограниченная символами "\r\n" (или одним из них). После передачи модулю команды клиентом, клиент переходит в состояние ожидания синхронных ответов на команды (могут быть многострочные) и ждёт ответов разбирая входящий поток кадров. Ожидание заканчивается по получению ответа (или цепочки ответов если команда может генерить цепочку ответных кадров), либо по истечении таймаута ожидания. Таким образом - URC может вклиниваться в любой момент между командой и первым кадром ответа или между двумя кадрами ответа. лавное - чтобы он не нарушал целостность кадров (строк). Сам URC тоже должен иметь такой-же формат кадра (строка). Когда URC влезает внутрь другой строки, нарушая её - это конечно баг, тут уже ничего нельзя сделать.
|
|
|
|
|
Jan 19 2016, 15:16
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(jcxz @ Jan 19 2016, 19:38)  Имхо - неправильный алгоритм. Я классифицирую по-другому. +1 Добавлю только что "правильные команды" заканчивают свой вывод " OK", а промежуточные ответы формируют с " +" вначале. Таких большинство. А вот отличить симкомовкий Call Ready от промужуточного ответа (к примеру, на +GMI ( SIMCOM_Ltd) проблематично. Как бы уважаемый Cadilo не защищал производителй модемов, палки в колеса они вставляют..
|
|
|
|
|
Jan 19 2016, 17:42
|

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

|
Цитата(Alechek @ Jan 19 2016, 14:53)  Так вот, даже если допустить, что от момента выполнения команды до отправки ответа ничего влезть не сможет, то как определить фазу выполнения команды? Пока мы что-то отправляем на модем, нам УЖЕ может валится URC типа "у меня смс новое". Естественно, после отправки команды мы ждем "OK", а получаем "+CNMI" и злимся на модем, что "незванный гость хуже татарина.." Цитата(jcxz @ Jan 19 2016, 16:38)  Имхо - неправильный алгоритм. Я классифицирую по-другому. Ну да, я имел в виду одно, а получилось другое, написал не подумавши На самом деле, то что я применяю на практике, примерно соответствует описанному вами: кольцевой приемный буфер для ответов модема, который анализируется по тайм-ауту после прихода последнего байта и периодически во время ожидания ответа. Сканируется на соответствие шаблонам ответов по принципу функции strstr(); так что положение ответа значения не имеет. После обнаружения ответа, ответ удаляется из буфера (только он). Всякие неожиданные URC периодически сканируются в бэкграунде. Чтобы уменьшить вероятность переполнения приемного буфера, периодически происходит полная его очистка (с защитными механизмами типа слежения за принимаемыми байтами на уровне прерываний и поднятия RTS). А вот разбиение на строки по \r\n не использую. Применяю обмен бинарныим данными, кроме того есть присловутые приглашения модема при отправке данных и СМС из одинокой треугольной скобки (>) А по перемешиванию ответов модема, точно читал в каком-то описании, что что-то, где-то ну точно не должно перемешиваться. Только деталей совершенно не помню...
|
|
|
|
|
Jan 20 2016, 06:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(ArtemKAD @ Jan 19 2016, 20:34)  И в чем проблема? Сложно найти "CALL READY\r\n" ? Смотря как подходить к вопросу. Чтобы 100% отделить мух от котлет, нужен полный перечень либо мух, либо котлет. Чем больше перечень, тем больше памяти нужно. Чем более перечень завязан на конкретный тип модема, тем он менее универсальный. И то и другое маложелательно. В вопросу. Что "CALL READY\r\n", что "SIMCOM_Ltd\r\n" являются чисто строками, без цифр, причем длиной 10 символов. По косвенным признакам одинаковы. Если искать "CALL READY\r\n", то "Call Ready\r\n" можно никогда и не найти, в зависимости от реализации поиска. Мало того, в 800й серии добавилось еще и "SMS Ready". Видимо, чтобы еще упростить жизнь ардуинщикам. И сделать их железо еще глючней, так как при таком подходе вряд ли кто будет заморачиваться, к примеру PDU режимом для SMS (при наличии в теле сообщения зарезирвированных сочетаний /CONNECT/OK/RDY/.../).
|
|
|
|
|
Jan 20 2016, 12:24
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(ArtemKAD @ Jan 20 2016, 15:56)  >>Чем больше перечень, тем больше памяти нужно. Пол сотни образцов для всех ответов или URC включая GPRS не займут много памяти. Ну да, (10 байт стоки+ 12-16 байт что это такое и как с ним боротся)*50 = 1кб - таблица только. Действительно, фигня.... Особенно для ардуинщика с мегой 16 Цитата(ArtemKAD @ Jan 20 2016, 15:56)  Зачем искать "SIMCOM_Ltdrn"? Эта строка не несет хоть какую либо информацию. Тип производителя модема с которым работает программа и так известен. Я не про это. При включении модуля запрашиваем тип модема. Ждем строку. Прилетает вполне такая строка "Call Ready". Мы таких модемов не знаем, ахтунг! Цитата(ArtemKAD @ Jan 20 2016, 15:56)  >>Мало того, в 800й серии добавилось еще и "SMS Ready". И правильно сделал что добавил. Опять-же уникальная строка которая сообщает когда модуль готов отправлять SMS. Опять типичный подход для ардуинщика. Сделать обработку +CME 314 /SIM BUSY/ не судьба. Надо ждать манну с неба сообщение.
|
|
|
|
|
Jan 20 2016, 12:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(CADiLO @ Jan 20 2016, 17:33)  >>> При включении модуля запрашиваем тип модема. Ждем строку. Прилетает вполне такая строка "Call Ready". Ну и кто вам доктор? Зачем общаться с модулем до того как он готов? Запросите тип модема после прилета всех строк инициализации. Ответ "OK" является готовностью модуля? Так уж вышло, что наше изделие пережило в себе всю последовательность SIM300D-SIM900D-SIM900-SIM900R-SIM900DS, теперь будет пережовывать и SIM800C-DS. И на весь этот табор одна прошивка. И в ней надо определять тип модема, чтобы потом плясать под него. Как минимум, с аудиотрактом. Выпустит квиктел или еще кто вперед симкома нормальный 2хсимочный модем 3Г, будет стоять и он. И поддерждиваться в той же самой единой прошивке. Поэтому завязываться на специфичные фишки вообще не хочется. Есть стандарт, иногда его даже читают. Те, кто не читает, пишет свое, потом доказывает, что он сделал правильно/лучше/. Вместо поддержки CME/CMS изобретают свой велосипед и доказывают, что у них колеса круглее.
|
|
|
|
|
Jan 20 2016, 13:34
|

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

|
Вам виднее как решать задачу. И кстати "OK" не является готовностью. Для 800 серии готовность наступает после этих двух сообщений.
Call Ready - Module is powered on and phonebook initialization procedure is over. SMS Ready - Module is powered on and SMS initialization procedure is over
Двухсимочный 3G пока в стадии хотелок, насколько я знаю его ни у кого нет в планах. А вот 2G решение оказалось прозаичнее - народ посмотрев на SIM800C-DS и обсудив с нами варианты, предпочел ставить по два SIM800C в устройство. Получаем два полноценных тракта, а не "только на прием", надежнее, паять проще, да и по стоимости почти столько же выходит. SIM800C объемы хорошие, есть где в цене подвинуться. А SIM800C-DS дешеветь не будет - нет у него популярности из-за "вывернутости" выводов.
--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
|
|
|
|
|
Jan 20 2016, 13:58
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(CADiLO @ Jan 20 2016, 18:34)  Вам виднее как решать задачу. И кстати "OK" не является готовностью. Для 800 серии готовность наступает после этих двух сообщений.
Call Ready - Module is powered on and phonebook initialization procedure is over. SMS Ready - Module is powered on and SMS initialization procedure is over Вот я тоже думаю, для кого эта команда: Цитата 8.1 Phone activity status +CPAS Defined values <pas>: 0 ready (ME allows commands from TA/TE) 1 unavailable (ME does not allow commands from TA/TE) 2 unknown (ME is not guaranteed to respond to instructions) А еще +CME ERROR: 14 /SIM busy/ для +CPBR и +CMS ERROR: 314 /SIM busy/ для +CMGL Цитата( @ Jan 20 2016, 18:34)  А вот 2G решение оказалось прозаичнее - народ посмотрев на SIM800C-DS и обсудив с нами варианты, предпочел ставить по два SIM800C в устройство. Возьму на заметку. Цитата(CADiLO @ Jan 20 2016, 18:44)  >>>Так все-таки такое поведение (разрыв строки в любом месте) - баг или нет? С точки зрения пользователя и написания обработчика - можно считать багом. Но вот с точки зрения GSM cтека - нормальное явление. Ну не додумали малость когда стек писали. Писатели стека тоже значит проигнорили GSM 07.07 и V.25ter:
Все промежуточные ответы показаны с "+" /Все промужуточные и асинхронные без "+" - наследие V.25ter./. Разрыва в промежуточных сообщениях нет. Все команды заканчиваются "final result code". Да, в тексте нигде требования нет. Но и не все поизводители микроволновок пишут, что в них нельзя сушить кота.
|
|
|
|
|
Jan 20 2016, 14:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Цитата(ArtemKAD @ Jan 20 2016, 18:36)  >>Ну да, (10 байт стоки+ 12-16 байт что это такое и как с ним боротся)*50 = 1кб "12-16 байт что это такое и как с ним боротся" это я так понимаю два адреса - адрес образца и адрес процедуры вызываемой при появлении образца. 4 байта, а никак не 12-16. Кроме того, вся эта таблица всё равно в коде так или иначе будет только будет она разбросана по разным местам, что крайне затруднит модификацию кода и почти наверняка займёт еще больше места. Вот когда разбросана по разным местам - тут вообще труба. В одном месте надо таблицу делать, чтобы не запутаться. PS Без всяких таблиц с простейшей поддержкой SMS-GPRS один из наших трекеров на ARM скушал 40 008 bytes of readonly code memory 704 bytes of readonly data memory 13 112 bytes of readwrite data memory (+ 619 absolute) из них на модемную часть ушло 4.5 кб флеша и 600 байт на PDU. PS: На затравку: чем отличается +GREG URC и промежуточный ответ и как эту смесь обрабатывать, когда от запроса до получения OK приходят обе. /эт по поводу таблиц/ Цитата(CADiLO @ Jan 20 2016, 19:09)  Вы ошибаетесь - CPAS это состояние соединения, а не модуля.
Кстати рудимент оставшийся от мобилок. Для модулей вместо CPAS давно уже используют более информативную CLCC Может и рудимент, а может и нет. 0 ready (ME allows commands from TA/TE) 1 unavailable (ME does not allow commands from TA/TE) ME Mobile Equipment, e.g. a GSM phone (equal to MS; Mobile Station) TA Terminal Adaptor, e.g. a GSM data card (equal to DCE; Data Circuit terminating Equipment) TE Terminal Equipment, e.g. a computer (equal to DTE; Data Terminal Equipment) В нашем случае ME - это модуль, совмещенный с TA. И он либо готов принимать команды, либо не готов. По крайней мере, команды +CG* дают информацию именно по ME: 5.2 Request model identification +CGMM Execution command causes the TA to return one or more lines of information text <model>, determined by the ME manufacturer, which is intended to permit the user of the TA to identify the specific model of the ME to which it is connected to. Таким образом, при +CPAS: 0 я со спокойной совестью могу чихать на всякие "RDY" и работать с ME через TA хотя бы в плане идентификации оборудования. А доступность TA можно проверить по AT->OK
|
|
|
|
|
Jan 20 2016, 14:55
|
Профессионал
    
Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364

|
Цитата(Alechek @ Jan 20 2016, 16:27)  PS Без всяких таблиц с простейшей поддержкой SMS-GPRS один из наших трекеров на ARM скушал 40 008 bytes of readonly code memory 704 bytes of readonly data memory 13 112 bytes of readwrite data memory (+ 619 absolute)
из них на модемную часть ушло 4.5 кб флеша и 600 байт на PDU. 40кБ кода для треккера? Он что, еще и танцевать умеет? Добавка GPRS это 3-4кБ от силы. Цитата(Alechek @ Jan 20 2016, 16:27)  PS: На затравку: чем отличается +GREG URC и промежуточный ответ и как эту смесь обрабатывать, когда от запроса до получения OK приходят обе. /эт по поводу таблиц/ Ну так на кой использовать и то и то одновременно? Кто тебе от этого злобный Буратина?
|
|
|
|
|
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
|
|
|
|
|
Aug 16 2016, 14:36
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Нечаянно выяснилось, что на SIM900 AT+CIPSEND=NNN весьма неатомарна Код 19:23:30.275> AT+CIPSEND=5 19:23:30.275> 19:23:46.213> > 19:23:46.213> +IPD,8:ANSWER 19:24:10.775> 12345 19:24:10.775> SEND OK Мало того, с момента прихода данных и до момента отправки устанавливается DCD! Версия прошивки Код 19:28:25.306> AT+CGMR 19:28:25.306> Revision:1137B09SIM900M64_ST 19:28:25.306> OK Есть стойкое подозрение, что SIM900C-DS в такой ситуации линию DCD не восстанавливает, она и далее остается в 1
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|