Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чтение файла из памяти SIM800H
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
SERGOSV
Подскажите - в описании команды AT+FSREAD сказано, что размер файла не может быть указан больше 10240 байт. Я правильно понимаю, что сохранять в память файлы большего размера не имеет смысла, так как нет средств их прочесть? То есть если мне по FTP нужно загрузить больший файл - нужно бить его на кусочки по 10240?
И может подскажете навскидку - какой размер памяти доступен для загрузки файлов по FTP?
Hub
Цитата(SERGOSV @ Feb 1 2016, 13:58) *
Подскажите - в описании команды AT+FSREAD сказано, что размер файла не может быть указан больше 10240 байт. Я правильно понимаю, что сохранять в память файлы большего размера не имеет смысла, так как нет средств их прочесть? То есть если мне по FTP нужно загрузить больший файл - нужно бить его на кусочки по 10240?
И может подскажете навскидку - какой размер памяти доступен для загрузки файлов по FTP?

коллеги, небольшой оффтоп: не забывайте писать какая у Вас прошивка!

по теме:
объем файла ограничен свободным объемом памяти модуля (AT+FSMEM, у меня сейчас на 9й стандартной прошивке доступно 183Кбайт). но не забывайте что объем этой памяти может уменьшаться, т.к. модуль использует ее для записи своих данных, поэтому не стоит забивать ее до отказа (было бы побольше свободной памяти то уперлись бы в другое ограничение - 1024Кбайт, т.к. внутренняя файловая система FAT12).
Работу с файлами на SD-карте пока не проверял, но думаю максимальный объем файла будет ограничен только тем что может поддерживать файловая система.

чтобы загрузить большой файл по FTP - да, надо бить его на кусочки по 10240 и ставить дописывать в конец файла в который производится запись (AT+FSWRITE=C:\USER\123.TXT,1,10240,10)
SERGOSV
Номер версии прошивку вечером посмотрю. Но - в Вашем ответе с моими экспериментами - пока не стыковка. Как раз по загрузке по FTP явных ограничений в АТ командах не указано, хотя я подозреваю, что по факту оно может быть. Но это я попробую проверить на практике. НО - уже загруженный файл в файловую систему модуля - по описанию формата команды чтения, нельзя прочитать больше размера 10240. То есть - если FTP позволит скачать файл большего размера, чем 10240, как его прочитать целиком? Или как разбить на куски по 10240?
И что интересно - на команду AT+FSMEM модуль мне отвечает +FSMEM= C:0byte, хотя при этом файлы по FTP грузит.
Hub
Цитата(SERGOSV @ Feb 2 2016, 10:53) *
Номер версии прошивку вечером посмотрю. Но - в Вашем ответе с моими экспериментами - пока не стыковка. Как раз по загрузке по FTP явных ограничений в АТ командах не указано, хотя я подозреваю, что по факту оно может быть. Но это я попробую проверить на практике. НО - уже загруженный файл в файловую систему модуля - по описанию формата команды чтения, нельзя прочитать больше размера 10240. То есть - если FTP позволит скачать файл большего размера, чем 10240, как его прочитать целиком? Или как разбить на куски по 10240?
И что интересно - на команду AT+FSMEM модуль мне отвечает +FSMEM= C:0byte, хотя при этом файлы по FTP грузит.

давайте отделим мух от котлет:
загрузка файлов по FTP - это одна тема
работа с файловой системой и запись/чтение данных в/из файлы/ов - другая

работу с FTP пока оставим за скобками

по файловой системе:
Цитата(SERGOSV @ Feb 2 2016, 10:53) *
...НО - уже загруженный файл в файловую систему модуля - по описанию формата команды чтения, нельзя прочитать больше размера 10240...

да это так
чтение и запись производится пакетами по 10240байт
т.е. если следовать синтаксису:
записываем 1й пакет в уже созданный файл: AT+FSWRITE=C:\USER\123.TXT,0,10240,10
ждем от модуля ОК
записываем второй пакет в уже созданный файл: AT+FSWRITE=C:\USER\123.TXT,1,10240,10
ждем ОК
записываем третий пакет: AT+FSWRITE=C:\USER\123.TXT,1,10240,10
ждем ОК

читаем первую часть файла равную 10240байт: AT+FSRED=C:\USER\123.TXT,0,10240,0
читаем вторую часть файла равную например 9999байт идущие сразу после первой части: AT+FSREAD=C:\USER\123.TXT,1,9999,10241

Цитата(SERGOSV @ Feb 2 2016, 10:53) *
...И что интересно - на команду AT+FSMEM модуль мне отвечает +FSMEM= C:0byte, хотя при этом файлы по FTP грузит...

что отвечает модуль на 'AT+FSLS=C:\' ?
Alechek
Из ответа похоже на оЧепятку в документации
Цитата
больше 10240 байт

vs
Цитата
другое ограничение - 1024Кбайт

Hub
Цитата(Alechek @ Feb 2 2016, 11:41) *
Из ответа похоже на оЧепятку в документации

очепятки в документации нет
10240байт - ограничение пакета для записи/чтения файла
1024Кбайт - максимальный размер файла для FAT12
SERGOSV
Спасибо, именно это я и хотел узнать - как прочесть из файла, большего 10240, второй кусок, следующий за первыми 10240 байт..

Цитата(Hub @ Feb 2 2016, 10:41) *
что отвечает модуль на 'AT+FSLS=C:\' ?


