Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача данных по TCP, не могу понять
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
unKind
Здравствуйте нужно перередаваты данные по TCP / IP, работаю с модулями sim300C, Sim300d.
С одной стороны стандартный симкомовський кит с другой программа server.exe, скачал с сайта Гаммы. Программа работает, проверял клиентом написанным на С #.
При соединении с сервером с кита после команды
at + cipstart = "tcp", "46.211.75.141", "2020"
получаю только слово ОК, но не получаю CONNECT OK. И не могу передавать данные. в чем ошибка? smile3046.gif

Call Ready
13:44:24
at

OK
13:44:26
at+cgatt=1

OK
13:44:31
at+cipcsgp=1,"www.kyivstar.net"

OK
13:44:35
at+cdnsorip=0

OK
13:44:38
at+cstt

OK
13:44:41
at+ciicr
13:44:43

OK
13:44:46
at+cifsr

178.137.232.20
13:44:49
at+cipstart="tcp","46.211.75.141","2020"

OK
13:44:58
unKind
Использую котрактную карточку Киевстар.
rx3apf
Цитата(unKind @ May 13 2011, 14:46) *
При соединении с сервером с кита после команды
at + cipstart = "tcp", "46.211.75.141", "2020"
получаю только слово ОК, но не получаю CONNECT OK. И не могу передавать данные. в чем ошибка? smile3046.gif

"OK" - команда принята. А дальше нужно ждать установления соединения. Может быть, сервер недоступен ? Порт не проброшен ? В любом случае - ждать результата ("OK" - не результат, это лишь подтверждение приема команды). "CONNECT FAIL" - не смог соединиться, тогда копать дальше (попробовать с каким-нибудь другим сервером, хоть с google.com по порту 80). Ждать надо достаточно долго, уж 10-15 секунд таймаут это как минимум, я бы предложил секунд 30.
shootnik911
Я бы добавил проверку AT+CGATT? чтобы убедится что он действительно в 1.
Разве не надо использовать AT+CGDCONT для определения PDP контекста (APN, login, password) для оператора?
И точно ли сервер на этом порту принимает соединения извне?


rx3apf
Цитата(shootnik911 @ May 13 2011, 17:54) *
Я бы добавил проверку AT+CGATT? чтобы убедится что он действительно в 1.

А я ее вообще вместе с +cipstart сунул, потому как отваливалось иногда...
Цитата
Разве не надо использовать AT+CGDCONT для определения PDP контекста (APN, login, password) для оператора?

Можно и через +cipcsgp
Цитата
И точно ли сервер на этом порту принимает соединения извне?

О ! Потому при сомнениях надо попробовать сунуться куда-нибудь на общедоступный сервер. Но для начала хоть ответа дождаться...
demaven
У меня при обмене внутри одного сотового оператора по ТСР ожидание ответа доходит до 5 минут
unKind
Да, проблема была в том, что я использовал карточки одного оператора. Поставив другую все решылось.

Теперь нужно отслежывать состояние подключения. Как ето делать удобно? какие команды использовать?
MKdemiurg
Вывод DCD в "прозрачном" режиме. Проще некуда.
Alt.F4
Столкнулся с похожей проблемой как у автора (sim900 8-ая прошивка):
Код
AT+CGATT=1
OK
AT+CGREG?
+CGREG: 0,1
OK
AT+CIPCSGP=1,"internet.life.com.by"
OK
AT+CSTT
OK
AT+CIICR
OK
AT+CIFSR
109.126.166.74
AT+CIPSTART="TCP","***.***.***.***","80"
OK
Жду минуту, затем
AT+CIPCLOSE
CLOSE OK - т.е. соединение было установлено???
AT+CIPSHUT
SHUT OK
И повторяю все снова.
Даже перезагрузка с отключением питания иногда не помогает...
CONNECT OK не приходит около 1-5 раз, затем все хорошо.
Пытался найти зависимость: звонил, получал/отправлял SMS во время GPRS-передачи, затем заново переподключался. Но зависимости от каких-либо действий не заметил, один раз из двадцати CONNECT OK не приходит...
Что можно придумать?
Спасибо.
MKdemiurg
Кстати тоже вопросик в тему
Зачем использовать вот эти команды?

