|
GPRS on GE864, выход в коммандный режим |
|
|
|
Mar 7 2010, 14:10
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
В общем проблема следующая хочу присоединится к GPRS в командном режиме, делаю для этого:
at+cgdcont=1,"IP","internet","0.0.0.0",0,0
OK at#scfg=1,1,300,90,600,50
OK AT#SGACT=1,1
#SGACT: 91.145.244.159
OK AT#SD=1,0,25,"77.88.21.38",0,0,1
CONNECT
И попадаю в фоновый режим, я конечно могу с него выйти по "+++", но все же как-то не красиво получается... И тем более комманды SCFGEXT, SSEND возвращают ошибку так как буд-то модем вообще не знает этих комманд (возращает не с кодом ошибки а просто error) SELINT = 2, устанавливаю. Господа, что я упускаю?
Сообщение отредактировал gsm_starter - Mar 7 2010, 14:14
|
|
|
|
|
Mar 9 2010, 14:09
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
В документации на GPRS просто было написано что последний параметр в команде #SD, обозначает, если 0, то фоновый режим, 1 если коммандный. Разница в том что ф воновом команды не обрабатываются а все отправленное в ком-порт идет на сервер. А в коммандном для отправки сообщений необходимо использовать команду #SSEND (прием сообщений осуществляется через SRING). Но вот выйти в коммандный режим не выходит, а комманды SCFGEXT, SSEND вообще возвращают ошибку как буд-то не существую. В чем проблема?
|
|
|
|
|
Mar 9 2010, 15:08
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата(gsm_starter @ Mar 9 2010, 18:09)  В документации на GPRS просто было написано что последний параметр в команде #SD, обозначает, если 0, то фоновый режим, 1 если коммандный. Разница в том что ф воновом команды не обрабатываются а все отправленное в ком-порт идет на сервер. А в коммандном для отправки сообщений необходимо использовать команду #SSEND (прием сообщений осуществляется через SRING). Но вот выйти в коммандный режим не выходит, а комманды SCFGEXT, SSEND вообще возвращают ошибку как буд-то не существую. В чем проблема? Ну так попробуйте подключится в online-mode (SD=1,0,80,"www.google.com" например). Получайте connect. По +++ выходите в command mode. Делаете всё что нужно возвращаетесь в online mode по AT#SO=1 Если связь оборвётся то в command mode вам вернётся сообщение NO CARRIER. Проверил на воём GE864-PY - команды SCFGEXT, SSEND, SRECV он не поддерживает в принципе. А команду SD всегда выполняет в online mode (даже если установить последний бит в команде).
|
|
|
|
|
May 5 2010, 12:49
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
Цитата(mempfis_ @ Mar 9 2010, 18:08)  Ну так попробуйте подключится в online-mode (SD=1,0,80,"www.google.com" например). Получайте connect. По +++ выходите в command mode. Делаете всё что нужно возвращаетесь в online mode по AT#SO=1 Если связь оборвётся то в command mode вам вернётся сообщение NO CARRIER.
Проверил на воём GE864-PY - команды SCFGEXT, SSEND, SRECV он не поддерживает в принципе. А команду SD всегда выполняет в online mode (даже если установить последний бит в команде). Зачем тогда писать в даташите на AT-команды что они поддерживаются? Вообще их не понимаю.
|
|
|
|
|
Jun 21 2010, 20:10
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
Такая проблема. Я работаю с сервером, когда нужно выйт я как вы и советовали использую "+++". Так вот проблема в том что сервер получает эту строку "+++" в виде данных, это он характеризует как некорректные данные и закрывает сокет. У меня вопрос, как этого избежать? Как выйти с онлайн-режима ничего не слав при этом на сервер? В железе используется только rx и tx.
|
|
|
|
|
Jun 22 2010, 08:43
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
Цитата(av-master @ Jun 22 2010, 09:08)  подобрать длительность пауз между плюсами. Пробовал ждать по 2 секунды до и после. Цитата(mempfis_ @ Jun 22 2010, 09:43)  Вы как эти +++ подаёте? Нужно подавать просто +++ без \r\n в конце. Мои ge864/863 всегда понимают что это команда перехода в командный режим, даже если они в online-режиме. Разумеется без \r\n в конце. Шлю исключительно 3 байта. У меня вопрос может нужно модуль сперва как-то сконфигурировать. Какими командами вы начинаете работу с самим модулем и какими коммандами переводите его в онлайн-режим?
Сообщение отредактировал gsm_starter - Jun 22 2010, 08:47
|
|
|
|
|
Jun 22 2010, 09:23
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 23-09-08
Из: Россия
Пользователь №: 40 430

|
Для модема GM864-GPS использовал команду запрета передачи ESC последовательности еа сервер: AT#SKIPESC=1
Модем возвращается в командный режим без передачи +++ на сервер.
Ошибся чуток, модем GM862-GPS.
|
|
|
|
|
Jun 22 2010, 10:24
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата(gsm_starter @ Jun 22 2010, 11:43)  Пробовал ждать по 2 секунды до и после.
У меня вопрос может нужно модуль сперва как-то сконфигурировать. Какими командами вы начинаете работу с самим модулем и какими коммандами переводите его в онлайн-режим? Если настройки сокета такие как в первом посте Код at#scfg=1,1,300,90,600,50 то таймаут отправки данных составляет 5 секунд (50 сотен милисекунд). Нужно ждать не менее 5 секунд. Никаих особых настроек не выполняю - всё приблизительно как в первом вашем посте. Через терминал отправляю настройки как у Вас. Только таймаут у меня 1 - 100 мС и всё прекрасно работает. Перепроверил - даже с 5секундным таймаутом всё хорошо работает
|
|
|
|
|
Jun 22 2010, 13:44
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
Цитата(tamam @ Jun 22 2010, 12:23)  Для модема GM864-GPS использовал команду запрета передачи ESC последовательности еа сервер: AT#SKIPESC=1
Модем возвращается в командный режим без передачи +++ на сервер.
Ошибся чуток, модем GM862-GPS. Проблема решилась AT#SKIPESC=1. СПАСИБО. Теперь можно вообще никаких пауз не выдерживать.
|
|
|
|
|
Jul 21 2010, 15:33
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 14-01-10
Пользователь №: 54 809

|
У меня вопрос ещё по поводу AT#SD. Бывает такое что сервер недоступен и ожидание от это команды очень длинное. И самое интересное что иногда команда дает ответ через 45 секунд иногда через 75. И что самое плохое, это то что по время ожидания если выполнить какую-то команду, то ответа и от неё не дождешся, возможно во время работы этой команды они игнорируются. У меня вопрос, как задать время ожидания комманды AT#SD? И можно ли как-то обрубить выполнение? К примеру я пусть таймаут большой, если мне ничего больше не нужно делать я могу и подождать, но тут вдруг мне нужно позвонить, то можно как-то сбросить выполнение комманды недожидаясь ответа и выполнить другую?
|
|
|
|
|
Jul 22 2010, 07:11
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 23-09-08
Из: Россия
Пользователь №: 40 430

|
В описании АТ команд для Telit, насколько я помню, указано максимальное время ответа для команд. И еще там прямо написано, что надо обязательно дождаться ответа перед подачей следующей команды. Иначе их модем просто игнорирует.
Так что, скорее всего, придется ждать ответа.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|