Ну я смотрел список файлов по пути с:\user\ftp - выдает список того, что я туда ранее загрузил.

И еще вопрос - уже по ftp - может есть описание, как парсить ответ со списком файлов/директорий на ftp сервере?
Там на каждый файл строка, типа rw-rw-... потом какие то цифры, потом размер, имя файла и дата. Эти поля как то описаны? Нормируются по размеру?
SERGOSV
Цитата(Hub @ Feb 2 2016, 10:41) *
читаем первую часть файла равную 10240байт: AT+FSRED=C:\USER\123.TXT,0,10240,0
читаем вторую часть файла равную например 9999байт идущие сразу после первой части: AT+FSREAD=C:\USER\123.TXT,1,9999,10241


Хм.... я вечером Ваш вариант попробую, но если читать описание команд, то разночтение с Вашим вариантом присутствует- Формат команды AT+FSREAD описан в документе так
поле - filesize - не должно быть больше 10240
поле - postion - должно быть меньше, чем filesize.
Hub
Цитата(SERGOSV @ Feb 2 2016, 15:00) *
Хм.... я вечером Ваш вариант попробую, но если читать описание команд, то разночтение с Вашим вариантом присутствует- Формат команды AT+FSREAD описан в документе так
поле - filesize - не должно быть больше 10240
поле - postion - должно быть меньше, чем filesize.

согласен, не совсем корректное название элемента команды
filesize - имеется ввиду тот объем, который надо записать или прочитать

набросал небольшой лог - см. приаттаченый файл
для пояснения:
123.txt - исходный файл
1.txt, 2.txt, 3.txt - этот же файл разбитый на три части (две по 10240байт и одна 3211байт)
log.txt - собственно лог обмена с модемов и мои пояснения
SERGOSV
Еще раз - спасибо огромное. Терминология в доках сбила с толку.

Hub
Цитата(SERGOSV @ Feb 2 2016, 16:55) *
Еще раз - спасибо огромное. Терминология в доках сбила с толку.

трактовка оказалась другой, а не термин sm.gif
т.к. под filesize имеется ввиду объем данных для записи

что там было про FTP?..
SERGOSV
По ftp - может есть описание, как парсить ответ со списком файлов/директорий на ftp сервере?
Там на каждый файл строка, типа rw-rw-... потом какие то цифры, потом размер, имя файла и дата. Эти поля как то описаны? Нормируются по размеру?

И еще - загружаю файл с FTP сервера не так как Вы в своем примере, а командой - AT+FTPGETTOFS. Экспериментально пока пришел к результату, что эта команда файл больший или равный 10240 - не сохраняет, хотя процесс загрузки при опросе AT+FTPGETTOFS? - показывает (правда ответ всегда в виде AT+FTPGETTOFS: 0, ххххх, 0 - то есть ххххх по мере загрузки меняется, а третье число, это согласно описанию то, что записано, всегда - 0). Если после загрузки запросить размер файла - AT+FSFLSIZE=C:\user\ftp\My2.bin, то для файлов больших 10kB - выдает ERROR, а если грузить файл например 9кB, то и размер возвращает, и файл потом прочитать дает.

Может нужно пользовать команду AT+FTPEXTGET с mode=2? Но у меня этот режим тоже не заработал. Ну уже завтра продолжу разбираться.
Смысл этого всего - на FTP сервере будет для загрузки лежать относительно большой файл, порядка 60 кB и хотелось бы чтоб он был одним файлом, а не бить его на части.

P.S. Версия прошивки модуля - 1308B04SIM800H32_BT - похоже не свежая? Какая сейчас актуальная версия?
SERGOSV
Последняя описанная мной проблем решена обновлением прошивки модуля SIM800 на 1308B05SIM800H32_BT.
04-я - глючная в части работы с внутренней файловой системой.
Alechek
Последняя прошивка B06 для _BT. Январская. Обратитесь к Леониду за ней.

Замечу, что в Release notes B05 ничего не сказано про изменения в работе с файловой системой. Не задокументировали. Значит, оочень малая часть людей напоролась и решили не выносить сор из избы.
SERGOSV
За информацию о версии 06 - спасибо!
А подскажите, в продолжение темы - пока не могу разобраться.
Итак задача - читать файл с FTP, но размер файла больше свободного места в модуле. Пытаюсь читать его без разбивки его на сервере на части.
Пока не получается. Пользуюсь командой AT+FTPEXTGET с mode=2.
Проясните следующую вещь - как правильно пользоваться данной командой?
Сначала нужно:
AT+FTPEXTGET=1
OK
для открытия сессии? Я прав?
Потом делаю проверку - AT+FTPEXTGET?
Вижу ответ +FTPEXTGET: 1, хххх - тут хххх - изменяется по мере загрузки данных, до собственно размера файла на FTP. То есть модуль его по сути - загружает целиком в память? Только потом получается читать данные
AT+FTPEXTGET=3,0,1024 (например) - частями читаю весь файл.

Я прав, что модуль грузит указанный файл в свою память и нет варианта считать например часть большого файла с FTPб если он в оную память не помещается?
Hub
Цитата(SERGOSV @ Feb 5 2016, 23:56) *
За информацию о версии 06 - спасибо!
...
большого файла с FTPб если он в оную память не помещается?



см. приаттаченный файл
получается сделать тоже самое?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.