AT+CSTT
OK
AT+CIICR
OK
AT+CIFSR

Если работает даже так?
AT+CIPCSGP=1,"internet.life.com.by"
OK
AT+CIPSTART="TCP","***.***.***.***","80"
OK
Т.е. только для контроля? APN вводится через AT+CIPCSGP, а AT+CIPSTART поднимает соединение автоматом . Или нет?
Alt.F4
Цитата
Зачем использовать вот эти команды?
AT+CSTT
AT+CIICR
AT+CIFSR
Для инициализации PDP-контекста, запуска GPRS-соединения и получения IP-адреса.

Попробовал выйти из положения поста #9, чудеса прямо какие-то...
Код
AT+CIPSTART="TCP","***.***.***.***","80"
OK                    - не дождались CONNECT OK, но попробуем дальше
AT+CIPSEND
ERROR                - установим соединение еще раз
AT+CIPSTART="TCP","***.***.***.***","80"
ERROR
ALREADY CONNECT        - хм, уже законнектились???
AT+CIPSEND
ERROR                - значит нет...
Что же делать? sad.gif
MKdemiurg
Цитата(Alt.F4 @ Jul 30 2011, 18:12) *
Для инициализации PDP-контекста, запуска GPRS-соединения и получения IP-адреса.

Ну так оно и так неплохо работает в 2 команды вместо 5 !!! Мне казалось что запуском AT+CIPCSGP и AT+CIPSTART все инициализации и подключения автоматом происходят.

По поводу вашей проблемы
А дольше подождать не резон? Попробуйте законектица просто на ya.ru
Кстати а почему вы не устанавливаете AT+CIPMODE ? Или он раньше установлен?
Alt.F4
Цитата
Ну так оно и так неплохо работает в 2 команды вместо 5 !!! Мне казалось что запуском AT+CIPCSGP и AT+CIPSTART все инициализации и подключения автоматом происходят.
SIM900_TCPIP_Application Note_V1.02.pdf
Цитата
По поводу вашей проблемы. А дольше подождать не резон?
Пробовал дольше, CONNECT OK не приходит. Дело 100% в модеме или в оборудовании опсоса, сервер всегда доступен.
Цитата
Кстати а почему вы не устанавливаете AT+CIPMODE ? Или он раньше установлен?
Я использую непрозрачный режим.
ap77
Цитата(Alt.F4 @ Jul 30 2011, 20:41) *
Столкнулся с похожей проблемой как у автора (sim900 8-ая прошивка):
...
Спасибо.

Предлагаю проверять
AT+CIPSTATUS
Alt.F4
Цитата
Предлагаю проверять AT+CIPSTATUS
Проверять можно, только смысл?

Ошибка плавающая, и потестить все довольно сложно, уже полчаса пытаюсь повторить сценарий, но безуспешно...
Может секрет в паузах между ответом модема и следующей командой? Было 100мс, увеличил местами до 200/300мс.
MKdemiurg
Цитата(Alt.F4 @ Jul 30 2011, 19:04) *


Читал !!! Но мне не надо знать свой айпи. А APN я ввожу через AT+CIPCSGP. И сразу запускаю AT+CIPSTART. Работает , уже 2 месяц устройство на тесте стоит с такой последовательностью. На форуме видел люди и так и так подключаются... надо будет у CADILO уточнить.

Цитата
Пробовал дольше, CONNECT OK не приходит. Дело 100% в модеме или в оборудовании опсоса, сервер всегда доступен.


Скорее всего.


