Доброго времени суток! Разрабатываю терминал системы мониторинга транспорта. Для передачи данных на сервер использую SIM900. Столкнулся с проблемой, что иногда SIM900 не может "поднять" GPRS-соединение с сервером. Предпологаю, что использую не совсем верные процедуры открытия и закрытия GPRS-сессии. Использую следующие алгоритмы:
Активирование SIM900 и "подъем" GPRS-сессии
----------------------------------------------
1) Если STATUS = 0 (модуль выключен), то переход к п. 7
2) GSM POWERKEY = 0
3) Пауза 1,5 с
4) GSM POWERKEY = 1
5) Ждем, установления STATUS = 0
6) Пауза 1 с
7) Ждем, пока истечет таймаут между попытками активирования SIM900 (1 минута)
8) GSM POWERKEY = 0
9) Пауза 1,5 с
10) GSM POWERKEY = 1
11) Пауза 5 с (чтобы успела придти строка "IIII")
12) Посылаем команду "AT+CREG=0"
13) Ждем ответ "OK"
14) Посылаем команду "ATE0"
15) Ждем ответ "OK"
16) Посылаем команду "AT+CSCLK=0"
17) Ждем ответ "OK"
18) Пауза 1 с
19) Посылаем команду "AT+CREG?"
20) Если ответ не "+CREG: 0,1", то переход к п. 18
21) Посылаем команду "AT+CGATT=1"
22) Ждем ответ "OK"
23) Пауза 1 с
24) Посылаем команду "AT+CSTT=APN, USERNAME, PASSWORD"
25) Ждем ответ "OK"
26) Пауза 1 с
27) Посылаем команду "AT+CIICR"
28) Ждем ответ "OK" (здесь часто зависает)
29) Пауза 1 с
30) Посылаем команду "AT+CIFSR"
31) Если от SIM900 пришел ответ "\r\n\r\n IP-адрес \r\n", то активирование SIM900 успешно
Деактивирование SIM900
--------------------------
1) Если STATUS = 0 (модуль выключен), то переход к п.
2) GSM POWERKEY = 0
3) Пауза 1,5 с
4) GSM POWERKEY = 1
5) Ждем, установления STATUS = 0
6) Деактивирование SIM900 успешно
Так вот, при таком алгоритме активирования, иногда происходит зависание на п 28. Есть предположение, что перед очередной попыткой активирования модуля, было неверно произведено его деактивирование и при последующих попытках сеть просто "банит" попытки повторного входа в сеть "двойника". Хотелось бы услышать мнение профессионалов.