Перейти к содержанию
    

Полной "защитой от дурака" является только перепрошивка модуля - тогда полностью обновится область настроек.

+100

Золотые слова!

Хочется вот только уточнить: о каком дураке речь? Дураке-пользователе или же дураке-разработчике?

Хотя, если принять во внимание факт, что для сброса ВСЕХ настроек вместо того, чтобы просто сбросить их одной командой (между прочим, специально для этого предусмотренной в стандарте!) приходится перепрошивать модуль, то ответ и так достаточно очевиден.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос может не совсем по АТ-командам, но не хочу создавать новую тему.

При AT+CREG=1 — разрешается выдача сообщения о смене регистрации в сети.

Антенна у меня PCB, и ловит заррраза хорошо, не могу сэмулировать пропажу сети.

Так вот - когда теряется сеть - что мне присылает модуль? Сперва +CREG: 0, потом +CREG: 2, и когда найдет сеть +CREG: 1? Или может +CREG: 0 пропустит, и сразу перейдет к +CREG: 2?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос может не совсем по АТ-командам, но не хочу создавать новую тему.

При 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня без антенны и пятерка иногда проскакивает - типа в роуминге.

Но чтобы долго держалась не получалось - пытаешься работать - хлоп - опять =0.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте

А помогите разобраться чайнику,никогда не имевшему дела с Gsm модулями

Какая вообще последовательность инициализации модуля?

Собственно мне нужно - позвонить, установить csd соединение, передать пакет данных и разъединиться

Как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Подключиться терминалом к модулю и подать питание

2. Для некоторых модулей нужно притянуть сигнал ON/~OFF (он же PWR_KEY) к земле, а потом желательно отпустить.

3. Определить скорость, на которой работает модуль и поменять в терминале скорость на нужную, либо заставить сработать автодетект скорости на модуле, если он есть.

4. Подать команду AT и поглядеть ответ.

5. Установить режим передачи данных AT+CBST=71, хотя и без этого должно работать.

6. Набрать ATD+7номер телефона

7. Дождаться соединения: CONNECT 9600

8. Набрать что угодно в терминале - это будет передано по модему на удаленный модем.

9. Набрать +++

10. Набрать ATH

 

Всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 сиерровской, думал там подсмотрю чего шлеться,

- а с нее даже позвонить не получается :(

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите чайнику. Собрал охранное устройство + модем на 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. Что я не так делаю?

Суважением.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>>Что я не так делаю?

 

Не читаете документацию

 

+CNMI: <mode>,<mt>,<bm>,<ds>,<bfr>

 

SIM300_ATC_V2.03.pdf

страничка 3

4.2.9 AT+CNMI Remove the value 1 of parameter <bfr>

 

Поэтому последний параметр всегда и будет 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не программист, я практик. Почитал форум, купил SIM300D, спаял схему и получил облом.

Текст SMSок и номера телефонов записаны в контроллере. На SIM карте ни чего не должно откладываться. В буфере модема тоже. Вся информация при приходе SMS должна идти сразу в контроллер. Почитал Руководство по использованию АТ-команд для GSM/GPRS моде- мов.: Пер. с англ. – М.:

9.9. Индикация нового сообщения: +CNMI

9.9.1. Описание

Данная команда производит отбор процедуры индикации о получении но¬вого сообщения.

И если честно мало что понял.

Может, подскажете, какие значения нужны в моем случае?

С уважением.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. В понедельник попробую. Дома нет СОМ порта. Остальные значения можно оставить как есть? - AT+CNMI:2,2,0,0,0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот есть вопрос по автомату состояния, обслуживающему входной поток символов от модуля (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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Эхо рекомендую выключать. Кроме всего прочего оно существенно замедляет обмен.

2. Действительно, о простоте говорить не приходится.

3. Асинхронные посылки модуля НИКОГДА не попадают внутрь строки ответа модуля. Посему каждую строку принятую от модуля в процессе обработки команды нужно проверять на совпадение с ожидаемой асинхронной репликой (тем же RING, например) и регистрировать их в очереди входных событий. А очередь эту обрабатывать уже после завершения обработки самой команды.

4. Можно поступать, как душе угодно, но команды на модем должны отдаваться последовательно: следующая команда должна подаваться ТОЛЬКО ПО ЗАВЕРШЕНИИ предыдущей. Под завершением понимается выдача OK|ERROR. Все, что команда выдает после этого нужно уже рассматривать как асинхронную посылку.

5. Да, скорость обмена падает, но не настолько, как при включенном эхе. Но в данном-то случае нас интересует же не скорость обмена, а скорость выполнения команд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...