Доброго времени суток! Разрабатываю терминал системы мониторинга транспорта. Для передачи данных на сервер использую 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. Есть предположение, что перед очередной попыткой активирования модуля, было неверно произведено его деактивирование и при последующих попытках сеть просто "банит" попытки повторного входа в сеть "двойника". Хотелось бы услышать мнение профессионалов.
Сообщение отредактировал BAG/ULG - Jan 20 2015, 19:03
|