|
|
  |
Модем<>ftp-сервер: время ожидания ответа на AT-команды, число повторов при ошибке... |
|
|
|
Oct 25 2015, 17:55
|
Частый гость
 
Группа: Свой
Сообщений: 112
Регистрация: 9-08-04
Пользователь №: 468

|
Здравствуйте,
управляемый микроконтроллером модуль 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
Спасибо
|
|
|
|
|
Oct 29 2015, 16:03
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Использую по умолчанию время ожидания ответа - 1 сек. Для критичных команд повтор 3 раза с паузой между повторами 1 сек. Понять какие и где нужны таймауты помогает длительный лог за 1-2 месяца реальной работы с разными операторами в разных условиях. Цитата(bvn123 @ Oct 25 2015, 20:55)  - если ответ на передачу положительный, велика ли вероятность ошибки в созданном на ftp-сервере файле (интересуют не цифры, а практический опыт, к примеру, передавали с параметром качества сигнала 10, были ошибки, индицировались ли ошибки в ответе, полученном от SIM900) Для такого сценария на сервер передаю файл с расширением .tmp, а по окончании передачи получаю CRC созданного файла на сервере и локального. И только если равны, файл переименовывается из .tmp в изначальное расширение. Если файл недокачан - перед началом докачки получаю с сервера CRC части файла и сравниваю с частью локального. Если не равны - удаляю на сервере файл и закачиваю на сервер с нуля.
|
|
|
|
|
Oct 30 2015, 07:32
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(bvn123 @ Oct 29 2015, 20:00)  пока не разыскал AT-команды для получения CRC файла с FTP-сервера, есть такая? Таких команд нет, получаю CRC HTTP запросом к скрипту на php.
|
|
|
|
|
Nov 2 2015, 06:51
|
Группа: Новичок
Сообщений: 1
Регистрация: 2-11-15
Пользователь №: 89 133

|
Извините за нубский вопрос. Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги? Спасибо.
|
|
|
|
|
Nov 2 2015, 07:24
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(kikprog @ Nov 2 2015, 09:51)  Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? А что делать, если команду передали, а модем ее проигнорировал или некорректно принял, ответа может и не быть, что тогда? Зависнем намертво?
|
|
|
|
|
Nov 24 2015, 09:21
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(kikprog @ Nov 2 2015, 10:51)  Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги? Так а нет никаких таймингов. Есть время ожидания ответа на команду, по истечении которого считается что ответа нет.
|
|
|
|
|
Mar 22 2016, 08:58
|
Участник

Группа: Участник
Сообщений: 20
Регистрация: 23-01-16
Пользователь №: 90 161

|
Цитата(turnon @ Oct 29 2015, 16:03)  Использую по умолчанию время ожидания ответа - 1 сек. В команде AT+FTPSIZE параметр Max Response Time равен 75 с. Я для подобных команд время ожидания ставил как по даташиту, что б не спамить модуль частой отправкой команд. Для остальных обычно и секунды хватает. Не было ли у Вас сильно больших задержек по ответу от модулей? У меня модули SIM800C.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|