Alt.F4
Причина определена:
Если начинать работу с GPRS после прихода SMS, то ответа "CONNECT OK" от модема не дождаться...
Теперь надо определиться как поступать в этом случае.
Одиночная AT+CIPCLOSE не помогает.
Дуэт AT+CIPCLOSE и AT+CIPSHUT помогает, но не всегда с первого раза...
Код
.......
AT+CIPSTART="TCP","***.***.***.***","80"
OK - жду 15сек
AT+CIPCLOSE
CLOSE OK
AT+CIPSTART="TCP","***.***.***.***","80"
OK - жду 15сек
AT+CIPCLOSE
CLOSE OK
AT+CIPSHUT
SHUT OK
AT+CGATT=1
OK
AT+CGREG?
+CGREG: 0,1
OK
AT+CIPCSGP=1,"internet.life.com.by"
OK
AT+CSTT
OK
AT+CIICR
OK
AT+CIFSR
109.126.189.74
AT+CIPSTART="TCP","***.***.***.***","80"
OK - жду 15сек
AT+CIPCLOSE
CLOSE OK
AT+CIPSTART="TCP","***.***.***.***","80"
OK - жду 15сек
AT+CIPCLOSE
CLOSE OK
AT+CIPSHUT
SHUT OK
AT+CGATT=1 OK
AT+CGREG?
+CGREG: 0,1
OK
AT+CIPCSGP=1,"internet.life.com.by"
OK
AT+CSTT
OK
AT+CIICR
OK
AT+CIFSR
178.154.61.19
AT+CIPSTART="TCP","***.***.***.***","80"
OK
CONNECT OK - получен через 1сек

Потестил еще несколько раз:
поспешил я с причиной, все-таки СМС не влияет...
ap77
Цитата(Alt.F4 @ Jul 30 2011, 22:38) *
Проверять можно, только смысл?

Ошибка плавающая, и потестить все довольно сложно, уже полчаса пытаюсь повторить сценарий, но безуспешно...
Может секрет в паузах между ответом модема и следующей командой? Было 100мс, увеличил местами до 200/300мс.

Смысл, в однозначном определении статуса "CONECT OK"
Если после CIPSTATUS возвращается "CONECT OK" - можно отправлять данные.
Если нет, устанавливаем таймаут и опрашиваем статус в цикле, либо до "CONECT OK", либо до таймаута.
После таймаута - сбрасываем соединение (CIPSHUT)
=F8=
Ну во-первых ответ CLOSE OK говорит лишь о том, что соединение было успешно закрыто т.е. перешло в состояние CLOSED, а чтоб проверить в каком состоянии оно находилось CONNECTING или CONNTCTED, как уже говорили, нужно использовать команду AT+CIPSTATUS(естественно до подачи AT+CIPCLOSE).
Во-вторых чтоб не гадать в чем проблема в модуле, сети или в сервере поставьте сим-карту в обычный GSM-модем и попробуйте установить соединение с сервером с компа. Если будут те-же проблемы, что и с модулем - значит дело в сервере или в сети.
Alt.F4
Цитата
Смысл, в однозначном определении статуса "CONECT OK"
Если после CIPSTATUS возвращается "CONECT OK" - можно отправлять данные.
Если нет, устанавливаем таймаут и опрашиваем статус в цикле, либо до "CONECT OK", либо до таймаута.
Когда работает, то сервер отвечает максимум 2сек. Я ждал минуту, смысла в запросе CIPSTATUS'а просто не вижу, если соединение проходит успешно, "CONECT OK" приходит и после AT+CIPSTART, а если появляется этот "глюк", я все равно более 15сек ждать не буду.
Цитата
После таймаута - сбрасываем соединение (CIPSHUT)
В том то и дело, что оно не помогает!!! см. 17пост
Цитата
чтоб не гадать в чем проблема в модуле, сети или в сервере поставьте сим-карту в обычный GSM-модем и попробуйте установить соединение с сервером с компа.
Ошибка плавающая, вчера пол дня считай убил, а сценарий повторился с десяток раз...
Может у кого-то просто было подобное или есть мнение как решить проблему?
Спасибо.
Aurochs
Пауза 15 сек. для CIPSTART - этого мало.
Нужно ожидать ответа в течение 3 минут. За это время должно прийти либо CONNECT OK либо CONNECT FAIL.
Если же вообще ничего не пришло, то это нужно рассматривать уже как аварийную ситуацию (зависание модема, отказ UARTа или еще что-то)
Alt.F4
Цитата
Нужно ожидать ответа в течение 3 минут. За это время должно прийти либо
CONNECT OK либо CONNECT FAIL.
Если считать, что сервер всегда доступен и у модема нет багов в прошивке, то получается по приходу CONNECT FAIL "тормозит" оборудование опсоса.
Тогда почему после переинициализации GPRS ошибка повторяется?
MKdemiurg
Alt.F4

