Страница 1 из 1
Разбор строки принятой по UART для GRBL
Добавлено: 28 сен 2020, 00:50
shura2
Пытаюсь разобрать строку <Idle|MPos:0.000,0.000,0.000|FS:0,0|WCO:0.000,0.000,0.000>
для начала внутри скобок <>
навалял такую конструкцию, но она работает как то странно, через раз, а что я сделал не так, непонятно.
Parsing_tmp.png
Что я сделал не так?
Parsing_tmp.flp
Разбор строки принятой по UART для GRBL
Добавлено: 28 сен 2020, 08:44
Sancho
[ref]shura2[/ref], Совет.
Сначала примите строку, посимвольно, когда закончите - один раз разберите.
Пример приёма 100500 раз был на форуме.
Ок, 100501
Приём строки из UART_v02.flp
Вариант 2, идеи
Заготовка Atmel_Long_String_RX.flp
Разбор строки принятой по UART для GRBL
Добавлено: 29 сен 2020, 01:37
shura2
разбирал я эти примеры, и их на сайте не так уж много. Так как строка все равно заполняется по одному символу из уарта, мне показалось логичным разобрать строку по мере приема. и работать уже предварительно обрезанной и проверенной стройкой.
А мой пример рабочий, ошибка была в отсылке результатов обратно в уарт - если нет изменений, то ничего не посылает, а я посылал строку одну и туже.
Разбор строки принятой по UART для GRBL
Добавлено: 29 сен 2020, 06:22
DrMario
Проще и надежнее не бывает, я так всегда делаю.
После приема раскладывайте строку как угодно, индикатором прихода данных будет сброс приемного буфера.
Разбор строки принятой по UART для GRBL
Добавлено: 30 сен 2020, 02:25
shura2
DrMario писал(а): 29 сен 2020, 06:22
Проще и надежнее не бывает, я так всегда делаю.
После приема раскладывайте строку как угодно, индикатором прихода данных будет сброс приемного буфера.
Да, делал похоже, но как-то не был уверен, что символ конца строки совпадает с концом передачи. В моем варианте это более наглядно.
Мне в контроллер надо посылать символы типа 0x18, '\n', '\0' Если \n и \0 еще понятно, то как послать все три одной строкой не доходит.
Разбор строки принятой по UART для GRBL
Добавлено: 30 сен 2020, 06:45
AlexCrane
[ref]shura2[/ref], Ну так и пошли всё вместе одной строкой \x18\n\0
Разбор строки принятой по UART для GRBL
Добавлено: 02 окт 2020, 20:45
shura2
AlexCrane писал(а): 30 сен 2020, 06:45
[ref]shura2[/ref], Ну так и пошли всё вместе одной строкой \x18\n\0
Спасибо, заработало. Только не понял почему. это же вроде разные типы данных
доделал разбор строки. Можно ли эту конструкцию упростить?
GRBL_test30_09.flp
Разбор строки принятой по UART для GRBL
Добавлено: 03 окт 2020, 20:05
AlexCrane
[ref]shura2[/ref], Для начало хотелось бы увидеть что за строку парсите... Парсить каждый цикл одну и туже строку нет смысла, можно только при изменении строки. После блока детектора изменения строки RTrig не нужен. Это так что первое увидел.
Разбор строки принятой по UART для GRBL
Добавлено: 04 окт 2020, 02:30
shura2
AlexCrane писал(а): 03 окт 2020, 20:05
shura2, Для начало хотелось бы увидеть что за строку парсите... Парсить каждый цикл одну и туже строку нет смысла, можно только при изменении строки.
Это строка получаемая из контроллера ЧПУ станка с прошивкой GRBL - состояние, координаты. приходит в виде строки <Idle|MPos:0.000,0.000,0.000|FS:0,0|WCO:0.000,0.000,0.000>. Из которой мне пока нужен только статус IDLE и координаты MPOS. Планирую же сделать автономное (без компа) управление с экраном. Из хотелок: тачскрин, графическое меню, энкодер и чтение файлов с усбфлешек.
AlexCrane писал(а): 03 окт 2020, 20:05
После блока детектора изменения строки RTrig не нужен. Это так что первое увидел.
Спасибо, поправлю