Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Модем<>ftp-сервер: время ожидания ответа на AT-команды, число повторов при ошибке...
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
bvn123
Здравствуйте,

управляемый микроконтроллером модуль SIM900D передает данные на ftp-сервер,
для инициализации выполняется более десятка AT-команд.
на большинство команд ответ "OK" приходит быстро (от модуля),
три ответа - с задержкой в нескорлько секунд (команды-время ожидания ответа в конце)
иногда ответ с первого раза не приходит.

Подскажите, где посмотреть рекомендации
- по выбору времени ожидания ответа на отдельные AT-команды (используемые команды ниже)
- по выбору числа повторов при отсутствии ответа в течение выбранного времени
- к какой команде возвращаться при сообщении "ERROR" или лучше дернуть PowerKey SIM900 и повторить всю последовательность
- связано ли время ожидания отваета с параметром, получаемым при запросе качества сигнала (может, например, при параметре ниже 18 не стоит и передавать на ftp)
- если ответ на передачу положительный, велика ли вероятность ошибки в созданном на ftp-сервере файле (интересуют не цифры, а практический опыт, к примеру, передавали с параметром качества сигнала 10, были ошибки, индицировались ли ошибки в ответе, полученном от SIM900)

Или каждый все это нарабатывает опытным путем?

Ниже последовательность интересующих команд,
после большинства ответ приходит быстро, 2-секундного ожидания хватает с избытком,
для 3-х команд с более длительным ожиданием ответа (вероятно, от оператора и от ftp-сервера) время указано:

AT+SAPBR=3,1,"CONTYPE","GPRS" OK
AT+SAPBR=3,1,"APN","<адрес точки доступа оператора связи>" OK
AT+SAPBR=1,1 >>>>>>>>>>>>длительное ожидание, 4с
OK
AT+FTPSERV="<имя сервера>" OK
AT+FTPUN="<имя пользователя>" OK
AT+FTPPW="<пароль>" OK
AT+FTPPUTNAME="u.bin" OK
AT+FTPPUTPATH="/data/" OK
AT+FTPTYPE="I" OK
AT+FTPPUTOPT="APPE" OK
AT+FTPPUT=1 OK >>>>>>>>>>>>длительное ожидание, 6с
+FTPPUT:1,1,1300
AT+FTPPUT=2,9
+FTPPUT:2,9
<передать 9 байт>
OK +FTPPUT:1,1,1300
AT+FTPPUT=2,25
+FTPPUT:2,25
<передать 25 байт>
OK +FTPPUT:1,1,1300
AT+FTPPUT=2,0 >>>>>>>>>>>>длительное ожидание, 6с
+FTPPUT:1,0


Спасибо
turnon
Использую по умолчанию время ожидания ответа - 1 сек. Для критичных команд повтор 3 раза с паузой между повторами 1 сек.
Понять какие и где нужны таймауты помогает длительный лог за 1-2 месяца реальной работы с разными операторами в разных условиях.



Цитата(bvn123 @ Oct 25 2015, 20:55) *
- если ответ на передачу положительный, велика ли вероятность ошибки в созданном на ftp-сервере файле (интересуют не цифры, а практический опыт, к примеру, передавали с параметром качества сигнала 10, были ошибки, индицировались ли ошибки в ответе, полученном от SIM900)

Для такого сценария на сервер передаю файл с расширением .tmp, а по окончании передачи получаю CRC созданного файла на сервере и локального. И только если равны, файл переименовывается из .tmp в изначальное расширение.

Если файл недокачан - перед началом докачки получаю с сервера CRC части файла и сравниваю с частью локального. Если не равны - удаляю на сервере файл и закачиваю на сервер с нуля.

bvn123
turnon, спасибо,
очень интересные решения

пока не разыскал AT-команды для получения CRC файла с FTP-сервера,
есть такая?
turnon
Цитата(bvn123 @ Oct 29 2015, 20:00) *
пока не разыскал AT-команды для получения CRC файла с FTP-сервера,
есть такая?

Таких команд нет, получаю CRC HTTP запросом к скрипту на php.
kikprog
Извините за нубский вопрос.
Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги?
Спасибо.
mantech
Цитата(kikprog @ Nov 2 2015, 09:51) *
Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос?


А что делать, если команду передали, а модем ее проигнорировал или некорректно принял, ответа может и не быть, что тогда? Зависнем намертво? biggrin.gif
bvn123
Да, общение по UART с микроконтроллером и пока для отладки с компом - транзитом через микроконтроллер.
Ответ действительно приходит не всегда, поэтому таймаут - крайний срок, когда его еще стоит ожидать - нужен.
Задача неспешная, экономии питания не требует, проверка ответов по истечении таймаутов немного проще.
turnon
Цитата(kikprog @ Nov 2 2015, 10:51) *
Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги?

Так а нет никаких таймингов. Есть время ожидания ответа на команду, по истечении которого считается что ответа нет.
MrDorianGray
Цитата(turnon @ Oct 29 2015, 16:03) *
Использую по умолчанию время ожидания ответа - 1 сек.

В команде AT+FTPSIZE параметр Max Response Time равен 75 с. Я для подобных команд время ожидания ставил как по даташиту, что б не спамить модуль частой отправкой команд. Для остальных обычно и секунды хватает. Не было ли у Вас сильно больших задержек по ответу от модулей?
У меня модули SIM800C.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.