|
|
  |
AT команды, всякие мелкие вопросы |
|
|
|
Dec 20 2011, 09:14
|
Ортодокс
  
Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775

|
Цитата(CADiLO @ Dec 19 2011, 09:44)  Полной "защитой от дурака" является только перепрошивка модуля - тогда полностью обновится область настроек. +100 Золотые слова! Хочется вот только уточнить: о каком дураке речь? Дураке-пользователе или же дураке-разработчике? Хотя, если принять во внимание факт, что для сброса ВСЕХ настроек вместо того, чтобы просто сбросить их одной командой (между прочим, специально для этого предусмотренной в стандарте!) приходится перепрошивать модуль, то ответ и так достаточно очевиден.
|
|
|
|
|
Dec 22 2011, 12:32
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 30-04-10
Пользователь №: 56 995

|
Вопрос может не совсем по АТ-командам, но не хочу создавать новую тему. При AT+CREG=1 — разрешается выдача сообщения о смене регистрации в сети. Антенна у меня PCB, и ловит заррраза хорошо, не могу сэмулировать пропажу сети. Так вот - когда теряется сеть - что мне присылает модуль? Сперва +CREG: 0, потом +CREG: 2, и когда найдет сеть +CREG: 1? Или может +CREG: 0 пропустит, и сразу перейдет к +CREG: 2?
|
|
|
|
|
Dec 22 2011, 13:00
|

Знающий
   
Группа: Свой
Сообщений: 567
Регистрация: 19-01-11
Из: СПб
Пользователь №: 62 326

|
Цитата(Apik @ Dec 22 2011, 16:32)  Вопрос может не совсем по АТ-командам, но не хочу создавать новую тему. При AT+CREG=1 — разрешается выдача сообщения о смене регистрации в сети. Антенна у меня PCB, и ловит заррраза хорошо, не могу сэмулировать пропажу сети. Так вот - когда теряется сеть - что мне присылает модуль? Сперва +CREG: 0, потом +CREG: 2, и когда найдет сеть +CREG: 1? Или может +CREG: 0 пропустит, и сразу перейдет к +CREG: 2? Рискну предположить, что это зависит как от модуля, так и от поведения чужих сетей. Telit GL868 + МТС: Цитата // включили модуль с антенной at+creg? +CREG: 0,1 OK at+creg=1 OK // отключили антенну +CREG: 3 // видимо, сеть конкурентов в антенне не нуждается // подключили антенну обратно +CREG: 1
Сообщение отредактировал molecul - Dec 22 2011, 13:03
|
|
|
|
|
Dec 22 2011, 13:22
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 30-04-10
Пользователь №: 56 995

|
Т.е. получается надо обрабатывать все случаи, когда СREG не равно 1. Жаль, думал можно один обработать )))
|
|
|
|
|
Mar 30 2012, 11:08
|

Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-01-10
Из: Санкт-Петербург
Пользователь №: 55 080

|
Цитата(andrewlekar @ Mar 30 2012, 13:17)  1. Подключиться терминалом к модулю и подать питание 2. Для некоторых модулей нужно притянуть сигнал ON/~OFF (он же PWR_KEY) к земле, а потом желательно отпустить. 3. Определить скорость, на которой работает модуль и поменять в терминале скорость на нужную, либо заставить сработать автодетект скорости на модуле, если он есть. 4. Подать команду AT и поглядеть ответ. 5. Установить режим передачи данных AT+CBST=71, хотя и без этого должно работать. 6. Набрать ATD+7номер телефона 7. Дождаться соединения: CONNECT 9600 8. Набрать что угодно в терминале - это будет передано по модему на удаленный модем. 9. Набрать +++ 10. Набрать ATH
Всё. Так заработало Большое спасибо. А я начал с discovery tools сиерровской, думал там подсмотрю чего шлеться, - а с нее даже позвонить не получается
|
|
|
|
|
Apr 13 2012, 12:32
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 13-04-12
Из: Уфа
Пользователь №: 71 346

|
Помогите чайнику. Собрал охранное устройство + модем на SIM300DZ. Звонит, отправляет SMS.Не отвечает на запросы с текстом stat и rst. Вот выдержка из описания устройства. Данное устройство предназначено для охраны и наблюдения за удаленными объектами. Оно может дозваниваться до телефонных номеров из списка (не более 3), записанных в EEPROM PIC'a, а также отправлять SMS. Основу составляет PIC16F628A. Он отсчитывает необходимые интервалы времени и управляет мобильным телефон посредством некоторых AT команд, а именно: • ATD<тел. номер>; - вызов. • ATH - отмена вызова. • AT+CMGS=<pdu length> - отправка SMS. • AT+CMGR=n - читать SMS с sim. • AT+CMGD=n - удалить SMS c порядковым номером n. Чтобы процессор знал о приходе новой SMS, устанавливается режим индикации входящих сообщений командой AT+CNMI=1,1,0,0,1. Есть возможность узнать в любой момент состояние всех четырех датчиков, для этого надо отправить на номер SIM карты используемого в устройстве мобильника сообщение с текстом "stat". Для сброса устройства необходимо использовать текст "rst" Ввожу команду AT+CNMI=1,1,0,0,1 Пишет: OK. Спрашиваю AT+CNMI? Отвечает AT+CNMI:1,1,0,0,0 Как ни бился последнюю цифру изменить не смог. У автора телефон Siemens C35, у меня модем на SIM300DZ. Что я не так делаю? Суважением.
|
|
|
|
|
Apr 13 2012, 14:51
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 13-04-12
Из: Уфа
Пользователь №: 71 346

|
Я не программист, я практик. Почитал форум, купил SIM300D, спаял схему и получил облом. Текст SMSок и номера телефонов записаны в контроллере. На SIM карте ни чего не должно откладываться. В буфере модема тоже. Вся информация при приходе SMS должна идти сразу в контроллер. Почитал Руководство по использованию АТ-команд для GSM/GPRS моде- мов.: Пер. с англ. – М.: 9.9. Индикация нового сообщения: +CNMI 9.9.1. Описание Данная команда производит отбор процедуры индикации о получении но¬вого сообщения. И если честно мало что понял. Может, подскажете, какие значения нужны в моем случае? С уважением.
|
|
|
|
|
Apr 14 2012, 07:30
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 13-04-12
Из: Уфа
Пользователь №: 71 346

|
Спасибо. В понедельник попробую. Дома нет СОМ порта. Остальные значения можно оставить как есть? - AT+CNMI:2,2,0,0,0
|
|
|
|
|
Apr 23 2012, 14:30
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Вот есть вопрос по автомату состояния, обслуживающему входной поток символов от модуля (SIM900). Собственно, хочется сделать его относительно гибким, чтобы можно было усложнять функции, а также как-то упорядочить процесс их выполнения при асинхронном возникновении различных событий. Пока что имеем такие задачи: 1) Отправка SMS по событию, детектированному прибором с датчика. 2) Прием SMS из сети с просьбой подключится к серверу 3) Установление GPRS-соединения с сервером и отправка журнала работы, прием команд и сопутствующих бинарных данных. На данный момент разработана схема, где к микроконтроллеру подключены только RXD, TXD, RI, в расчете на Software flow control и аппаратное определение событий по сигналу RI, таких как прием СМС. Вопросы: 1) Нужно ли работать с включенным эхо или нет? Вначале я думал по эху контролировать, что модуль честно принял команду, и можно перевести автомат обработки в состояние ожидания ответа, но на самом деле он может в ответ сам начать что-то слать в середине моей команды, см пример ниже. В этом случае получается какой-то непредсказуемый обмен. 2) Каким образом отслеживается условие, что модуль закончил ответ на последнюю выданную команду? Проблема заключается в том, что есть команды, которые выдают только один ОК, есть такие, которые выдают ответ, потом ОК, есть такие, которые выдадут ответ, но без отдельного ОК. Наконец, бывают такие, которые выдают сначала ОК, потом подумают, и еще чего выдадут, например AT+CDNSGIP. В итоге, идея о том, что можно будет сделать какой-то простой детектор, накрывается медным тазиком. В особенности, если учесть, что возможны вклинивающиеся ответы, см следующий пункт. 3) Каким образом отличать, что в ответе относится к ответу от моего запроса, от того, что пришло, скажем из сети. Ниже я привожу пример, как я стал писать команду AT+CPIN? и в этот момент позвонил на этот номер, потом повесил трубку и закончил ввод. В данном случае посыпался RING. Аналогично может посыпаться +CMTI от SMS и Бог его знает, сколько еще всего неизведанного. Можно ли так построить код, чтобы все подобные неожиданности не порушили задуманных алгоритм работы? 4) Как вообще правильно поступать, если возможны асинхронные события, порождающие независимые задания для модуля? Например, пришла СМС-ка, подключились к серверу, стали передавать ему журнал работы (лог). Пока передавали лог за сутки, сработал датчик, и теперь надо послать СМС. СМС подсистему можно дергать сразу или нужно дождаться конца сессии с сервером, успокоить модуль, забрать и проанализирвоать все статусы и вот потом начинать с ним затею с СМС? 5) Если много команд выдается подряд без эха, то как узнать где ответ на какую команду? Или, не надо так делать? Если ждать ответа на каждую, то скорость обмена падает. Хотя пока что для нас это не очень критично, объем данных относительно невелик, зато NAND-буферы огромны. Насколько я понимаю, все эти проблемы не относятся напрямую к теме FLOW CONTROL, так как никто не отказывается от приема данных с максимальной скоростью, вопрос лишь в том, как их обрабатывать. Вот такой фрагмент сессии из гипертерминала был: Код AT OK AT+CCID 89701200630012452255
OK AT+C RING
RING
RING PIN? +CPIN: READY
OK вот такой вот бывает ответ на AT+CDNSGIP Код AT+CDNSGIP="mail.ru" OK ... прошла одна секунда ... +CDNSGIP: 1,"mail.ru","94.100.191.204"
Сообщение отредактировал Hoodwin - Apr 23 2012, 14:41
|
|
|
|
|
Apr 24 2012, 22:24
|
Ортодокс
  
Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775

|
1. Эхо рекомендую выключать. Кроме всего прочего оно существенно замедляет обмен. 2. Действительно, о простоте говорить не приходится. 3. Асинхронные посылки модуля НИКОГДА не попадают внутрь строки ответа модуля. Посему каждую строку принятую от модуля в процессе обработки команды нужно проверять на совпадение с ожидаемой асинхронной репликой (тем же RING, например) и регистрировать их в очереди входных событий. А очередь эту обрабатывать уже после завершения обработки самой команды. 4. Можно поступать, как душе угодно, но команды на модем должны отдаваться последовательно: следующая команда должна подаваться ТОЛЬКО ПО ЗАВЕРШЕНИИ предыдущей. Под завершением понимается выдача OK|ERROR. Все, что команда выдает после этого нужно уже рассматривать как асинхронную посылку. 5. Да, скорость обмена падает, но не настолько, как при включенном эхе. Но в данном-то случае нас интересует же не скорость обмена, а скорость выполнения команд.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|