реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Модем<>ftp-сервер: время ожидания ответа на AT-команды, число повторов при ошибке...
bvn123
сообщение Oct 25 2015, 17:55
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 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


Спасибо
Go to the top of the page
 
+Quote Post
turnon
сообщение Oct 29 2015, 16:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



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



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

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

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

Go to the top of the page
 
+Quote Post
bvn123
сообщение Oct 29 2015, 17:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 9-08-04
Пользователь №: 468



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

пока не разыскал AT-команды для получения CRC файла с FTP-сервера,
есть такая?
Go to the top of the page
 
+Quote Post
turnon
сообщение Oct 30 2015, 07:32
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



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

Таких команд нет, получаю CRC HTTP запросом к скрипту на php.
Go to the top of the page
 
+Quote Post
kikprog
сообщение Nov 2 2015, 06:51
Сообщение #5





Группа: Новичок
Сообщений: 1
Регистрация: 2-11-15
Пользователь №: 89 133



Извините за нубский вопрос.
Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос? Зачем нужны именно жестко прописанные тайминги?
Спасибо.
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 2 2015, 07:24
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(kikprog @ Nov 2 2015, 09:51) *
Я так понимаю общение с GSM модулем идет по UART, зачем делать паузы между командами, нельзя ждать ответа, и в случае ОК отправлять следующую, а в случае ошибки парсить её или повторять запрос?


А что делать, если команду передали, а модем ее проигнорировал или некорректно принял, ответа может и не быть, что тогда? Зависнем намертво? biggrin.gif
Go to the top of the page
 
+Quote Post
bvn123
сообщение Nov 2 2015, 12:37
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 9-08-04
Пользователь №: 468



Да, общение по UART с микроконтроллером и пока для отладки с компом - транзитом через микроконтроллер.
Ответ действительно приходит не всегда, поэтому таймаут - крайний срок, когда его еще стоит ожидать - нужен.
Задача неспешная, экономии питания не требует, проверка ответов по истечении таймаутов немного проще.
Go to the top of the page
 
+Quote Post
turnon
сообщение Nov 24 2015, 09:21
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207



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

Так а нет никаких таймингов. Есть время ожидания ответа на команду, по истечении которого считается что ответа нет.
Go to the top of the page
 
+Quote Post
MrDorianGray
сообщение Mar 22 2016, 08:58
Сообщение #9


Участник
*

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



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

В команде AT+FTPSIZE параметр Max Response Time равен 75 с. Я для подобных команд время ожидания ставил как по даташиту, что б не спамить модуль частой отправкой команд. Для остальных обычно и секунды хватает. Не было ли у Вас сильно больших задержек по ответу от модулей?
У меня модули SIM800C.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 17:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01983 секунд с 7
ELECTRONIX ©2004-2016