ARDUINO Построчное чтение файла с SD карты и построчная отправка?

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
Приветствую всех! Возжелал я сделать себе автономный пуль для моего ЧПУ который должен выполнять небольшой список базовых функций (Движение по осям XYZ, обнуление координат и т.д.) и пока идут компоненты я решил написать прошивку, сам я новичок не судите строго, и с выполнение обычных команд я справился но когда дело дошло о выполнении УП (Управляющая Программа) у меня вскипели мозги, перешарил кучу сайтов но мало что понял возможно даже и на каких-то ответ и был но я скорее всего его не понял. Но все что у меня есть о представлении как это должно работать это то что в начале я читаю фаил УП делю его на строки, отдаю например 10 строчек т.е. 10 команд на выполнение потом после того как станок сказал ОК отправляются следующие 10 строчек как это реализовать просто в голове не укладывается. Прошу помочь хотябы с тем как должна выглядеть структура программы. Особую сложность представляет деление файла на строчки и последовательная отправка следующих строк после выполнения предыдущих.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,277
1,303
Москва
Деление файла на строчки самое простое. Строка всегда символом 0х0A, может быть сочетание 0xD 0x0A
Вот например в библиотеке SD есть такая функция:
String stroka = new_list.readStringUntil(char(10));
Она как раз считывает из открытого файла (new_list) символьную строку вплоть до символа 10, а это как раз и есть 0x0A
 

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
Честно не понял. Если вы имели ввиду символ "терминатор" обозначающий конец строки то его нет при создании УП в конце строки нет конечного символа.
 

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
Вот там каждая строка это команда именно так формируется УП

Мне требуется отправлять эти строки в текстовом формате как оно есть. Ну это стандартный Gcode
 

Вложения

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
@Intagan, Вы читали сообщение от @Старик Похабыч?
Вот например в библиотеке SD есть такая функция:
String stroka = new_list.readStringUntil(char(10));
Она как раз считывает из открытого файла (new_list) символьную строку вплоть до символа 10, а это как раз и есть 0x0A
Serial.readStringUntil() - Arduino Reference
 

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
Я хочу сделать буфер в котором будет некотрое количество строк по порядку и после того как я их отправил они должны перезаписаться на следующие и ждать когда станок скажет ОК проблема в том что не понимаю как это сделать

Читал но не понял как до 10 символа т.е. я могу задать до какого символа будет строка но там строки бывают разных размеров
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
  • Лойс +1
Реакции: Intagan

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
ААА понял чар это формат а 10 это сивольное обозначение переноса понял

Я понял что эта командо читает строку до переноса но как перезаписать на следующую строку после отправки. прошу прощения возможно банальные вопросы но стоит учитывать что я совсем новичок 😁 и ориентироваться и правильно пользоваться полученной информацией в данном сегменте не получается я буквально три дня это осваиваю. возможно решающим фактором сейчас играет что у меня время 1:49
 

bort707

★★★★★★✩
21 Сен 2020
3,075
915
Я понял что эта командо читает строку до переноса но как перезаписать на следующую строку после отправки.
для начала научитесь правильно формулировать. Что значит "перезаписать на следующую строку"? - для меня это означает взять и записать что-то в исходный файл - то есть, фактически. испортить ваш G-коде. Но вы, наверно, не это имели в виду?
После того как вы прочитали из файла строчку и отправили ее в станок - логично будет прочитать следующую. Откуда тут берется "перезаписать" - я не понимаю.
 
  • Лойс +1
Реакции: Intagan

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
@bort707, Да вы полностью правы. Судя по изображению у меня конец строки это OD OA . Если я дам команду прочитать в плоть до этого знака и отправлю ее в станок то как мне прочитать следующую неужели команда не меняется и она будет последовательно читать следующую строку в вайле пока сам фаил не кончится при условии повторения в цикле? Простите но возможно глупо и правильный ответ где-то рядом но прошу пощадите и наведите на путь истинный. И что за программа на изображении?
Идите уже спать! Завтра намотаете на свежую голову.
Посмотреть вложение 37910
 

bort707

★★★★★★✩
21 Сен 2020
3,075
915
как мне прочитать следующую неужели команда не меняется и она будет последовательно читать следующую строку в вайле пока сам фаил не кончится при условии повторения в цикле?
Надо смотреть конкретную библиотеку, но скорее всего именно так.
Большинство команд чтения из файла или из буфера автоматически передвигают позицию в файле на число прочитанных байт
 
  • Лойс +1
Реакции: Intagan

Intagan

✩✩✩✩✩✩✩
21 Авг 2022
33
1
@Normalek, Спасибо за помощь это мне пригодится если конечно разберусь в коде. Но все же хочется самому написать прошивку, она уже готова на 35% +- осталось как раз реализовать основную функцию выполнения УП и моя душа будет спокойна так как остальное буду доделывать когда приедут компоненты. Спасибо еще раз!
Надо смотреть конкретную библиотеку, но скорее всего именно так.
Понял буду разбираться. Спасибо!