Робот SCARA, Nextion, координаты, разделение STRING.

Ответить
guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04.05.2021{, 01:12}
Репутация: 0
Имя: Bartek

Робот SCARA, Nextion, координаты, разделение STRING.

#1

Сообщение guzior » 06.05.2021{, 01:33}

Привет!
Я построил робота SCARA с этого сайта:
https://howtomechatronics.com/projects/ ... sed-robot/

До сих пор я программировал ее в Visuino, но программа работает так медленно, что я не мог ее закончить. Я перешел на FLprog, просмотрел несколько руководств и создал свою первую программу. Я использую блоки шаговых двигателей от AlexCrane. Работает отлично. Робот обнуляет, а мануал движется (1 кнопка отвечает за движение вверх, вторая за движение вниз, вправо, влево и т. Д. Через 10 мс удаляю буфер чтения, за это время он сравнивает полученную STRING с константами.
Когда STRING верна, я устанавливаю переменную, соответствующую кнопке.

Проблема в следующем: я хочу получить с экрана введенные координаты, которые экран отправляет в виде длинной строки. Координаты разделены знаками «/». Пример строки (первая - это код кнопки): 3b2 / 345 / 20.45 / -134.2 / 1.78

Как это сделать? Как сохранить каждую координату как отдельную переменную?

Прошу прощения, если то, что я написал, неразборчиво, но я использую переводчик. Я из Польши, свободно говорю по-английски, но русский для меня загадка.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Робот SCARA, Nextion, координаты, разделение STRING.

#2

Сообщение rw6cm » 06.05.2021{, 07:06}

guzior писал(а):
06.05.2021{, 01:33}
Как сохранить каждую координату как отдельную переменную?
Посмотрите эту тему
Win10-64, FLProg (portable)

guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04.05.2021{, 01:12}
Репутация: 0
Имя: Bartek

Робот SCARA, Nextion, координаты, разделение STRING.

#3

Сообщение guzior » 06.05.2021{, 07:55}

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

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Робот SCARA, Nextion, координаты, разделение STRING.

#4

Сообщение rw6cm » 06.05.2021{, 08:07}

guzior писал(а):
06.05.2021{, 07:55}
почему-то ничего не работает
Выложите ту часть проекта флпрог, в которой формируется строчная переменная для разбора.
Что используете в качестве дисплея, или куда эти данные передаются?
Win10-64, FLProg (portable)

guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04.05.2021{, 01:12}
Репутация: 0
Имя: Bartek

Робот SCARA, Nextion, координаты, разделение STRING.

#5

Сообщение guzior » 06.05.2021{, 08:13}

когда я отправляю строку из Nextion в Serial Monitor, полученная строка отправляется несколько раз. Это должно быть так?
Nextion после нажатия кнопки отправляет:
print "3b2"
print "/"
print "333"
print "/"
print "20"
print "/"
print "1,3"


Я скоро выложу пример проекта, мне нужно запустить свой ноутбук.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Робот SCARA, Nextion, координаты, разделение STRING.

#6

Сообщение rw6cm » 06.05.2021{, 08:23}

guzior писал(а):
06.05.2021{, 08:13}
когда я отправляю строку из Nextion в Serial Monitor,
С Nextion не подскажу, не было такого, не вникал в его работу.
Win10-64, FLProg (portable)

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

Робот SCARA, Nextion, координаты, разделение STRING.

#7

Сообщение Labu559 » 06.05.2021{, 10:53}

guzior писал(а):
06.05.2021{, 01:33}
Как это сделать? Как сохранить каждую координату как отдельную переменную?
По Вашей ссылке на сайте проекта уже присутствует
код для анализа полученой строкиПоказать
ParseStringCode.png
из Serial, с той разницей, что отдельные данные разделяются символом запятая (comma- ","):
Можно попробовать (IMHO) заменить в коде символ "," на символ "/"

Код: Выделить всё

// All this data comes as one long String at the Arduino. 
//So here, first we need to extract the data from that string and put it into separate variables.

if (Serial.available()) {
    content = Serial.readString(); // Read the incomding data from Processing
    // Extract the data from the string and put into separate integer variables (data[] array)
    for (int i = 0; i < 10; i++) {
    
    // It's a changed line!!!
      int index = content.indexOf("/"); // locate the first "/"  
      // int index = content.indexOf(","); // locate the first ","  
      
      data[i] = atol(content.substring(0, index).c_str()); //Extract the number from start to the "/"
      content = content.substring(index + 1); //Remove the number from the string
    }
    /*
     data[0] - SAVE button status
     data[1] - RUN button status
     data[2] - Joint 1 angle
     data[3] - Joint 2 angle
     data[4] - Joint 3 angle
     data[5] - Z position
     data[6] - Gripper value
     data[7] - Speed value
     data[8] - Acceleration value
    */
Goodluck!

guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04.05.2021{, 01:12}
Репутация: 0
Имя: Bartek

Робот SCARA, Nextion, координаты, разделение STRING.

#8

Сообщение guzior » 06.05.2021{, 11:17}

Я это пропустил ... В Visuino сгенерированный код выглядит совершенно иначе. Спасибо

Added in 11 hours 23 minutes 52 seconds:
После сегодняшнего тестирования на блоке AlexCrane работает разбиение текста. Огромное ему спасибо. Однако мне пришлось столкнуться с другой проблемой:
после нажатия кнопки NEXTION команда nextiona напечатает «abc». Flprog получает "abcabcabc". Как это исправить?

guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04.05.2021{, 01:12}
Репутация: 0
Имя: Bartek

Робот SCARA, Nextion, координаты, разделение STRING.

#9

Сообщение guzior » 07.05.2021{, 22:12}

Хорошо, я все проверил, и из этого следует, что, поскольку блок factory читает String как char, полученная переменная выглядит как «aababc» вместо «abc». Я очень слаба в программировании, поэтому даже не знаю, как с этим бороться.

Ответить

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