|
Атомарность выполнения 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 ...
--------------------
Благодарю заранее!
|
|
|
|
|
 |
Ответов
(15 - 29)
|
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 приходят обе. /эт по поводу таблиц/ Ну так на кой использовать и то и то одновременно? Кто тебе от этого злобный Буратина?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|