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

Ответить
guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04 май 2021, 01:12
Имя: Bartek

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

Сообщение guzior »

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

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

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

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

Прошу прощения, если то, что я написал, неразборчиво, но я использую переводчик. Я из Польши, свободно говорю по-английски, но русский для меня загадка.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

guzior писал(а): 06 май 2021, 01:33 Как сохранить каждую координату как отдельную переменную?
Посмотрите эту тему
Win10-64, FLProg (portable)
guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04 май 2021, 01:12
Имя: Bartek

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

Сообщение guzior »

Нашел эту тему, скачал все выложенные там блоки, но у меня почему-то ничего не работает. Не знаю, из-за незнания русского или из-за какой-то ошибки в связи ...
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

guzior писал(а): 06 май 2021, 07:55 почему-то ничего не работает
Выложите ту часть проекта флпрог, в которой формируется строчная переменная для разбора.
Что используете в качестве дисплея, или куда эти данные передаются?
Win10-64, FLProg (portable)
guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04 май 2021, 01:12
Имя: Bartek

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

Сообщение guzior »

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


Я скоро выложу пример проекта, мне нужно запустить свой ноутбук.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

guzior писал(а): 06 май 2021, 08:13 когда я отправляю строку из Nextion в Serial Monitor,
С Nextion не подскажу, не было такого, не вникал в его работу.
Win10-64, FLProg (portable)
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий

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

Сообщение Labu559 »

guzior писал(а): 06 май 2021, 01:33 Как это сделать? Как сохранить каждую координату как отдельную переменную?
По Вашей ссылке на сайте проекта уже присутствует [spoiler title= код для анализа полученой строки]
ParseStringCode.png
[/spoiler] из 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 май 2021, 01:12
Имя: Bartek

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

Сообщение guzior »

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

Added in 11 hours 23 minutes 52 seconds:
После сегодняшнего тестирования на блоке AlexCrane работает разбиение текста. Огромное ему спасибо. Однако мне пришлось столкнуться с другой проблемой:
после нажатия кнопки NEXTION команда nextiona напечатает «abc». Flprog получает "abcabcabc". Как это исправить?
guzior
Рядовой
Сообщения: 5
Зарегистрирован: 04 май 2021, 01:12
Имя: Bartek

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

Сообщение guzior »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей