Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT команды
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Страницы: 1, 2, 3, 4, 5
Harbinger
Желательно предварительно установить AT+CMEE=1. Тогда на AT+CPIN? в случае отсутствия SIM-карты выдаст +CME ERROR: 10, а в случае ошибки обмена (неисправность карты, с точки зрения модуля) - +CME ERROR: 13.
А вообще-то SIM300 при фиксированной скорости обмена по UART это и так говорит, +CPIN: READY, или SIM NOT INSERTED, или SIM ERROR.
head_sk
Цитата(Harbinger @ Nov 12 2009, 20:04) *
Желательно предварительно установить AT+CMEE=1.
У SIM300 по-умолчанию тот режим включен.
mempfis_
Цитата(Anthoni @ Feb 22 2008, 18:08) *
Как вычислить момент когда можно отсылать СМС.


Я вычисляю момент когда можно получать/сласть смс когда на AT+CPBS? модем перестаёт выдавать ERROR (гдето секунд 30 после включения).
После этого настраиваю формат и вывод смс AT+CMGF=1 AT+CNMI=2,1. Дальше модем сам по приходу новой смс выдаёт в терминал информацию о её месторасположении.
Harbinger
Цитата(head_sk @ Nov 13 2009, 00:10) *
У SIM300 по-умолчанию тот режим включен.

Да, но лучше перебдеть, чем недобдеть - пробегала ведь партия модулей с весьма странными заводскими установками.
arm123
Подскажите команду с помощью которой можно однозначно определить если связь или нет?
Нужно для проверки когда произошла регистрации модема в сети оператора, но вдруг по каким-то причинам пропала.
Master of Nature
Цитата(arm123 @ Nov 19 2009, 23:16) *
Подскажите команду с помощью которой можно однозначно определить если связь или нет?
Нужно для проверки когда произошла регистрации модема в сети оператора, но вдруг по каким-то причинам пропала.

AT+CREG? должно срабатывать, если регистрация теряется.
Так же помогает AT+CSQ (уровень сигнала)
west329_
Уважаемые форумчане, подскажите пожалуйста как реализуется пакетная передача данных в формате HEX.
Интересует именно тот момент когда нужно передать на сервер UDP пакет в формате HEX, размер заранее ограничен 512байтами. Модуль используется 300DZ. Не хочется данные которые лежат в памяти переводить в ASCII. Да собственно и сам сервер не поймёт, на другом конце сидит жесткий алгоритм который воспринимает данные только в HEX.

Допустим проделываются над модулем все нужные команды, и он успешно подключается к серверу по UDP при этом выдает следущее...
Код
CONNECT OK
AT+CIPSEND
>

как дальше поступить ?
Baser
Цитата(west329_ @ Dec 7 2009, 16:18) *
... размер заранее ограничен 512байтами. Модуль используется 300DZ. Не хочется данные которые лежат в памяти переводить в ASCII...

Допустим проделываются над модулем все нужные команды, и он успешно подключается к серверу по UDP при этом выдает следущее...
Код
CONNECT OK
AT+CIPSEND
>

как дальше поступить ?

После таких команд послать все HEX-коды уже не удасться wink.gif
В частности, коды CTRL-Z (0x1A) и ESC (0x1B) уже не пройдут...

Нужно применять команду посылки заданного числа байтов:
AT+CIPSEND=512<CR>
Master of Nature
Цитата(west329_ @ Dec 7 2009, 18:18) *
Уважаемые форумчане, подскажите пожалуйста как реализуется пакетная передача данных в формате HEX.
Интересует именно тот момент когда нужно передать на сервер UDP пакет в формате HEX, размер заранее ограничен 512байтами. Модуль используется 300DZ. Не хочется данные которые лежат в памяти переводить в ASCII. Да собственно и сам сервер не поймёт, на другом конце сидит жесткий алгоритм который воспринимает данные только в HEX.

Допустим проделываются над модулем все нужные команды, и он успешно подключается к серверу по UDP при этом выдает следущее...
Код
CONNECT OK
AT+CIPSEND
>

как дальше поступить ?

Скажите, а что это за формат такой: HEX ? Какой-то хитрый формат хранения данных или просто разновидность системы представления данных наряду с двоичной (BIN), восмеричной (OCT) или десятичной (DEC) ?
Aner
Ну вы блин даете!
Intel придумал такой формат давно давно. Если гуглить не можете, то вот википедия вам поможет:
http://ru.wikipedia.org/wiki/Intel_Hex
Master of Nature
Цитата(Aner @ Dec 8 2009, 02:11) *
Ну вы блин даете!
Intel придумал такой формат давно давно. Если гуглить не можете, то вот википедия вам поможет:
http://ru.wikipedia.org/wiki/Intel_Hex

В таком случае не совсем корректно сформулирован вопрос?
Или это не вопрос, а просто размышление вслух: посылать данные в двоичном виде или в текстовом?
Непонятно как-то, что значит - сервер не поймет ASCII, он настроен на прием HEX ?
И приведенной выше ссылки следует, что HEX - это формат текстовых файлов в кодировке ASCII.
Значит как текст и надо передавать.
Aner
текст то текстом а вот кто-то должен формировать остальные атрибуты:

Начало записи
Счётчик байт
Адрес
Тип записи
Данные в ASCII
Контрольная сумма

например это все увеличивает размер файла.
Если нет этих атрибутов как сервер поймет?
av-master
если бинарные данные. переходите в прозрачный режим и шлите все что угодно.. Возврат в командный по +++ или ДТР
Master of Nature
Цитата(Aner @ Dec 8 2009, 02:29) *
текст то текстом а вот кто-то должен формировать остальные атрибуты:

Начало записи
Счётчик байт
Адрес
Тип записи
Данные в ASCII
Контрольная сумма

например это все увеличивает размер файла.
Если нет этих атрибутов как сервер поймет?

Отправляйте в бинарном виде? зачем тогда формат HEX, если не хотите его придерживаться? А сервер не поймет.
Формат придумывается не просто так и в нем нет лишних полей. Если уж передавать, то все, включая старты, стопы и особенно важно - контрольную сумму.

Особенно мне понравилось, что к "остальным атрибутам" причислены "данные в ASCII".
Тогда ради чего передача ведется ?
west329_
Извиняюсь, перечитал, сегодня с утра, действительно написал вопрос непонятно. Данные все они одинаковые 1/0, просто я заметил на форуме что большинство использует передачу сообщений ASCII, имхо удобно для отладки, но непрактично. Вот и заинтересовало, как правильно передавать просто сырые данные (любое значение байта).

Отдельно спасибо Baser. Направил в нуженое русло.

из даташита SIM300D AT Commands Set V1.06 sim300d_atc_v1.06.pdf
Код
Write command AT+CIPSEND=<length>

This command is used to send fixed length data.
If connection is not established or disconnect:
ERROR If sending successfully: SEND OK If sending fail: SEND FAIL Parameter
<length> a numeric parameter which indicatesthe length of sending data, it must less than 1024


неполностью разобрался как правильно вызвать эту команду, поправте если ошибаюсь

Действие 1. шлем в модем
Код
AT+CIPSEND=512<

Действие 2. шлём сырые данные 512байт
Код
.........

Действие 3. закрываем передачу
Код
>
av-master
в таком режиме можно получить интересные глюки...
если коды лежат вне ascii диаппазона... например h17 может не проходить... хотя если включено аппаратное управление потоком то все вроде работает...
west329_
Как тогда выйти с такого положения ?
данные могут быль любые в диапазоне 0х00-0хFF
Baser
Цитата(west329_ @ Dec 8 2009, 09:03) *
неполностью разобрался как правильно вызвать эту команду, поправте если ошибаюсь

После установления коннекта шлем команду:
Код
AT+CIPSEND=512

Модуль возвращает предложение ввести данные (хотя выдачу этой галки можно и отключить, но паузу выдержать желательно, были сообщения о глюках, если посылать данные после команды без паузы):
Код
>

Шлете 512 байтов любых данных, после чего модем передает их все одним куском и выдает:
Код
SEND OK

После чего можно или ждать, когда нужно будет послать новые данные или закрывать соединение.

Управление потоком должно быть или выключено, или установленно "аппаратное".
av-master
при ВЫКЛЮЧЕННОМ управлении потоком у меня сьедались 17-ки (это софтовый стоп). долго не мог понять причину )) пока не отправил 00 -- 01 -- 02 .... FF ... и не увидел пропавшую 17 (или 15) точно непомню...
Baser
Цитата(av-master @ Dec 8 2009, 13:46) *
при ВЫКЛЮЧЕННОМ управлении потоком у меня сьедались 17-ки (это софтовый стоп). долго не мог понять причину )) пока не отправил 00 -- 01 -- 02 .... FF ... и не увидел пропавшую 17 (или 15) точно непомню...

Вполне возможно, я без аппаратного управления потоком не проверял..
west329_
Обычно простые 8 битные контроллеры не позволяют реализовать аппаратное управления потоком, это надо наверно сразу арм7 ставить.
stream
Цитата(west329_ @ Dec 9 2009, 11:36) *
Обычно простые 8 битные контроллеры не позволяют реализовать аппаратное управления потоком, это надо наверно сразу арм7 ставить.

Да ладно тебе, все что требуется - это две ножки процессора для CTS/RTS и какой-то способ их периодической проверки для "восстановления после сработки" (таймерное прерывание или программа, написанная в виде одного большого цикла). Ну, бывает, наверное, что даже этого нет... я бы от такого кристалла держался подальше.
Baser
Цитата(west329_ @ Dec 9 2009, 09:36) *
Обычно простые 8 битные контроллеры не позволяют реализовать аппаратное управления потоком, это надо наверно сразу арм7 ставить.

biggrin.gif
"аппаратным", управление потоком называется, в основном, потому, что помимо линий данных применяются еще два аппаратных сигнала CTS и RTS.
Все остальное реализуется программно.
CTS - сигнал от модема к МК, что буфер передатчика вот-вот заполнится и нужно приостановит передачу данных в модем.
RTS - то же самое в обратную сторону.
Просто нужно иметь в виду, что после активизации сигнала запрета, несколько байт еще могут прилететь. А вот какое конкретно кол-во - зависит от реализации модема.
ironmaden
Всем привет,
есть вопрос....

Интро:
-- Есть некоторая плата на ARM-e, с линуксом собранным на основе идеологии сборки openembedded
-- Вариант платы #1 - на плате распаяны два модема GSM/CDMA оба AnyData (выбор, вкл, выкл нужного модема через gpio)
-- Вариант платы #2 - на плате распаян GSM модем Wavecom

Общение в обоих случаях идет через последовательный порт /dev/ttySAC0.
При отладке общаюсь с модемом в ручном режиме через minicom но через тот же /dev/ttySAC0.

Треубется -- принимать на плату SMS-сообщения, с последующей их обработкой на стороне ещё одного приложения -- это по сути все реализовано и работает с модемом Wavecom для варианта индикации "AT+CNMI=2,2,2,1,0"

AnyData GSM (DTP-601W) модем с такими настройками работать не хочет
Код
at+cnmi=2,2,2,1,0
+CMS ERROR: 303


С другими значениями индикации тоже весело, на большую часть отвечает "+CMS ERROR: 303", на других (например, "AT+CNMI=2,1,0,0,0") виснет наглухо -- помогает только ребут всей платы.

Код
ati
Manufacturer: QUALCOMM INCORPORATED
Model: 19
Revision: U66WHH02  1  [Aug 10 2009 24:00:00]
IMEI: 354862010998768
+GCAP: +CGSM,+DS,+ES

OK
at+csq
+CSQ: 10,99

OK
at+cnmi=2,2,2,1,0
+CMS ERROR: 303
at+creg?
+CREG: 0,1

OK
at+cops?
+COPS: 0,0,"MegaFon RUS",2

OK


может это какие-либо ограничения, может баг прошифки, или надо какие-то ещё параметры выставить до того как включать режим индикации сообщений?
andrewlekar
Попробуйте AT+CNMI=2,2,0,1,0 и ещё AT+CNMI=2,2,0,0,0.
ironmaden
Цитата
Попробуйте AT+CNMI=2,2,0,1,0 и ещё AT+CNMI=2,2,0,0,0


результат
Код
ati
Manufacturer: QUALCOMM INCORPORATED
Model: 19
Revision: U66WHH02  1  [Aug 10 2009 24:00:00]
IMEI: 354862010998768
+GCAP: +CGSM,+DS,+ES

OK
atz
OK
at+cnmi?
+CNMI: 0,0,0,0,0

OK
at+cnmi=2,2,0,1,0
+CMS ERROR: 303
at+cnmi=2,2,0,0,0
+CMS ERROR: 303
at+cops?
+COPS: 0,0,"MegaFon RUS",2



так-с..
таки разобрался.
опытным путем было выяснено, что через последовательный (serial) порт устройство работать нормально не желает (упоминаний об этом в доках его найдено не было).
устройство работает через USB-порт, /dev/ttyUSB0 в моем случае... остается не ясным почему так было реализовано.

всем спасибо.
av-master
мелкий вопрос. )) можно ли какойто командой отключить OVER VOLTAGE ... ?? sim300D
CADiLO
Отключить нельзя.
av-master
спасибо. вопрос решил последовательным диодом по питанию ))
magbob
Уважаемые господа гуру, есть вопросик.
GPRS модем siemens mc75. Как его настроить, чтобы он показывал правильное состояние дозвона.
Звоню на номер:
atd+7xxxxxxxxx;
нормально звонит на телефон. На телефоне отклоняю вызов. Модем вместо того чтобы показать соединения нет - говорит есть соединение.
^SLCC: 1,0,2,0,0,1
^SLCC: 1,0,3,0,0,0
^SLCC: 1,0,0,0,0,1
думал что оператор чегото чудит. Вставил симку в телефон там все корректно (отбой определяет).
И на все звонки у него только два ответа "ОК" или "NO CARRIER".
А мне надо точно знать что я дозвонился до номера, на той стороне отклонили вызов или приняли вызов.
Палыч
Цитата(magbob @ Sep 14 2010, 13:34) *
Модем вместо того чтобы показать соединения нет - говорит есть соединение.
А, если воспользоваться не расширением АТ-команд от Siemens, а стандартной командой AT+CLCC, то каков результат?
magbob
Вот:
+CLCC: 1,0,2,0,0
+CLCC: 1,0,3,0,0
+CLCC: 1,0,0,0,0

Модем и действительно подымает трубку, когда на телефоне вызов отклоняю. (лампочка зажигается). Хотя делать этого не должен.

А команда: at+cpas

+CPAS: 4


magbob
Все оказалось просто.

Когда на этот номер звонишь с городского телефона и отклоняешь вызов - идет отбой. А с мобилы говорит информатор.
sadfeel
Всем привет, у меня телефон siemens sk65 в нем стоит карточка лайф, с помощью АТ команд пытаюсь позвонить на номер пишу :

ATD +380960000000

к примеру (пишу существующий номер). на 096 звонит, на другие нет. тоесть если я дам команду

ATD +380980000000

гиперТерминал пишет NO CARRIER.
ктонить знает в чем проблема?

Да и еще при звонке на 096 ... .. .. телефон, к которому звоню не может снять трубку, пишет "принять нельзя"
Transistor
попробуй так ATD+380980000000; (без пробела и с точкой с запятой в конце)
sadfeel
Цитата(Transistor @ Oct 7 2010, 18:59) *
попробуй так ATD+380980000000; (без пробела и с точкой с запятой в конце)


Спасибо большое, помогло))

а в чем была проблема не подскажешь???? когда набирал без ";" телефон на который я звонил не мог снять трубку, когда с, все нормально, может есть какая-то настройка в телефоне?)

есть какая-то команда для определения того, в каком состоянии находится звонок? тоесть к примеру, звоню на номер, посылаю какую-то команду и в ответ узнаю, к примеру ОК - идет гудок, что то другое там идет еще набор, или номер не существует? Спасибо

или к примеру когда я набираю отключенный номер с телефона, оператор сразу говорит что номер не существует и тд. когда с терминала то проходит около 10 сек прежде чем высвечивается NO CARRIER. можно как то это исправить? Большое спасибо wink.gif
Transistor
1. ";" указывает, что мы хотим сделать голосовой вызов. Без неё модем совершает соединение в режиме передачи данных CSD.
2,3 возможно здесь есть ответ http://electronix.ru/forum/index.php?showtopic=80441
sadfeel
Цитата(Transistor @ Oct 7 2010, 20:56) *
1. ";" указывает, что мы хотим сделать голосовой вызов. Без неё модем совершает соединение в режиме передачи данных CSD.
2,3 возможно здесь есть ответ http://electronix.ru/forum/index.php?showtopic=80441


Огромное Спасибо!
sadfeel
имеется 2 мобильных сименса, когда с одного набираю команду ATD если телефон выключен через 3 сек в терминале вижу надпись NO CARRIER. со второго когда набираю эту же команду эта же надпись (NO CARRIER) высвечивается но через 12 сек. Кто-нибудь знает в чем может быть проблема со вторым телефоном?
DeVOuR
Доброй ночи всем!
Вопрос по поводу команды AT+CGATT. Модем SIM300 в связке с AVR-контроллером.
Вообще, когда мне нужна работа с gprs раз\два в сутки, то лучше подключатся к нему єтой командой 1 раз (AT+CGATT=1) в начале работы?

И чем чревато вообще то, что у меня опстоянно будет включен gprs?

Лучше ли после работы с ним его отключать? (AT+CGATT=0)


+ вопрос:

Почему модем возвращает CONNECT FAIL на AT+CGATT=0? Так задумано либо нужно подключение?
Ее (AT+CGATT=0) надо использовать после AT+CIPCLOSE или до?



КорочЕ, как правильно закрывать gprs-соединение и полностью от него отключаться?


Заранее Спасибо Всем!
stasick
Здравствуйте!
у меня такой вопрос по поводу модема SIM300. к устройству с микроконтроллером подключен SIM300, к компьютеру Wavecom.

при установке связи между двумя модемами (номер набираю с СИМ карты командой atd>SM99) в режиме передачи данных, принимающий модем
после двух RING...RING..выдаёт просто OK, а нужно получить строку CONNECT 9600. я так подозреваю, что это SIM300 её просто не выдаёт, потому что с двумя Wavecom всё работает отлично!
вот профиль SIM300:

ACTIVE PROFILE
E: 1
L: 0
M: 0
Q: 0
V: 1
X: 4
S0: 2
S2: 43
S3: 13
S4: 10
S5: 8
S6: 2
S7: 60
S8: 2
S10: 15
+CRC: 0
+CR: 0
+FCLASS: 0
+IMODE: 0
+DR: 0
+CMGF: 0
+CSDH: 0
+ILRR: 0
+CRLP: 61,61,128,6,0,3
+CMEE: 1
+CBST: 7,0,1
+IFC: 0,0
+ICF: 3,3
+CNMI: 2,1,0,0,0
+CSTA: 129
+CSCS: "IRA"
+IPR: 9600
+DS: 3,0,512,20
&C: 0
&D: 2
+CCWE: 0
+CDTX: 0
+CTZU: 0
+CTZR: 0
+CV120: 1,1,1,0,0,0
+CEXTHS: 0
+CEXTBUT: 0
+CSMINS: 0
+CMUX: 0
+CCUG: 0,0,0
+CLIP: 0
+COLP: 0
+CCWA: 0
+CAOC: 1
+CLIR: 0
+CUSD: 0
+CSSU: 0
+CSSI: 0
+CDIP: 0
+CSCLK: 0
+CIURC: 1
+SCLASS0: 0
+CSDT: 0
+CMIC: 2,2
+ECHO(NORMAL_AUDIO): 0,0,0
+ECHO(AUX_AUDIO): 0,0,0
+SIDET(NORMAL_AUDIO): 4096
+SIDET(AUX_AUDIO): 4096
+CLCAL: 1
+CCPD: 1
+CMTE: 1

подскажите пожалуйста как его правильно запрограммировать.. help.gif
stasick
я уже сам разобрался...
если набирать номер напрямую ATD09845.... то всё работает как надо!)))
S.S.V
Вопрос по СМС.

Требуется определять, есть ли номер входящего СМС в телефонной книге. Модуль Cinterion mc52i.
Про команду +CPBR и аналогичные пишут, что <addr> не реализовано.
Управляющий контроллер с 2к памяти - хранить телефонную книжку негде.
Читать всю книгу для каждого входящего неохота. Может есть выход?
Aurochs
Цитата(S.S.V @ Feb 15 2011, 09:04) *
Про команду +CPBR и аналогичные пишут, что <addr> не реализовано.

Ну имена то в телефонной книге поддерживаются?
Если да, то имя выводится в качестве одного из параметров команды AT+CMGR . Если же отправителя в телефонной книге нет - то имя будет пустое.
S.S.V
Цитата(Aurochs @ Feb 15 2011, 17:52) *
Ну имена то в телефонной книге поддерживаются?
Если да, то имя выводится в качестве одного из параметров команды AT+CMGR . Если же отправителя в телефонной книге нет - то имя будет пустое.


Я так и делаю для входящих (+CLCC). Памяти всего 2к. Перечитывать книгу для смс или есть что-то подобное +CLCC?
Aurochs
Еще раз для тех, кто в танке - см. AT+CMGR

Kira-sempai
Здравствуйте. У меня есть задача пересылать пакеты данных с помощью GSM-модема по http методом post. Вроде более-менее разобрался с настройками модема и АТ-командами для отправки данных. Но тем не менее когда я уже пишу AT^SISW=x,nnn модем отвечает ERROR без всяких объяснений. Привожу список АТ-команд:

AT+CMEE=2
AT^SICS=0,conType,GPRS0
AT^SICS=0,inactTO,0
AT^SICS=0,user,gdata
AT^SICS=0,passwd,gdata
AT^SICS=0,apn,internet

AT^SICS?

^SICS: 0,"conType","GPRS0"
^SICS: 0,"alphabet","0"
^SICS: 0,"user","gdata"
^SICS: 0,"passwd","*****"
^SICS: 0,"authMode","PAP"
^SICS: 0,"apn","internet"
^SICS: 0,"inactTO","0"
^SICS: 1,"conType",""
^SICS: 2,"conType",""
^SICS: 3,"conType",""
^SICS: 4,"conType",""
^SICS: 5,"conType",""


AT^SISS=0,conID,0
AT^SISS=0,srvType,"Http"
AT^SISS=0,address,"Http://xxxxxx.ru/xxx.php"
AT^SISS=0,hcMethod,1
AT^SISS=0,hcProp,"Content-Type: application/x-www-form-urlencoded"
AT^SISS=0,hcContLen,nnnn


AT^SISS?

^SISS: 0,"srvType","Http"
^SISS: 0,"conId","0"
^SISS: 0,"alphabet","0"
^SISS: 0,"hcMethod","1"
^SISS: 0,"hcContLen","nnnn"
^SISS: 0,"hcAuth","0"
^SISS: 0,"hcRedir","1"
^SISS: 0,"address","Http://xxxxxx.ru/xxx.php"
^SISS: 0,"hcContent",""
^SISS: 0,"hcProp","Content-Type: application/x-www-form-urlencoded"
^SISS: 0,"user",""
^SISS: 0,"passwd","*****"
^SISS: 0,"hcUsrAgent","MC75/4.1"
^SISS: 0,"tcpMR","10"
^SISS: 0,"tcpOT","4119"
^SISS: 1,"srvType",""
^SISS: 2,"srvType",""
^SISS: 3,"srvType",""
^SISS: 4,"srvType",""
^SISS: 5,"srvType",""
^SISS: 6,"srvType",""
^SISS: 7,"srvType",""
^SISS: 8,"srvType",""
^SISS: 9,"srvType",""


AT^SISO=1

OK

^SISW: 0, 1


AT^SISO?

^SISO: 0, "Http","4","2","0","0","10.205.34.46:0","xxx.xxx.xxx.2:80"

AT^SISW=0,510

ERROR

Воот. Иногда, по непонятной мне причине, он все-таки соглашается отправлять данные. Но чем все-таки вызвана эта ошибка, и как ее избежать мне не понятно. Помогите, пожалуйста.
Павел_Б
Вопрос такой.
Модуль SIM900. Как регулировать АТ командой усиление на входе MIC_P.
Команда AT+CMIC=<channel>,<gainlevel>
<channel> для вывода MIC_P (19 pin) какой брать? 1, 2 или 3?
CADiLO
Так как в SIM900 один аудиоканал, то по умолчанию <channel> = 0

av-master
гдето еще упоминались какие-то недокументированные команды усиления микрофона. подскажите ПЛС.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.