|
Чтение файла из памяти SIM800H |
|
|
|
Feb 1 2016, 10:58
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
Подскажите - в описании команды AT+FSREAD сказано, что размер файла не может быть указан больше 10240 байт. Я правильно понимаю, что сохранять в память файлы большего размера не имеет смысла, так как нет средств их прочесть? То есть если мне по FTP нужно загрузить больший файл - нужно бить его на кусочки по 10240? И может подскажете навскидку - какой размер памяти доступен для загрузки файлов по FTP?
|
|
|
|
|
Feb 2 2016, 07:33
|

Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 7-10-15
Из: Санкт-Петербург
Пользователь №: 88 743

|
Цитата(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)
|
|
|
|
|
Feb 2 2016, 07:53
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
Номер версии прошивку вечером посмотрю. Но - в Вашем ответе с моими экспериментами - пока не стыковка. Как раз по загрузке по FTP явных ограничений в АТ командах не указано, хотя я подозреваю, что по факту оно может быть. Но это я попробую проверить на практике. НО - уже загруженный файл в файловую систему модуля - по описанию формата команды чтения, нельзя прочитать больше размера 10240. То есть - если FTP позволит скачать файл большего размера, чем 10240, как его прочитать целиком? Или как разбить на куски по 10240? И что интересно - на команду AT+FSMEM модуль мне отвечает +FSMEM= C:0byte, хотя при этом файлы по FTP грузит.
|
|
|
|
|
Feb 2 2016, 08:41
|

Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 7-10-15
Из: Санкт-Петербург
Пользователь №: 88 743

|
Цитата(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:\' ?
|
|
|
|
|
Feb 2 2016, 08:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882

|
Из ответа похоже на оЧепятку в документации Цитата больше 10240 байт vs Цитата другое ограничение - 1024Кбайт
|
|
|
|
|
Feb 2 2016, 08:54
|

Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 7-10-15
Из: Санкт-Петербург
Пользователь №: 88 743

|
Цитата(Alechek @ Feb 2 2016, 11:41)  Из ответа похоже на оЧепятку в документации очепятки в документации нет 10240байт - ограничение пакета для записи/чтения файла 1024Кбайт - максимальный размер файла для FAT12
Сообщение отредактировал Hub - Feb 2 2016, 08:56
|
|
|
|
|
Feb 2 2016, 09:28
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
Спасибо, именно это я и хотел узнать - как прочесть из файла, большего 10240, второй кусок, следующий за первыми 10240 байт.. Цитата(Hub @ Feb 2 2016, 10:41)  что отвечает модуль на 'AT+FSLS=C:\' ? Ну я смотрел список файлов по пути с:\user\ftp - выдает список того, что я туда ранее загрузил. И еще вопрос - уже по ftp - может есть описание, как парсить ответ со списком файлов/директорий на ftp сервере? Там на каждый файл строка, типа rw-rw-... потом какие то цифры, потом размер, имя файла и дата. Эти поля как то описаны? Нормируются по размеру?
|
|
|
|
|
Feb 2 2016, 12:00
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
Цитата(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.
|
|
|
|
|
Feb 2 2016, 13:47
|

Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 7-10-15
Из: Санкт-Петербург
Пользователь №: 88 743

|
Цитата(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 - собственно лог обмена с модемов и мои пояснения
Сообщение отредактировал Hub - Feb 2 2016, 13:49
|
|
|
|
|
Feb 2 2016, 13:55
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
Еще раз - спасибо огромное. Терминология в доках сбила с толку.
|
|
|
|
|
Feb 2 2016, 14:08
|

Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 7-10-15
Из: Санкт-Петербург
Пользователь №: 88 743

|
Цитата(SERGOSV @ Feb 2 2016, 16:55)  Еще раз - спасибо огромное. Терминология в доках сбила с толку. трактовка оказалась другой, а не термин  т.к. под filesize имеется ввиду объем данных для записи что там было про FTP?..
Сообщение отредактировал Hub - Feb 2 2016, 14:09
|
|
|
|
|
Feb 2 2016, 19:21
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
По 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 - Feb 2 2016, 22:25
|
|
|
|
|
Feb 5 2016, 11:29
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

|
Последняя описанная мной проблем решена обновлением прошивки модуля SIM800 на 1308B05SIM800H32_BT. 04-я - глючная в части работы с внутренней файловой системой.
|
|
|
|
|
Feb 5 2016, 20:56
|
Группа: Участник
Сообщений: 14
Регистрация: 1-02-16
Пользователь №: 90 297

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