Ruslan
выйди и зайди правильно (с)
Гоша
//Вывод постирочной файла в сериал порт . //При нажатии на любую клавишу происходит считывание и затем вывод . #include <Arduino.h> #include <LittleFS.h> void setup() { Serial.begin(115200); LittleFS.begin(); } void loop() { while(Serial.available() == 0); int x = Serial.read() - '0'; Serial.println(x); File f = LittleFS.open("/xxx.txt","r"); while(f.available()) { String line = f.readStringUntil('\n'); Serial.println(line); delay(500); } f.close(); }
Гоша
это?? )))
Даниил
Благодарю
Гоша
Благодарю
в чём вопрос-то?
Даниил
Суть вопроса вот в чем . Я хочу постоянно записать каждую строчку файла xxx.txt в массив, чтобы я мог в любой момент обратиться к индексу и вывести строчку . В данном примере я научился построчно выводить данные , но записать в массив не выходил , помогите пж
https://nometa.xyz/
Ruslan
https://nometa.xyz/
https://nometa.xyz/ru.html
https://nometa.xyz/ru.html
https://neprivet.com/
Даниил
Вполне адекватный вопрос
Гоша
они про твоё первое сообщение
Да мы продолжаем стебаться на то как ты зашел без вопроса)
Гоша
сам вопрос адекватный
Гоша
но можно было сразу спросить
Даниил
Да
Гоша
блин. Если в ардуино есть std::vector и std::string то вообще изи. Прост создаёшь вектор, в том же твоём цикле где выводится в serial добавляешь строки в вектор. И вуаля.
Даниил
Я знаю что такое вектор .... Дело не в этом. Щас сформулирую более точно
Ruslan
Че такое вектор и зачем оно нужно?
это стрелочка началом в 0,0,... и длиной в один попугай
Гоша
Че такое вектор и зачем оно нужно?
контейнер из стандартной библиотеки С++ https://en.cppreference.com/w/cpp/container/vector
Даниил
Смотри в коде. String line. Эта переменная строчного типа должна притвориться массиву , в котором каждый индекс будет соответствовать каждой строке . То что вы мне скинули не работает , я уже пробовал
Гоша
Че такое вектор и зачем оно нужно?
круче чем массив, потому что может менять размер и само отвечает за управление памятью
Даниил
Я знаю что такое вектор , не принципиально ..... Мне нужен сам механизм , можно с обычным массивом
Даниил
Ребят , я думаю тут 99процентов знают что такое вектор , помогите с моей проблемой
Гоша
надеюсь, вы щас стебётесь ))
Ruslan
конкретно я щас шлифую механизм адаптации белого списка у шлагбаумов...
Даниил
Тебе нужно стринг запихнуть в массив?
Не просто запихнуть , а чтобы он сохранился по индексу
Гоша
в массив и так элементы по индексу сохраняются.
Даниил
Смотр
Гоша
единственное, осталось найти где в ардуино брать класс массива
Гоша
переменной длины
Даниил
Я когда засовываю в массив то все строчки сохраняются в первую ячейку массива , а мне нужно построчно в каждую
Гоша
если его там нет -придётся самому реализовывать. Но это изи
Гоша
Смотр
куда? код в студию!
Даниил
Я скинул же
Даниил
Смотри , я вывожу тут в сериал порт построчно , как по этому механизму построчно присвоить каждому элементу массива
Даниил
Любого , мне просто пример нужен
Даниил
Счетчик x++
Можно поподробнее
Гоша
Любого , мне просто пример нужен
в общем, в ардуино нет стандартного массива переменной длины
Даниил
в общем, в ардуино нет стандартного массива переменной длины
Да мне без разницы какая длина , мне нужен пример записи
Гоша
ты можешь сделать так char ** myArray = malloc(500*sizeof(char*)); for (/* цикл по строкам файла*/) { myArray[i] =
Гоша
щас
Гоша
допишу
Гоша
ты можешь сделать так char ** myArray = malloc(500*sizeof(char*)); for (int i = 0; i < 500 && f.available(); i++) { String line = f.readStringUntil('\n'); myArray[i] = malloc(sizeof(char)*line.length()); line.getBytes(myArray[i], line.length()); }
Гоша
вот
Даниил
Спасибо , я проверю сегодня
Гоша
Спасибо , я проверю сегодня
Пожалуйста. да не торопись ))
Даниил
Т е ты сделал char на 500 символов да
Даниил
Установил размер
Гоша
Т е ты сделал char на 500 символов да
там не символы а массивы char ов
Гоша
т.е. предел - 500 строк в файле
Даниил
Ммм, ок я попробую , если выйдет , аналогично сделаю через вектор
Гоша
это массив постоянной длины
Гоша
каждая строка может быть переменной
Гоша
и потом память надо всю чистить
Гоша
через free(ptr);
Даниил
Понял
Гоша
Ммм, ок я попробую , если выйдет , аналогично сделаю через вектор
через вектор там весь трахадром с памятью оказывается не нужен )))) поэтому через вектор там на порядок легче
Даниил
Спасибо Гоша , я протестирую и напишу
Гоша
Вот кстати нашёл для ардуины. Тут должен быть и вектор и лист. И много всякого другого. https://www.arduino.cc/reference/en/libraries/arduinostl/
Evgen
кто зафигачил багрепорт на гитхаб в виде ролика на ютубе - тот я. https://youtu.be/N8XwSMCJckk Кстати, одновременно наступил на баг в Movavi, но репортить не стал....
Mike
Тогда хз )) попробуй все таки не readline а другую функцию, например, с таймаутом. Или с настройками скорости и т.п.
переделал на inWaiting() и только потом port.read, но не приходит в inWaiting данные и не отрабатывает уже read мистика
Гоша
переделал на inWaiting() и только потом port.read, но не приходит в inWaiting данные и не отрабатывает уже read мистика
т.е. питон вроде порт открывает, но до питона вобще ничо не доходит? Если так то и правда дичъ какая то
Гоша
мож ему надо разрешения дать на доступ к портам?
Mike
т.е. питон вроде порт открывает, но до питона вобще ничо не доходит? Если так то и правда дичъ какая то
разрешение винда уже спрашивала, порт то открывается. как бы данных нету
Mike
т.е. питон вроде порт открывает, но до питона вобще ничо не доходит? Если так то и правда дичъ какая то
вот кстати интересный симптом, когда скрипт питоновский запускаю, по кнопке сброса esp не стартует. это проверяю, что при старте esp32 и выводе в uart, мигаю светодиодиком на esp. а тут после запуска скрипта он не мигает.
Гоша
переделал на inWaiting() и только потом port.read, но не приходит в inWaiting данные и не отрабатывает уже read мистика
А пришли переделанный код и код на ардуине. Мож чё подозрительное там будет. Вообще, я хз что это может быть по симптомам. Кажется что с питоном какие то непонятки Неправильно его готовишь может быть? ...
Ну почему код нельзя на пасту выкладывать? Включая подсветку? Религия не позволяет? ну неудобно эти листинги читать в телеге
Ruslan
теперь покладут туда )