Перейти к содержанию
    

Модем<>ftp-сервер: время ожидания ответа на AT-команды, число повторов при ошибке...

Здравствуйте,

 

управляемый микроконтроллером модуль 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

 

 

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

 

 

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

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

turnon, спасибо,

очень интересные решения

 

пока не разыскал AT-команды для получения CRC файла с FTP-сервера,

есть такая?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока не разыскал AT-команды для получения CRC файла с FTP-сервера,

есть такая?

Таких команд нет, получаю CRC HTTP запросом к скрипту на php.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините за нубский вопрос.

Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос?

 

А что делать, если команду передали, а модем ее проигнорировал или некорректно принял, ответа может и не быть, что тогда? Зависнем намертво? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, общение по UART с микроконтроллером и пока для отладки с компом - транзитом через микроконтроллер.

Ответ действительно приходит не всегда, поэтому таймаут - крайний срок, когда его еще стоит ожидать - нужен.

Задача неспешная, экономии питания не требует, проверка ответов по истечении таймаутов немного проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги?

Так а нет никаких таймингов. Есть время ожидания ответа на команду, по истечении которого считается что ответа нет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую по умолчанию время ожидания ответа - 1 сек.

В команде AT+FTPSIZE параметр Max Response Time равен 75 с. Я для подобных команд время ожидания ставил как по даташиту, что б не спамить модуль частой отправкой команд. Для остальных обычно и секунды хватает. Не было ли у Вас сильно больших задержек по ответу от модулей?

У меня модули SIM800C.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...