|
SIM900 - странное поведение +CIPCLOSE... |
|
|
|
Aug 20 2011, 20:00
|
Гуру
     
Группа: Участник
Сообщений: 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" ? При каких условиях это происходит и как с этим бороться ?
|
|
|
|
|
 |
Ответов
|
Jan 9 2013, 09:54
|
Частый гость
 
Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838

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

Евгений
  
Группа: Участник
Сообщений: 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
--------------------
|
|
|
|
Сообщений в этой теме
rx3apf SIM900 - странное поведение +CIPCLOSE... Aug 20 2011, 20:00 butthead2 А так?
AT+CIPCLOSE=1 Aug 20 2011, 20:17 rx3apf Цитата(butthead2 @ Aug 21 2011, 00:17) А ... Aug 20 2011, 20:29  Варяг У меня, обычно, даже если соединение не установлен... Aug 22 2011, 02:51   rx3apf Цитата(Варяг @ Aug 22 2011, 06:51) У меня... Aug 22 2011, 06:20 CADiLO Можно чуть точнее? Вы переключились для работы в H... Aug 22 2011, 06:33 rx3apf Цитата(CADiLO @ Aug 22 2011, 10:33) Можно... Aug 22 2011, 06:43 zebrox Такая проблемка.
Непрозрачный режим.
К серверу п... Dec 29 2012, 14:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|