Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900 Ожидание +FTPGET:1,0 ответ +FTPGET:1,64 TimeOut
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
bugish
Возникла необходимость переезжать на другой FTP сервер, решили протестировать и тут все пошло не так как планировали:
После приема данных с FTP сервера жду ответ +FTPGET:1,0 методично отсреливая AT+FTPGET=2,1024 раз в 3 сек
(взято из примера в комплекте SIM900DevIDE),а +FTPGET:1,0 не приходит в течении 30 секунд и модуль рапортует +FTPGET:1,64 - timeout, следовательно программа расценивает это сообщение как неудачный прием данных.

Теоретически ответ +FTPGET:2,0 OK приходит после приема всего файла, но не является окончанием сессии, надо ждать +FTPGET:1,0 окончание приема данных.

От старого FTP сервера +FTPGET:1,0 ответ приходил через 16 секунд, это вызывало некое непонимание, но не сильно напрягало
(так было на версиях 1137B04SIM900M64_ST_EAT, 1137B01SIM900M64_ST_DTMF_JD_EAT, 1137B02V01SIM900M64_ST_DTMF_JD_EAT).
При подключении к обоим серверам FTP клиентом с ПК, после передачи чеко видно 226 File sent ok.

Стал перечитывать доки по поводу AT+FTPGET:
(FTP HTTP AT Commands User Guide AN_SIM900_FTP_HTTP_APP_V1.00)
If data transfer finished: +FTPGET:1,0 (FTP HTTP AT Commands User Guide AN_SIM900_FTP_HTTP_APP_V1.00)

AT+FTPGET=2,1024
+FTPGET:2,0 OK
Request to read 1024 bytes again. 0 bytes are now available, but it is not the end of session

(SIM900 AT Commands Manual_V1.06)
If data transfer finished: +FTPGET:1,0 (SIM900 AT Commands Manual_V1.06)
CADiLO
В новом EAT и прошивке ENHANCED использован EFTP (расширеный), окончательных доков на него пока нет.
Кроме того модуль работает не со всеми FTP серверами. Например пробовали с Adobe стянуть файл - получаем
вечный таймаут, хотя комп оттуда тянет. А с нашего тестового - без проблем.
bugish
У меня тоже с моего тестового без проблем (простой комп со статическим IP в интернете и прикрученным FTP сервером под винду), сервер на который пытаюсь переехать точно на линухе.

Может тогда для уверенного приема сначала выполнить AT+FTPSIZE, затем контролировать количество принятых байтов после получения +FTPGET:2,0 OK проверить размер и игнорировать +FTPGET:1,64.

Просто делать конец приема по +FTPGET:2,0 OK нельзя, так как я наблюдал следующую ситуацию, сначала приходило пару ответов +FTPGET:2,0 OK, а только после этого начинал передаваться файл AT+FTPGET:2,<reqlength>, а затем 5 раз +FTPGET:2,0 OK .
vassabi
Цитата(bugish)
....AT+FTPSIZE, затем контролировать количество принятых байтов после получения +FTPGET:2,0 OK проверить размер и игнорировать +FTPGET:1,64.

Тоже сейчас над таким вариантом думаю, но +FTPGET:1,64 игнорировать нельзя, т.к. сессия в этом случае прервана.
У меня вообще ответ на AT+FTPGET=2,1024 может двадцать раз прийти +FTPGET=2,0, затем какие-то цифры типа +FTPGET=2,484, опять +FTPGET=2,0 и так пока не придет +FTPGET=1,0...
Ждать от модуля на каждую посылку +FTPGET=1,1 неоправдано долго...
vassabi
Цитата
В новом EAT и прошивке ENHANCED использован EFTP (расширеный), окончательных доков на него пока нет.

Может уже хоть что-то появилось? Что там хоть за "расширения"?
У меня sim900r64 с прошивкой ENHANCED, а воспользоваться EFTP не могу...
CADiLO
Это пример тестирования Женей новых функций.
Полное описание будет после выхода релиза прошивки - пока еще доделывают.
EXT работает не с портом, а с памятью модуля. Обычное FTP работает как описано в апнотесе.

