Разбор строки принятой по UART для GRBL

Ответить
shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

Разбор строки принятой по UART для GRBL

#1

Сообщение shura2 » 28.09.2020{, 00:50}

Пытаюсь разобрать строку <Idle|MPos:0.000,0.000,0.000|FS:0,0|WCO:0.000,0.000,0.000>

для начала внутри скобок <>

навалял такую конструкцию, но она работает как то странно, через раз, а что я сделал не так, непонятно.
Parsing_tmp.png
Что я сделал не так?


Parsing_tmp.flp
(119.82 КБ) 36 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Разбор строки принятой по UART для GRBL

#2

Сообщение Sancho » 28.09.2020{, 08:44}

shura2, Совет.
Сначала примите строку, посимвольно, когда закончите - один раз разберите.
Пример приёма 100500 раз был на форуме.
Ок, 100501
Приём строки из UART_v02.flp
(70 КБ) 64 скачивания
Вариант 2, идеи
Заготовка Atmel_Long_String_RX.flp
(112.24 КБ) 49 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

Разбор строки принятой по UART для GRBL

#3

Сообщение shura2 » 29.09.2020{, 01:37}

разбирал я эти примеры, и их на сайте не так уж много. Так как строка все равно заполняется по одному символу из уарта, мне показалось логичным разобрать строку по мере приема. и работать уже предварительно обрезанной и проверенной стройкой.

А мой пример рабочий, ошибка была в отсылке результатов обратно в уарт - если нет изменений, то ничего не посылает, а я посылал строку одну и туже.

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

Разбор строки принятой по UART для GRBL

#4

Сообщение DrMario » 29.09.2020{, 06:22}

Проще и надежнее не бывает, я так всегда делаю.
После приема раскладывайте строку как угодно, индикатором прихода данных будет сброс приемного буфера.
Вложения
string to uart.png

shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

Разбор строки принятой по UART для GRBL

#5

Сообщение shura2 » 30.09.2020{, 02:25}

DrMario писал(а):
29.09.2020{, 06:22}
Проще и надежнее не бывает, я так всегда делаю.
После приема раскладывайте строку как угодно, индикатором прихода данных будет сброс приемного буфера.
Да, делал похоже, но как-то не был уверен, что символ конца строки совпадает с концом передачи. В моем варианте это более наглядно.

Мне в контроллер надо посылать символы типа 0x18, '\n', '\0' Если \n и \0 еще понятно, то как послать все три одной строкой не доходит.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор строки принятой по UART для GRBL

#6

Сообщение AlexCrane » 30.09.2020{, 06:45}

shura2, Ну так и пошли всё вместе одной строкой \x18\n\0
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

Разбор строки принятой по UART для GRBL

#7

Сообщение shura2 » 02.10.2020{, 20:45}

AlexCrane писал(а):
30.09.2020{, 06:45}
shura2, Ну так и пошли всё вместе одной строкой \x18\n\0
Спасибо, заработало. Только не понял почему. это же вроде разные типы данных

доделал разбор строки. Можно ли эту конструкцию упростить?
GRBL_test30_09.flp
(768.2 КБ) 51 скачивание

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Разбор строки принятой по UART для GRBL

#8

Сообщение AlexCrane » 03.10.2020{, 20:05}

shura2, Для начало хотелось бы увидеть что за строку парсите... Парсить каждый цикл одну и туже строку нет смысла, можно только при изменении строки. После блока детектора изменения строки RTrig не нужен. Это так что первое увидел.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

Разбор строки принятой по UART для GRBL

#9

Сообщение shura2 » 04.10.2020{, 02:30}

AlexCrane писал(а):
03.10.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.10.2020{, 20:05}
После блока детектора изменения строки RTrig не нужен. Это так что первое увидел.
Спасибо, поправлю

Ответить

Вернуться в «Помогите, а то я "нимагу"»