А передёргивание питания убирает этот баг?
Alt.F4
Цитата
А передёргивание питания убирает этот баг?
Пробовал делать рестарт модема с отключением питания, но это не решало проблемы...
MKdemiurg
А смена оператора?
Alt.F4
Попробую сменить оператора. Только потестить получится аж через выходные...
Просто смущает это:
Код
AT+CIPSTART="TCP","***","80"
OK - недождались CONNECT OK , но попробуем установить соединение еще раз
AT+CIPSTART="TCP","***","80"
ЕRROR
ALREADY CONNECT - хм , уже законнектились???
AT+CIPSEND
ЕRRОR - значит нет...
Почему пишет "ALREADY CONNECT"?
Aurochs
Цитата(Alt.F4 @ Aug 1 2011, 09:03) *
Если считать, что сервер всегда доступен и у модема нет багов в прошивке, то получается по приходу CONNECT FAIL "тормозит" оборудование опсоса.
Тогда почему после переинициализации GPRS ошибка повторяется?

В таком случае нужно "брать за вымя" оператора.
MKdemiurg
Гуру sim900 помогите пожалуйста разобраться в паре вопросов по gprs и стеку.

1) Является ли ошибкой использование такой последовательности ? :
22:29:54 AT+CGATT=1....OK..
22:29:56 AT+CGATT?.... //анализ состояния ... запрос 5 раз с интервалом в 2 секунды
22:30:02 AT+CIPMODE=1....OK..
22:30:05 AT+CIPCSGP=1,"www.kyivstar.net","",""....OK..
22:30:11 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..

или же обязательно нужно работать через последовательность ? :
...
AT+CIPMODE
AT+CIPCSGP
AT+CSTT
AT+CIICR
AT+CIFSR
AT+CIPSTART

2)Соответсвенно иногда(раз на 10-20 подключений) вываливается такая штука:
22:32:11.531 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..
22:32:12.093 ..STATE: PDP DEACT....CONNECT FAIL..
Иногда не лечится даже полным перезапуском с отрывом питания. Это оператор или же всётаки надо менять последовательность подключения ?

3) НА что влияет последний параметр AT+CIPCCFG ?
Варяг
Цитата(MKdemiurg @ Aug 8 2011, 10:20) *
22:29:54 AT+CGATT=1....OK..
22:29:56 AT+CGATT?.... //анализ состояния ... запрос 5 раз с интервалом в 2 секунды
22:30:02 AT+CIPMODE=1....OK..
22:30:05 AT+CIPCSGP=1,"www.kyivstar.net","",""....OK..
22:30:11 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..


я, к сожалению не гуру, но именно в такой последовательности я подключался к ya.ru. Теперь подключаюсь по второму варианту.

У меня такой вопрос... Есть два модуля. Один в режиме клиента, другой в режиме сервера. Клиент постоянно передает данные серверу с периодом 15 секунд. В таком режиме сервер (sim900d) принимает все данные без ошибок. Но примерно через 15 минут перестает принимать сигналы напроч, и даже при переподключении как сервера тоже не принимает. Начинает продолжать принимать данные только после сброса питания на модуле. В чем может быть проблема?