Есть замечание - все хорошо пока FTP сервер виндовый - если никсоидный, то может не работать - зависит от того как скомпилирован.



Функции FTPEXTGET и FTPEXTPUT

в FTPEXTPUT ничего не изменилось

работа с FTPEXTGET ниже

IIIIяяяяAT
OK

AT+GSV
SIMCOM_Ltd
SIMCOM_SIM900R
Revision:1137B01SIM900R64_ST_ENHANCE_20130509_FTP
OK

AT+CREG?
+CREG: 0,1
OK

AT+CSQ
+CSQ: 18,0
OK

AT+CGATT?
+CGATT: 1
OK

AT+SAPBR=3,1,"CONTYPE","GPRS"
OK

AT+SAPBR=3,1,"APN","www.djuice.com.ua"
OK

AT+SAPBR=1,1


OK
AT+SAPBR=2,1
+SAPBR: 1,1,"46.133.20.41"
OK

AT+CFSINIT на всякий случай инициализирую файловую систему и пытаюсь прочесть файл test.txt
OK так как такого файла в памяти нет, то получаю ошибки
AT+CFSGFIS="test.txt"
ERROR
AT+CFSRFILE="test.txt",0,31,0
ERROR
AT+CFSTERM
OK

AT+FTPCID=1
OK
AT+FTPSERV="simcom.exavault.com"

OK
AT+FTPUN="логин"
OK

AT+FTPPW="пароль"
OK

AT+FTPGETNAME="2.txt"
OK

AT+FTPGETPATH="/"
OK

AT+FTPGET=1 использую обычный метод чтения файла в ком-порт
OK

+FTPGET:1,1

AT+FTPGET=2,1024
+FTPGET:2,31
>> test file for FTPGET feature работает
OK

AT+FTPGET=2,1024
+FTPGET:2,0
OK

+FTPGET:1,0 как-то очень долго закрывается соединение...

AT+FTPGETNAME="3.txt" меняю имя файла
OK

AT+FTPEXTGET=1 использую чтение во Flash (по сути мы сейчас читаем в какой-то внутренний буфер ОЗУ)
OK

+FTPEXTGET:1,0 получили файл

AT+FTPEXTGET=2,"test.txt" копируем из ОЗУ во Flash (имя нового файла test.txt)


OK
+FTPEXTGET:2,34 получаем длину записанного файла

AT+FTPEXTGET=1 ещё раз читаем этот-же файл
OK

+FTPEXTGET:1,0 ещё раз приняли

AT+FTPEXTGET=2,"test.txt" пытаемся сохранить под тем-же именем!
ERROR получаем ошибку (т.е. всё ок и у модуля есть проверка от случайной перезаписи файла)

AT+FTPEXTGET=0 выключаем расширенную функцию чтения FTP и чистим ОЗУ (в случае, если AT+FTPEXTGET=2 проходит без ошибок, то мы автоматически выходим из расширенной функции чтения FTP и выполнять AT+FTPEXTGET=0 не требуется)
OK

AT+CFSINIT инит. файловую систему
OK

AT+CFSGFIS="test.txt" определяем размер файла test.txt
+CFSGFIS: 34 столько, сколько и загрузили с FTP

OK

AT+CFSRFILE="test.txt",0,31,0 чтение
+CFSRFILE: 31
>> test file for FTPEXTGET feat содержимое
OK

AT+CFSDFILE="test.txt" удаляем
OK

AT+CFSTERM отключаем работу с flash
OK

vassabi
Ткните, плиз, еще в место/документ где почитать про работу файловой системой модуля.
CADiLO
Пока здесь в начале документа. Отдельный апнотес тоже будет.

http://microchip.ua/simcom/SIM900x/AppNote...0Note_V1.01.pdf
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.