bvn123 0 25 октября, 2015 Опубликовано 25 октября, 2015 · Жалоба Здравствуйте, управляемый микроконтроллером модуль 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 29 октября, 2015 Опубликовано 29 октября, 2015 · Жалоба Использую по умолчанию время ожидания ответа - 1 сек. Для критичных команд повтор 3 раза с паузой между повторами 1 сек. Понять какие и где нужны таймауты помогает длительный лог за 1-2 месяца реальной работы с разными операторами в разных условиях. - если ответ на передачу положительный, велика ли вероятность ошибки в созданном на ftp-сервере файле (интересуют не цифры, а практический опыт, к примеру, передавали с параметром качества сигнала 10, были ошибки, индицировались ли ошибки в ответе, полученном от SIM900) Для такого сценария на сервер передаю файл с расширением .tmp, а по окончании передачи получаю CRC созданного файла на сервере и локального. И только если равны, файл переименовывается из .tmp в изначальное расширение. Если файл недокачан - перед началом докачки получаю с сервера CRC части файла и сравниваю с частью локального. Если не равны - удаляю на сервере файл и закачиваю на сервер с нуля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 29 октября, 2015 Опубликовано 29 октября, 2015 · Жалоба turnon, спасибо, очень интересные решения пока не разыскал AT-команды для получения CRC файла с FTP-сервера, есть такая? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 30 октября, 2015 Опубликовано 30 октября, 2015 · Жалоба пока не разыскал AT-команды для получения CRC файла с FTP-сервера, есть такая? Таких команд нет, получаю CRC HTTP запросом к скрипту на php. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kikprog 0 2 ноября, 2015 Опубликовано 2 ноября, 2015 · Жалоба Извините за нубский вопрос. Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 51 2 ноября, 2015 Опубликовано 2 ноября, 2015 · Жалоба Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? А что делать, если команду передали, а модем ее проигнорировал или некорректно принял, ответа может и не быть, что тогда? Зависнем намертво? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 2 ноября, 2015 Опубликовано 2 ноября, 2015 · Жалоба Да, общение по UART с микроконтроллером и пока для отладки с компом - транзитом через микроконтроллер. Ответ действительно приходит не всегда, поэтому таймаут - крайний срок, когда его еще стоит ожидать - нужен. Задача неспешная, экономии питания не требует, проверка ответов по истечении таймаутов немного проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 24 ноября, 2015 Опубликовано 24 ноября, 2015 · Жалоба Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги? Так а нет никаких таймингов. Есть время ожидания ответа на команду, по истечении которого считается что ответа нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrDorianGray 0 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Использую по умолчанию время ожидания ответа - 1 сек. В команде AT+FTPSIZE параметр Max Response Time равен 75 с. Я для подобных команд время ожидания ставил как по даташиту, что б не спамить модуль частой отправкой команд. Для остальных обычно и секунды хватает. Не было ли у Вас сильно больших задержек по ответу от модулей? У меня модули SIM800C. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться