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

Передача данных по TCP, не могу понять

По 1) тоже пытаюсь так работать

По 2) наблюдаю аналогичное поведение, но если закрывать сессию на сервере, то повторное соединение (со сбросом CIPSHUT) восстанавливает связь.

 

1) я ещё с sim300 такую ветку подключения перенёс.

2) Не понял, а как сервер разорвёт соединение, если он к нему и не подключился? Или имеется ввиду отключение от точки доступа оператора?

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


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

2) Не понял, а как сервер разорвёт соединение, если он к нему и не подключился? Или имеется ввиду отключение от точки доступа оператора?

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

 

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

Но у меня по таймауту, если небыло сообщений, сервер закрывает подключение.. и соответственно, тогда CIPSHUT с повторным подключением к серверу нормально срабатывают.

 

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

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


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

Нет, имеется ввиду закрытие сессии по инициативе сервера (того, с которым установлено 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 перешёл на "длинный" вариант - буду тестить.

 

 

 

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


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

Нет, у меня при подключении к серверу 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 и жизнь налаживается... как-то так.

 

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

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


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

Пауза 15 сек. для CIPSTART - этого мало.

Нужно ожидать ответа в течение 3 минут. За это время должно прийти либо CONNECT OK либо CONNECT FAIL.

Если же вообще ничего не пришло, то это нужно рассматривать уже как аварийную ситуацию (зависание модема, отказ UARTа или еще что-то)

 

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

 

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

 

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

чем отличаютсо TCP oT UDP?

 

Кто-нибудь ответить?

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


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

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:

 

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

Изменено пользователем MKdemiurg

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


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

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:

 

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

 

На AT+CIICR ОК придет в любом случае, но надо иногда долго ждать. У меня тоже стоит большая задержка после AT+CIICR, но иногда её не хватает, и модуль не хавает последующие команды. Тогда есть Вариант перед каждым CIPSTART давать AT+CIFSR, потому что без AT+CIFSR не дается айпишник и соответственно не получается передать данные.

 

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


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

На AT+CIICR ОК придет в любом случае, но надо иногда долго ждать. У меня тоже стоит большая задержка после AT+CIICR, но иногда её не хватает, и модуль не хавает последующие команды. Тогда есть Вариант перед каждым CIPSTART давать AT+CIFSR, потому что без AT+CIFSR не дается айпишник и соответственно не получается передать данные.

 

Я завёл таймер на полторы минуты. Если ОК не приходит таймер перегружает модем.

 

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


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

Я завёл таймер на полторы минуты. Если ОК не приходит таймер перегружает модем.

 

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

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


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

К вопросу о времени.

 

14:30:01.015 AT+CIICR..

14:30:13.312 ..OK..

 

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

 

 

 

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


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

Нашёл я в чём загвоздка и разница 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:

 

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

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

 

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

 

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

 

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

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


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

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

 

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.

Изменено пользователем MKdemiurg

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


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

5 макетов уже сутки передают без PDP:DEAC. Вот думаю ещё ввести проверки по CIPSTATUS.

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

 

еще бы в причинах разобраться )

некомфортно, когда только методом тыка подобрано

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


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

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

Вот если дать +CIPSHUT и тут же +CIPSTART - то гарантированно DEACT. И статус проверяю - "IP INITIAL", но без задержки гарантированно вылетает. Вроде в восьмой версии пофиксено - сейчас возобновляю разборки со своим проектом, так эти проблемы при рестарте сессии уже замучали. Причем и с задержками тоже не гарантированно - при PDP DEACT выдаю +CIPSHUT, через минуту проверяю статус и делаю старт - и опять то же самое. Двести раз - и все одно. Перерегистрация - и то же самое бывает. Правда, МТСовский GPRS у меня тут работает отвратительно... Перешью, поиграюсь...

 

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


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

Вот если дать +CIPSHUT и тут же +CIPSTART - то гарантированно DEACT. И статус проверяю - "IP INITIAL", но без задержки гарантированно вылетает. Вроде в восьмой версии пофиксено - сейчас возобновляю разборки со своим проектом, так эти проблемы при рестарте сессии уже замучали. Причем и с задержками тоже не гарантированно - при PDP DEACT выдаю +CIPSHUT, через минуту проверяю статус и делаю старт - и опять то же самое. Двести раз - и все одно. Перерегистрация - и то же самое бывает. Правда, МТСовский GPRS у меня тут работает отвратительно... Перешью, поиграюсь...

У меня EAT, второй версии... тоже самое. Поставлю третью версию, может полегчает

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


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

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

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

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

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

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

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

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

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

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