И еще второй вопрос. Что выгоднее при передаче коротких сообщении - ТСР соединение или UDP? И верно ли, что в режиме UDP EXTENDED MODE модуль принимает все что ему пошлют, и его не надо настраивать как сервер?
ap77
Цитата(MKdemiurg @ Aug 8 2011, 14:20) *
2)Соответсвенно иногда(раз на 10-20 подключений) вываливается такая штука:
22:32:11.531 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..
22:32:12.093 ..STATE: PDP DEACT....CONNECT FAIL..
Иногда не лечится даже полным перезапуском с отрывом питания. Это оператор или же всётаки надо менять последовательность подключения ?

По 1) тоже пытаюсь так работать
По 2) наблюдаю аналогичное поведение, но если закрывать сессию на сервере, то повторное соединение (со сбросом CIPSHUT) восстанавливает связь.
MKdemiurg
Цитата(ap77 @ Aug 9 2011, 11:31) *
По 1) тоже пытаюсь так работать
По 2) наблюдаю аналогичное поведение, но если закрывать сессию на сервере, то повторное соединение (со сбросом CIPSHUT) восстанавливает связь.


1) я ещё с sim300 такую ветку подключения перенёс.
2) Не понял, а как сервер разорвёт соединение, если он к нему и не подключился? Или имеется ввиду отключение от точки доступа оператора?
ap77
Цитата(MKdemiurg @ Aug 9 2011, 15:43) *
2) Не понял, а как сервер разорвёт соединение, если он к нему и не подключился? Или имеется ввиду отключение от точки доступа оператора?

Нет, имеется ввиду закрытие сессии по инициативе сервера (того, с которым установлено TCP соединение).

У меня сессия после отправки пакета не закрывается, т.е. один раз CIPSTART и много CIPSTATUS+CIPSEND, а когда CIPSTATUS возвращает не CONNECT OK, тогда пытаюсь сделать CIPCLOSE, CIPSHUT (которые не помогают в некоторых случаях).
Но у меня по таймауту, если небыло сообщений, сервер закрывает подключение.. и соответственно, тогда CIPSHUT с повторным подключением к серверу нормально срабатывают.

Это конечно не вариант нормальной работы, но как пища для размышлений )
MKdemiurg
Цитата(ap77 @ Aug 9 2011, 12:34) *
Нет, имеется ввиду закрытие сессии по инициативе сервера (того, с которым установлено TCP соединение).

У меня сессия после отправки пакета не закрывается, т.е. один раз CIPSTART и много CIPSTATUS+CIPSEND, а когда CIPSTATUS возвращает не CONNECT OK, тогда пытаюсь сделать CIPCLOSE, CIPSHUT (которые не помогают в некоторых случаях).
Но у меня по таймауту, если небыло сообщений, сервер закрывает подключение.. и соответственно, тогда CIPSHUT с повторным подключением к серверу нормально срабатывают.

Это конечно не вариант нормальной работы, но как пища для размышлений )


Нет, у меня при подключении к серверу CIPCLOSE CIPSHUT срабатывает всегда.
А когда при CIPSTART вывыливается ..STATE: PDP DEACT....CONNECT FAIL..( причём сразуже после подачи cipstart) - просто перегружаю модем ( PDP уже отключён, а к серверу не подсоеденилось). Но проблема в том , что ресет тоже не всегда срабатывает и ..STATE: PDP DEACT.. вываливается до 3х раз подряд.

PS перешёл на "длинный" вариант - буду тестить.


ap77
Цитата(MKdemiurg @ Aug 9 2011, 16:59) *
Нет, у меня при подключении к серверу CIPCLOSE CIPSHUT срабатывает всегда.
А когда при CIPSTART вывыливается ..STATE: PDP DEACT....CONNECT FAIL..( причём сразуже после подачи cipstart) - просто перегружаю модем ( PDP уже отключён, а к серверу не подсоеденилось). Но проблема в том , что ресет тоже не всегда срабатывает и ..STATE: PDP DEACT.. вываливается до 3х раз подряд.

