У меня проблема с закрытием UDP соединения по GPRS. Привожу отладочные сообщения устройства с комментариями:
AT
OK
AT+CREG?
+CREG: 0,1
OK
AT+CGATT?
+CGATT: 1
OK
GSM
AT+CIPMODE=1
OK
// Последний 0, чтобы по +++ не переходил в режим команд. Вдруг, такая комбинация данных встретиться.
AT+CIPCCFG=5,3,256,0
OK
// переход в режим команд осуществляется сбросом линии DTR
AT&D1
OK
// XXX.XXX.XXX.XXX - мой статический IP
AT+CIPSTART="UDP","XXX.XXX.XXX.XXX","5000"
OK
CONNECT
Дальше идет обмен данными с XXX.XXX.XXX.XXX, все хорошо
Дальше я делаю следующие действия с сигналам DTR:
- Сбрасываю DTR
- Жду 2 секунды
- Устанавливаю DTR
- Жду 2 секунды
- Работаю дальше
А вот дальше возможны следующие варианты:
1.
AT+CIPCLOSE
CLOSE OK
2.
// Идет какой-то мусор и команда закрытия выдает ошибку, но следующая проходит нормально
xxxxxxxxxjU5
AT+CIPCLOSE
ERROR
AT+CIPCLOSE
CLOSE OK
3. Самый плохой вариант, встретился один раз. Модуль перестает реагировать на любые AT команды и, хуже всего, не перезагружается c помощью линии PWRKEY (17).
В первом и втром случае я выхожу на команду
AT+CIPSTART="UDP","XXX.XXX.XXX.XXX","5001"
OK
CONNECT
и так далее, пока не встретиться случай 3. Сейчас пытаюсь поймать 3 вариант еще раз. Но второй случай тоже не нравится.
Что я делаю не так?