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

 
 
> Краткий курс по TCP/IP + Новый баг SIM300C (прошивка 12).
david_off
сообщение Oct 21 2008, 20:12
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



По известному алгоритму установления TCP/IP соединения, сначала надо произвести 3 чудо команды
1) AT+CSTT="WWW.UMC.UA","MTS","MTS" - задать APN, пользователя и пароль
2) at+CIICR - поднять соедиение
3) AT+CIFSR - получить статус.
потом можно поднимать сервер или соединение...
Перед первой командой надо бы убедиться, что AT+CIPSTATUS выдаёт IP INITIAL (начальное состояние). Ещё не плохо бы убедится, что GPRS сервис подлючён. Для этого можно узнать текущее состояние при помощи AT+CGATT?, и если ответит AT+CGATT=0, то подключить сервис командой AT+CGATT=1. Подключение может быть с задержкой.

Так вот, решил я проверить правильность реализации в контроллере АТ комманд, поднимающие TCP/IP соединение. Перед вызывом чудо команд, проверяю состояние AT+CIPSTATUS, если оно не равно IP INITIAL, то провожу деактивацию контекста (AT+CIPSHUT), что должно гарантировано вернуть состояние IP INITIAL и потом смело посылаю чудо команды.
Алгоритм обработки комманд устроен так, что следующая не посылается, пока не получен ответ на предыдущую.

Так вот, после суток биения головой об монитор, нахожу такую закономерность: если не дать модулю постоять после получения ответа SHUT OK на команду AT+CIPSHUT, то модуль сходит сума.

Вот кусок беседы с модулем:

//Проверяем состояние модуля
AT+CIPSTATUS
>>OK
>>STATE: IP INITIAL

//устанавливием параметры GPRS подключения
AT+CSTT="WWW.UMC.UA","MTS","MTS"
>>OK

//Проверяем состояние модуля
AT+CIPSTATUS
>>OK
>>STATE: IP START

//поднимаем GPRS подключение
at+CIICR
>>OK

//Проверяем состояние модуля
AT+CIPSTATUS
>>OK
>>STATE: IP GPRSACT

//получаем ip-адерес
AT+CIFSR
>>88.214.69.76

//Проверяем состояние модуля
AT+CIPSTATUS
>>OK
>>STATE: IP STATUS


//теперь сессия готова к использования, что бы попробывать поднять её ещё раз, надо деативировать
//контекст, что приведёт модуль в начальное состояние. Для этого используем команду +CIPSHUT
AT+CIPSHUT
>>SHUT OK

если сейчас, после сообщения "SHUT OK", не сделать паузу хотя бы 1 сек, то в 90% будет вот что

AT+CSTT="WWW.UMC.UA","MTS","MTS"
--OK
AT+CIICR
+PDP: DEACT <- Какого !(,!,:? вылазит это сообщение? Ведь вроде получили, что "SHUT OK", Видно модуль хоть и выдал сообщение, но деактивация контекста не была произведена.

PS: Постил такое же сообщение на другом форуме, один человек сказал, что вообще все команды, которые я использовал - тормозят, после всех нужно ждать. Спорить с ним не стал.
У себя пробывал выливать команды CSTT, CIICR, CIFSR даже не дожидаясь между ними прихода эха и ответа. Ошибки небыло, конечно если до этого состояние было IP INITIAL.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GP_
сообщение Oct 22 2008, 06:12
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 30-07-07
Пользователь №: 29 450



Спорить необходимо, иначе какой смысл в форумах.


Кстати, если Вы оспариваете мнение, высказанное в одном форуме, в другом форуме, справедливей приводить цитату, а не пересказывать своими словами.java script:emoticon(':(', 'smid_1')

"Автор: GP
Дата: 21.10.08 08:50:19
Я пришел к выводу, что после любой из перечисленных команд нужно дать модулю подумать, несмотря на то, что он сразу отвечает. Например, после AT+CSTT= недостаточно получить ОК, а нужно чтобы на CIPSTATUS отвечал IP START и только потом CIICR. Кстати перед AT+CSTT= обязательно проверить AT+CGATT? и только если AT+CGATT=1, то дальше по алгоритму. Attach to GPRS service происходит с некоторой задержкой."


И вопрос в том форуме отличался. Между командами настройки не было CIPSTATUS.
Go to the top of the page
 
+Quote Post
david_off
сообщение Oct 22 2008, 21:00
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 37
Регистрация: 15-10-08
Из: Одесса, Украина
Пользователь №: 40 978



Цитата(GP_ @ Oct 22 2008, 09:12) *
Спорить необходимо, иначе какой смысл в форумах.
Кстати, если Вы оспариваете мнение, высказанное в одном форуме, в другом форуме, справедливей приводить цитату, а не пересказывать своими словами.java script:emoticon(':(', 'smid_1')

"Автор: GP
Дата: 21.10.08 08:50:19
Я пришел к выводу, что после любой из перечисленных команд нужно дать модулю подумать, несмотря на то, что он сразу отвечает. Например, после AT+CSTT= недостаточно получить ОК, а нужно чтобы на CIPSTATUS отвечал IP START и только потом CIICR. Кстати перед AT+CSTT= обязательно проверить AT+CGATT? и только если AT+CGATT=1, то дальше по алгоритму. Attach to GPRS service происходит с некоторой задержкой."
И вопрос в том форуме отличался. Между командами настройки не было CIPSTATUS.


Конечно извеняюсь, что цитату исковеркал, но смысл то не изменил. Спорить не стал, потому что ваше мнение может быть 100% правильным, но для другого модема. Для своего же модема, уже говорил, мнение не справедливо. А по поводу того, что появились слегка изменения в тексте, то это только для того, что новичкам, которые первый раз по моему посту попробуют поднять стек было понятней. Команду AT+CGATT действительно лучше проверять. Просто забыл про неё, хотя у меня в программе выше она использовалась. Изначально текст, который именно вы читали, не соделржал команд считывания статуса (первый вариант такой, как у меня в программе).
Go to the top of the page
 
+Quote Post



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

 


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


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