PS перешёл на "длинный" вариант - буду тестить.

Да, почитал свое сообщение, изложил неточно. т.е. ситуация как и у вас.. в конечном счете. CIPSHUT тоже типа срабатывает всегда, имелось ввиду - возвращает SHUT OK, но при этом статус в IP INITIAL не устанавливается. И вот тогда при попытке повторного CIPSTART тоже возвращает STATE: PDP DEACT....CONNECT FAIL. ну и далее.. через некоторое время, сервер закрывает сессию, у меня модем присылает CLOSED и жизнь налаживается... как-то так.

...с интересом жду результатов тестирования "длинного варианта"
Варяг
Цитата(Aurochs @ Jul 31 2011, 22:35) *
Пауза 15 сек. для CIPSTART - этого мало.
Нужно ожидать ответа в течение 3 минут. За это время должно прийти либо CONNECT OK либо CONNECT FAIL.
Если же вообще ничего не пришло, то это нужно рассматривать уже как аварийную ситуацию (зависание модема, отказ UARTа или еще что-то)


У меня приборы в одной VPN сети Билайна. Если обе подключились к GPRS нормально, то CONNECT OK приходит за 1,5-4 секунды, не больше. Когда ничего не приходит в ответ на CIPSTART то это 100% завис сервер, по крайней мере у меня. При рестарте сервера, он начинает опять принимать сообщения.

Цитата(Варяг @ Aug 9 2011, 11:13) *
У меня такой вопрос... Есть два модуля. Один в режиме клиента, другой в режиме сервера. Клиент постоянно передает данные серверу с периодом 15 секунд. В таком режиме сервер (sim900d) принимает все данные без ошибок. Но примерно через 15 минут перестает принимать сигналы напроч, и даже при переподключении как сервера тоже не принимает. Начинает продолжать принимать данные только после сброса питания на модуле. В чем может быть проблема?

И еще второй вопрос. Что выгоднее при передаче коротких сообщении - ТСР соединение или UDP? И верно ли, что в режиме UDP EXTENDED MODE модуль принимает все что ему пошлют, и его не надо настраивать как сервер?
чем отличаютсо TCP oT UDP?


Кто-нибудь ответить?
MKdemiurg
ap77
Цитата
Да, почитал свое сообщение, изложил неточно. т.е. ситуация как и у вас.. в конечном счете. CIPSHUT тоже типа срабатывает всегда, имелось ввиду - возвращает SHUT OK, но при этом статус в IP INITIAL не устанавливается. И вот тогда при попытке повторного CIPSTART тоже возвращает STATE: PDP DEACT....CONNECT FAIL. ну и далее.. через некоторое время, сервер закрывает сессию, у меня модем присылает CLOSED и жизнь налаживается... как-то так.

...с интересом жду результатов тестирования "длинного варианта"


Нашёл я в чём загвоздка и разница 2х веток, всё оказалось банально.


22:30:05 AT+CIPCSGP=1,"www.kyivstar.net","",""....OK.. // "ОК" приходит с разницей меньше 200мс.
22:30:08 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..

Вообщем пока между этими командами стояла задержка в 5 секунд - всё работало. Мне показалось долго и я урезал до 2 секунд.

В свяске же :

13:42:35.765 AT+CIICR..
13:42:40.453 ..OK..
Видно что GPRS подымается около 5 секунд(может и дольше), в общем всё встало на свои места с ожидаем OK на команду CIICR. Вот подумываю всё равно проверять CIPSTATUS.

вообщем "курить мануалы" и не жмотится на задержки в критических местах есть очень разумная вещь biggrin.gif

ЗЫ Хотя буду ждать, может всётаки не в этом дело...
Варяг
Цитата(MKdemiurg @ Aug 9 2011, 14:04) *
ap77


Нашёл я в чём загвоздка и разница 2х веток, всё оказалось банально.


