Страница 1 из 1
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 01:33
guzior
Привет!
Я построил робота SCARA с этого сайта:
https://howtomechatronics.com/projects/ ... sed-robot/
До сих пор я программировал ее в Visuino, но программа работает так медленно, что я не мог ее закончить. Я перешел на FLprog, просмотрел несколько руководств и создал свою первую программу. Я использую блоки шаговых двигателей от AlexCrane. Работает отлично. Робот обнуляет, а мануал движется (1 кнопка отвечает за движение вверх, вторая за движение вниз, вправо, влево и т. Д. Через 10 мс удаляю буфер чтения, за это время он сравнивает полученную STRING с константами.
Когда STRING верна, я устанавливаю переменную, соответствующую кнопке.
Проблема в следующем: я хочу получить с экрана введенные координаты, которые экран отправляет в виде длинной строки. Координаты разделены знаками «/». Пример строки (первая - это код кнопки): 3b2 / 345 / 20.45 / -134.2 / 1.78
Как это сделать? Как сохранить каждую координату как отдельную переменную?
Прошу прощения, если то, что я написал, неразборчиво, но я использую переводчик. Я из Польши, свободно говорю по-английски, но русский для меня загадка.
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 07:06
rw6cm
guzior писал(а): 06 май 2021, 01:33
Как сохранить каждую координату как отдельную переменную?
Посмотрите
эту тему
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 07:55
guzior
Нашел эту тему, скачал все выложенные там блоки, но у меня почему-то ничего не работает. Не знаю, из-за незнания русского или из-за какой-то ошибки в связи ...
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 08:07
rw6cm
guzior писал(а): 06 май 2021, 07:55
почему-то ничего не работает
Выложите ту часть проекта флпрог, в которой формируется строчная переменная для разбора.
Что используете в качестве дисплея, или куда эти данные передаются?
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 08:13
guzior
когда я отправляю строку из Nextion в Serial Monitor, полученная строка отправляется несколько раз. Это должно быть так?
Nextion после нажатия кнопки отправляет:
print "3b2"
print "/"
print "333"
print "/"
print "20"
print "/"
print "1,3"
Я скоро выложу пример проекта, мне нужно запустить свой ноутбук.
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 08:23
rw6cm
guzior писал(а): 06 май 2021, 08:13
когда я отправляю строку из Nextion в Serial Monitor,
С Nextion не подскажу, не было такого, не вникал в его работу.
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 10:53
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!
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 06 май 2021, 22:41
guzior
Я это пропустил ... В Visuino сгенерированный код выглядит совершенно иначе. Спасибо
Added in 11 hours 23 minutes 52 seconds:
После сегодняшнего тестирования на блоке AlexCrane работает разбиение текста. Огромное ему спасибо. Однако мне пришлось столкнуться с другой проблемой:
после нажатия кнопки NEXTION команда nextiona напечатает «abc». Flprog получает "abcabcabc". Как это исправить?
Робот SCARA, Nextion, координаты, разделение STRING.
Добавлено: 07 май 2021, 22:12
guzior
Хорошо, я все проверил, и из этого следует, что, поскольку блок factory читает String как char, полученная переменная выглядит как «aababc» вместо «abc». Я очень слаба в программировании, поэтому даже не знаю, как с этим бороться.