Мутный 0 Posted October 4, 2020 · Report post Здравствуйте. работаю в среде Arduino IDE, припаял по uart модуль sim800l к esp32-cam. По задумке esp-шка делает снимок, сохраняет его в свою SPIFFS память, затем должна записать этот файл по uart в память sim800l. На модуле GSM создаю пустой файл командой AT+FSCREATE=file. Теперь если ввести команду, в мониторе порта, AT+FSWRITE=file,1,10,10 , то появляется приглашение набрать символы, нажать Enter и все набранное сохраниться. Это работает только через монитор порта. Наивно пробовал из esp32 отправлять данные Serial.print() и Serial.write(). но не получилось.В сети предлагается для записи в память sim800l использовать специальные утилиты, но мне это не подходить. Нужно именно от ESP32-cam передать фото в память sim800l. Люди знающие, подскажите.P.S. снимки в памяти esp32 занимают всегда не более 130kb. На модуле sim800l доступно 180kb Share this post Link to post Share on other sites
x893 0 Posted October 4, 2020 · Report post AmrFile Download.exe и смотрите, что передается. Share this post Link to post Share on other sites
Мутный 0 Posted October 4, 2020 · Report post эта программа заливает файлы? это ни тот путь. мне нужно заливать файл с ESP32-cam на sim800l через uart. Или Вы предлагаете посмотреть как именно AmrFile загружает данные в sim800? Share this post Link to post Share on other sites
x893 0 Posted October 4, 2020 · Report post 2 hours ago, Мутный said: Вы предлагаете посмотреть как именно AmrFile загружает данные в sim800? конечно, запишите весь обмен и проанализируйте, если по описанию FSWRITE не работает. Share this post Link to post Share on other sites
Мутный 0 Posted October 5, 2020 (edited) · Report post Мутный способ какой-то, попробую его от безысходности. Может есть еще какие варианты. Или может кто поправит меня в коде. Вот часть кода Serial.println("AT+FSWRITE=file,1,10,10"); // отправлюю команду модулю на запись в файл /* в терминале появляется '>' delay(500); // делаю паузу, что бы модуль принял команду Serial.print("abcdefgh"); // те символы которые хочу записать в файл /* но в терминале порта выводятя > abcdefgh // а через 10 секунд TimeOut Edited October 5, 2020 by Мутный Share this post Link to post Share on other sites
CADiLO 0 Posted October 5, 2020 · Report post Файл в 800 серии в FS через UART однозначно пишется командой FSWRITE. Поэтому разделяем мух и котлеты. Потренируйтесь сначала терминалом, вручную. Как разберетесь с параметрами и все будет стабильно писаться, тогда уже пишите для контроллера. Возможно у Вас в 800L старая система команд для FS. 800L это вообще смерть програмиста, так как есть как несколько версий железа, так и прошивок. Смотрим апноты, пробуем. AMR Play v1.00rus.pdf SIM800 Series_FS_Application Note_V1.04.pdf Share this post Link to post Share on other sites
Мутный 0 Posted October 5, 2020 · Report post Дык если я через монитор порта отправляю команды, вписывая их руками, то все пишется в файл норм. Если программно, то не пишется, хотя приглашения выводится Share this post Link to post Share on other sites
CADiLO 0 Posted October 5, 2020 · Report post Скорость модуля по UART фиксированную поставили? Разбег скоростей контроллера и модуля не должен быть больше 2% Ну и если пишется с компа файл, то однозначно модуль не причем. Share this post Link to post Share on other sites
x893 0 Posted October 5, 2020 · Report post 57 minutes ago, Мутный said: Мутный способ какой-то, попробую его от безысходности. Может есть еще какие варианты. Или может кто поправит меня в коде. Вот часть кода Serial.println("AT+FSWRITE=file,1,10,10"); // отправлюю команду модулю на запись в файл /* в терминале появляется '>' delay(500); // делаю паузу, что бы модуль принял команду Serial.print("abcdefgh"); // те символы которые хочу записать в файл /* но в терминале порта выводятя > abcdefgh // а через 10 секунд TimeOut То есть в команде задаёте, что 10 байт будете записывать, а сам отправлюете 8. Вы уж тогда определитесь, или CTRL-Z в конце давайте или 10 отправлюйте. Share this post Link to post Share on other sites
CADiLO 0 Posted October 5, 2020 · Report post >>>>Serial.print("abcdefgh"); // те символы которые хочу записать в файл Для записи в файл текстовых 0123456789, нужно в UART отправить шестнадцатеричную последовательность 30313233343536373839 Может принт не так работает как нужно? Share this post Link to post Share on other sites
x893 0 Posted October 5, 2020 · Report post 23 minutes ago, CADiLO said: Может принт не так работает как нужно? Принт работает как нужно всегда. Скорее всего дело в другом. Share this post Link to post Share on other sites
Jury093 0 Posted October 5, 2020 · Report post 1 час назад, x893 сказал: Принт работает как нужно всегда. Скорее всего дело в другом. не в теме, может не хватает команды терминатора конца файла? типа EOF какой-нить.. Share this post Link to post Share on other sites
x893 0 Posted October 5, 2020 · Report post 44 minutes ago, Jury093 said: не в теме, может не хватает команды терминатора конца файла? типа EOF какой-нить.. 1. Взять программу и посмотреть, что она передает 2. Прочитать внимательно пост от Cadilo и перевести свои буквы в hex и отправить столько символов, сколько указали в команде Например FSWRITE....0,4,150 31323334 3. Заставить мозг чуть-чуть поработать. Share this post Link to post Share on other sites
Мутный 0 Posted October 6, 2020 · Report post А может мне не париться, а попробовать ppp протокол. ? как считаете форумчане Share this post Link to post Share on other sites
x893 0 Posted October 6, 2020 · Report post 55 minutes ago, Мутный said: А может мне не париться, а попробовать ppp протокол. ? как считаете форумчане А вот это можно. Share this post Link to post Share on other sites