22:30:05 AT+CIPCSGP=1,"www.kyivstar.net","",""....OK.. // "ОК" приходит с разницей меньше 200мс.
22:30:08 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..

Вообщем пока между этими командами стояла задержка в 5 секунд - всё работало. Мне показалось долго и я урезал до 2 секунд.

В свяске же :

13:42:35.765 AT+CIICR..
13:42:40.453 ..OK..
Видно что GPRS подымается около 5 секунд(может и дольше), в общем всё встало на свои места с ожидаем OK на команду CIICR. Хотя вот подумываю всё равно проверять CIPSTATUS.

вообщем "курить мануалы" и не жмотится на задержки в критических местах есть очень разумная вещь biggrin.gif

ЗЫ Хотя буду ждать, может всётаки не в этом дело...


На AT+CIICR ОК придет в любом случае, но надо иногда долго ждать. У меня тоже стоит большая задержка после AT+CIICR, но иногда её не хватает, и модуль не хавает последующие команды. Тогда есть Вариант перед каждым CIPSTART давать AT+CIFSR, потому что без AT+CIFSR не дается айпишник и соответственно не получается передать данные.
MKdemiurg
Цитата(Варяг @ Aug 9 2011, 14:11) *
На AT+CIICR ОК придет в любом случае, но надо иногда долго ждать. У меня тоже стоит большая задержка после AT+CIICR, но иногда её не хватает, и модуль не хавает последующие команды. Тогда есть Вариант перед каждым CIPSTART давать AT+CIFSR, потому что без AT+CIFSR не дается айпишник и соответственно не получается передать данные.


Я завёл таймер на полторы минуты. Если ОК не приходит таймер перегружает модем.
Варяг
Цитата(MKdemiurg @ Aug 9 2011, 14:14) *
Я завёл таймер на полторы минуты. Если ОК не приходит таймер перегружает модем.


Сейчас стабильно укладываюсь в пять секунд. Раньше не укладывался, потому что антенна хреновая была и не всегда даже GPRS подрубался.
MKdemiurg
К вопросу о времени.

14:30:01.015 AT+CIICR..
14:30:13.312 ..OK..

Оператор MTS-UA. Такие вот пироги


ap77
Цитата(MKdemiurg @ Aug 9 2011, 18:04) *
Нашёл я в чём загвоздка и разница 2х веток, всё оказалось банально.


22:30:05 AT+CIPCSGP=1,"www.kyivstar.net","",""....OK.. // "ОК" приходит с разницей меньше 200мс.
22:30:08 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..

Вообщем пока между этими командами стояла задержка в 5 секунд - всё работало. Мне показалось долго и я урезал до 2 секунд.

В свяске же :

13:42:35.765 AT+CIICR..
13:42:40.453 ..OK..
Видно что GPRS подымается около 5 секунд(может и дольше), в общем всё встало на свои места с ожидаем OK на команду CIICR. Вот подумываю всё равно проверять CIPSTATUS.

вообщем "курить мануалы" и не жмотится на задержки в критических местах есть очень разумная вещь biggrin.gif

ЗЫ Хотя буду ждать, может всётаки не в этом дело...

Мне не понятно другое,

1) у меня задержек никаких нет вообще. работаю по получению ответа или таймауту. Т.е. предполагаю, что когда команда присылает ответ (OK или ERROR + что-то еще по мануалу) можно двигаться дальше. Это не всегда так? Не для всех команд?

2) в мануале написано, что CIPCSGP+CIPSTART можно подавать, когда статус возвращает IP INITIAL. Именно так и делаю... и все-же иногда возвращается PDP:DEAC... вот это тоже странно... только что статус вернул IP INITIAL, а при старте уже неактивный контекст?

А задержки, они вообще для чего? если у нас диалог...
MKdemiurg
Цитата(ap77 @ Aug 10 2011, 08:02) *
Мне не понятно другое,

