Код
AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","internet***"
AT+SAPBR=3,1,"USER","***"
AT+SAPBR=3,1,"PWD","***"
AT+SAPBR=1,1
AT+FTPSERV="ftp.***.ru"
AT+FTPUN="***"
AT+FTPPW="***"
AT+FTPGETPATH="/"
AT+FTPGETNAME="test.txt"
AT+FTPSIZE
AT+SAPBR=3,1,"APN","internet***"
AT+SAPBR=3,1,"USER","***"
AT+SAPBR=3,1,"PWD","***"
AT+SAPBR=1,1
AT+FTPSERV="ftp.***.ru"
AT+FTPUN="***"
AT+FTPPW="***"
AT+FTPGETPATH="/"
AT+FTPGETNAME="test.txt"
AT+FTPSIZE
В ответ получаем "+FTPSIZE:1,77,0"
С запросом содержимого файла проблем не возникает.
Для выяснения причин на ftp-сервере было включено логирование ftp-команд.
После чего выяснилось, что ftp-сервер на запрос SIZE в режиме передачи ASCII отвечает ошибкой 550(SIZE not allowed in ASCII mode).
Следуя рекомендациям ftp-сервера, перед выполнением команды "AT+FTPSIZE" была добавлена строка "AT+FTPTYPE="I":
Код
AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","internet***"
AT+SAPBR=3,1,"USER","***"
AT+SAPBR=3,1,"PWD","***"
AT+SAPBR=1,1
AT+FTPSERV="ftp.***.ru"
AT+FTPUN="***"
AT+FTPPW="***"
AT+FTPGETPATH="/"
AT+FTPGETNAME="test.txt"
AT+FTPTYPE="I"
AT+FTPSIZE
AT+SAPBR=3,1,"APN","internet***"
AT+SAPBR=3,1,"USER","***"
AT+SAPBR=3,1,"PWD","***"
AT+SAPBR=1,1
AT+FTPSERV="ftp.***.ru"
AT+FTPUN="***"
AT+FTPPW="***"
AT+FTPGETPATH="/"
AT+FTPGETNAME="test.txt"
AT+FTPTYPE="I"
AT+FTPSIZE
В результате получаем ту же самую ошибку. После просмотра логов было обнаружено, что после выполнения команды смены режима передачи данных (AT+FTPTYPE="I") ftp-сервер не переходит в режим binary(в логах ftp-сервера нет команды TYPE I). Т.е. sim900 не меняет режим передачи.
Далее на ftp-сервере по умолчанию был задан двоичный режим передачи данных, после чего команда AT+FTPSIZE стала возвращать корректный результат. Были протестированы 2 ftp-сервера (vsftpd, proftpd) - результат одинаковый.
Вопрос заключается в следующем: есть ли это недоработка программного обеспечения модуля или что-то было упущено?
Если это недоработка ПО, есть ли варианты решения данной проблемы (например, с помощью Embedded AT, java)?