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