реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SIM900 - странное поведение +CIPCLOSE...
rx3apf
сообщение Aug 20 2011, 20:00
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Что-то я никак не соображу - запускаю TCP-соединение (+CIPSTART), разрываю, не дождавшись (+CIPCLOSE) - нормально. Дождался соединения, разрываю - тоже нормально. А вот когда сделал соединение, послал запрос http get, получил файл, пытаюсь сделать +CIPCLOSE - получаю "ERROR". И раз, и два (с интервалом в секунду) - все "ERROR". Потом уже получаю закрытие по инициативе сервера, и статус меняется на "TCP CLOSED". Но в тот момент, когда я даю +CIPCLOSE, статус-то был "CONNECT OK" ! И после получения "ERROR" он таковым оставался, и на второй попытке то же самое. Версия прошивки была 6, сейчас 9 - поведение одинаковое. Как-то раньше я на этот момент внимания не обращал (и вообще пользовался +CIPSHUT), а тут вдруг обнаружил. И как быть ? Ждать разрыва от сервера или все ж пытаться сделать +CIPCLOSE ? +CIPSHUT больше без крайней нужды пользоваться не хочу...

Короче, вопрос звучит так - почему при статусе "CONNECT OK" на команду +CIPCLOSE приходит "ERROR" ? При каких условиях это происходит и как с этим бороться ?
Go to the top of the page
 
+Quote Post
butthead2
сообщение Aug 20 2011, 20:17
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 22-07-09
Пользователь №: 51 470



А так?
AT+CIPCLOSE=1
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 20 2011, 20:29
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(butthead2 @ Aug 21 2011, 00:17) *
А так?
AT+CIPCLOSE=1

Увы, изофаллически...
Go to the top of the page
 
+Quote Post
Варяг
сообщение Aug 22 2011, 02:51
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 4-04-11
Из: челябинск
Пользователь №: 64 111



У меня, обычно, даже если соединение не установлено (не было "коннект ОК"), at+cipclose=1 всегда дает положительное "ОК". Может перед ним слишком малая задержка (или вообще её нет) ?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 22 2011, 06:20
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Варяг @ Aug 22 2011, 06:51) *
У меня, обычно, даже если соединение не установлено (не было "коннект ОК"), at+cipclose=1 всегда дает положительное "ОК". Может перед ним слишком малая задержка (или вообще её нет) ?

Если так (до установления соединения) - то у меня тоже нормально. И после установления соединения тоже нормально. Говорю же - описанная картина имеет место быть при установлении соединения и успешном приеме файла, когда сервер уже начинает закрывать соединение (предположительно). Но статус-то "CONNECT OK", поэтому такая реакция на +CIPCLOSE совершенно непонятна. Причем этот ответ приходит мгновенно, без какой-либо задержки, т.е. все локально.
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Aug 22 2011, 06:33
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Можно чуть точнее? Вы переключились для работы в HTTP?

Тогда скорее всего сначала закрыть сессию AT+HTTPTERM


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 22 2011, 06:43
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(CADiLO @ Aug 22 2011, 10:33) *
Можно чуть точнее? Вы переключились для работы в HTTP?


Нет, говорю же - сессия запущена через +CIPSTART. Запрос "HTTP GET" я передаю сам, файл принимаю сам. Описанная картина происходит в тот момент, когда я принял файл и сервер, вероятно, уже начал закрывать соединение. Просто я не на 100% уверен, что сервер его закроет, и пытаюсь сделать это самостоятельно. И при статусе "CONNECT OK" получаю, тем не менее, ошибку на +CIPCLOSE. Я бы понял, если бы было "TCP CLOSING" - так ведь нет ! И даже после ошибки он тот же.
Go to the top of the page
 
+Quote Post
zebrox
сообщение Dec 29 2012, 14:43
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838



Такая проблемка.

Непрозрачный режим.
К серверу подключаюсь с помоющью AT+CIPSTART=ТСР. Все хорошо, данные передаются.

Иногда после отправки AT+CIPCLOSE, юарт сима перестает реагировать на внешние команды.
Как от процессора, так и от копьютера.
И эхом их тоже не выдает.

При этом URC сим продолжает сообщать.

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

Кто-нибудь сталкивался с такой проблемой?
Revision:1137B08SIM900M64_ST_DTMF_JD_MMS

Go to the top of the page
 
+Quote Post
RadikX
сообщение Jan 9 2013, 06:51
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 13-04-11
Из: Суровый Челябинск
Пользователь №: 64 337



Аналогичная ситуация заметил тоже бывает. Сейчас просто долблю команду закрытия до 5-ти раз, при незакрытии соединения закрываю сессию. Возникает очень редко, но неприятно.
Go to the top of the page
 
+Quote Post
zebrox
сообщение Jan 9 2013, 09:54
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838



Для себя выход нашел в передаче AT+CIPCLOSE=1, + таймер, 200 сек, на получение ОК либо ERROR от сима, если он истекает, перезапускаю сим.
Еще заметил, что иногда на CGATT=1, сим проглатывает ответ, на какое-то время, и выдает его только после отправки следущей команды (в моем случае, это начало процедуры отключения, т.к. не получен ОК на CGATT)

А вообще да, неприянтно, но жить можно.
Go to the top of the page
 
+Quote Post
Цырен.
сообщение Jan 10 2013, 08:52
Сообщение #11


Евгений
***

Группа: Участник
Сообщений: 341
Регистрация: 13-10-11
Пользователь №: 67 706



Цитата(zebrox @ Jan 9 2013, 13:54) *
Для себя выход нашел в передаче AT+CIPCLOSE=1, + таймер, 200 сек, на получение ОК либо ERROR от сима, если он истекает, перезапускаю сим.
Еще заметил, что иногда на CGATT=1, сим проглатывает ответ, на какое-то время, и выдает его только после отправки следущей команды (в моем случае, это начало процедуры отключения, т.к. не получен ОК на CGATT)

А вообще да, неприянтно, но жить можно.


Господа, поясню чуток.
CIPCLOSE(обычный) - команда с подтверждением. Т.е. модуль говорит серверу "закрываемся", сервер подтверждает закрытие, модуль подтверждает что принял подтверждение. Таймаут закладывайте 2 минуты. Если надо закрыть, чтобы модуль свой стек сбросил в начальное положение без участия сервера, используйте быстрое закрытие CIPCLOSE=1.

"CGATT=1" подавать просто на пустом месте нельзя. Сначала проверьте его текущее состояние и если не "1", то задавайте CGATT=1.

Небольшой тренинг вам в помощь - Прикрепленный файл  SIM900_Training_TCPIP.ppt ( 1.09 мегабайт ) Кол-во скачиваний: 1636
.

Сообщение отредактировал Цырен. - Jan 10 2013, 08:52


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 20:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01439 секунд с 7
ELECTRONIX ©2004-2016