1) у меня задержек никаких нет вообще. работаю по получению ответа или таймауту. Т.е. предполагаю, что когда команда присылает ответ (OK или ERROR + что-то еще по мануалу) можно двигаться дальше. Это не всегда так? Не для всех команд?

2) в мануале написано, что CIPCSGP+CIPSTART можно подавать, когда статус возвращает IP INITIAL. Именно так и делаю... и все-же иногда возвращается PDP:DEAC... вот это тоже странно... только что статус вернул IP INITIAL, а при старте уже неактивный контекст?

А задержки, они вообще для чего? если у нас диалог...


1) Я также работаю. ОК получил - двигаем дальше. Только я команды отправляю с интервалом в 0.5-1 сек. Так вот когда у меня стояла задержка между cipcsgp и cipstart в 5 секунд( при 0.5-1 секунды выбивало PDP:DEAC всегда ) - всё было пучком -> взял и урезал до 2 секунд - начало выбивать 50\50. Это мои наблюдения. По AT+CIPSTATUS не проверял.
2)теперь перешёл на схему
10:52:46.562 AT+CGATT=1....OK..
10:52:48.609 AT+CGATT?....+CGATT: 1....OK..
10:52:54.343 AT+CIPMODE=1....OK..
10:52:56.078 AT+CIPCSGP=1,"internet","",""....OK..
10:52:57.109 AT+CSNS=4....OK..
10:52:59.171 AT+CSTT="internet","",""....OK..
10:53:00.203 AT+CIICR..
10:53:03.015 ..OK..
10:53:04.055 AT+CIFSR....xxx.xxx.xxx.xxx..
10:53:05.031 AT+CIPSTART="TCP","xxx.xxx.xxx.xxx","5678"....OK..

5 макетов уже сутки передают без PDP:DEAC. Вот думаю ещё ввести проверки по CIPSTATUS.
ap77
Цитата(MKdemiurg @ Aug 10 2011, 15:10) *
5 макетов уже сутки передают без PDP:DEAC. Вот думаю ещё ввести проверки по CIPSTATUS.

полезная информация, спасибо!

еще бы в причинах разобраться )
некомфортно, когда только методом тыка подобрано
rx3apf
Цитата(ap77 @ Aug 10 2011, 08:02) *
2) в мануале написано, что CIPCSGP+CIPSTART можно подавать, когда статус возвращает IP INITIAL. Именно так и делаю... и все-же иногда возвращается PDP:DEAC... вот это тоже странно... только что статус вернул IP INITIAL, а при старте уже неактивный контекст?

Вот если дать +CIPSHUT и тут же +CIPSTART - то гарантированно DEACT. И статус проверяю - "IP INITIAL", но без задержки гарантированно вылетает. Вроде в восьмой версии пофиксено - сейчас возобновляю разборки со своим проектом, так эти проблемы при рестарте сессии уже замучали. Причем и с задержками тоже не гарантированно - при PDP DEACT выдаю +CIPSHUT, через минуту проверяю статус и делаю старт - и опять то же самое. Двести раз - и все одно. Перерегистрация - и то же самое бывает. Правда, МТСовский GPRS у меня тут работает отвратительно... Перешью, поиграюсь...
ap77
Цитата(rx3apf @ Aug 10 2011, 23:34) *
Вот если дать +CIPSHUT и тут же +CIPSTART - то гарантированно DEACT. И статус проверяю - "IP INITIAL", но без задержки гарантированно вылетает. Вроде в восьмой версии пофиксено - сейчас возобновляю разборки со своим проектом, так эти проблемы при рестарте сессии уже замучали. Причем и с задержками тоже не гарантированно - при PDP DEACT выдаю +CIPSHUT, через минуту проверяю статус и делаю старт - и опять то же самое. Двести раз - и все одно. Перерегистрация - и то же самое бывает. Правда, МТСовский GPRS у меня тут работает отвратительно... Перешью, поиграюсь...

У меня EAT, второй версии... тоже самое. Поставлю третью версию, может полегчает
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.