Официальный сайт компании Arduino по адресу arduino.cc
Отсечь от строки несколько первых символов
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пт, 14/06/2019 - 21:22
Добрый день.
Я хочу отправить в Serial.port команду вида: RGB:R
Мне нужно, что бы отсеклась RGB: и в некую переменную записалось R
Покажите, пожалуйста, простейшим примером, как это делать. Всю голову уже сломал.
Почитайте про массивы в С/С++
Мне нужно, что бы отсеклась RGB: и в некую переменную записалось R ... Всю голову уже сломал.
Вы завязывайте голову ломать. Есть только две вещи, от которых у нормального мужика может сломаться голова и тривиальной задачки про массив среди этих вещей не значится.
Выпишите свою строку на клетчатой бумаге (по одному символу в клетке) и делайте, что Вам посоветовал коллега постом выше. Озарение придёт через минуту - другую.
Добрый день. Я последовал Вашим советам и "загнал" строку в массив. Вот пример моего кода:
Получается теперь. что бы обратиться к определенному значению массива, я ссылаюсь на него. Но вот, что я бы хотел реализовать в итоге:
Отправляю:
Light:R.255 или Up:100
В моем примере длина слова команды до двоеточия разная и в коде, который я написал массив забивается 0 каждый раз при вводе новой команды. Подскажите, как реализовать запись данных в массив только после двоеточия? Моих знаний, к сожалению, пока не достаточно.
Надеюсь, что мой текущий код также кому-нибудь поможет в дальнейшем.
проверяй символы в строке на принадлежность к двоеточию. Пока не оно - пропускай. отдавай индекс следующего за двоеточием символа
проверяй символы в строке на принадлежность к двоеточию. Пока не оно - пропускай. отдавай индекс следующего за двоеточием символа
Согласен, так и нужно. Не понимаю как. )
отдасца или индекс следующего за ":" символа, или -1, если его нет. Длина строки не более 127 байтов.
"загнал2 строку в массив
А что там делает переменная типа String?
вот, что я бы хотел реализовать в итоге:
Отправляю:
Light:R.255 или Up:100
Здесь и в первом посте Вы пишете, что Вы хотите отправить. А в коде Вы ничего не отправляете. атолько принимаете.
Вы уж определитесь и объясните внятно, что Вы делаете
В моем примере длина слова команды до двоеточия разная
И что?
в коде, который я написал массив забивается 0 каждый раз при вводе новой команды.
Зачем?
Подскажите, как реализовать запись данных в массив только после двоеточия?
Ничего не понял, я уже просил Вас внятно формулировать задачу. Для начала определитесь, Вы "продаёте или покупаете".
Надеюсь, что мой текущий код также кому-нибудь поможет в дальнейшем.
Хорошая шутка.
Кстати, что там делает строка №15. Для чего она?
отдасца или индекс следующего за ":" символа, или -1, если его нет. Длина строки не более 127 байтов.
Спасибо, сейчас попробую разобраться с этой функцией.
А что там делает переменная типа String?
У меня пока мало знаний. Я думал, что так нужно.
Здесь и в первом посте Вы пишете, что Вы хотите отправить. А в коде Вы ничего не отправляете. атолько принимаете.
Вы уж определитесь и объясните внятно, что Вы делаете
Я ввожу строку посредством serialPort.
Кстати, что там делает строка №15. Для чего она?
Забыл убрать.
Хочешь использовать String - почитай https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/
особенно внимательно про её свойства и методы. И особенно про этот https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/indexof/
Хочешь использовать String - почитай https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/
особенно внимательно про её свойства и методы. И особенно про этот https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/indexof/
Вы имеете ввиду функцию substring(); ?
Понял, ответил раньше, чем заметил Ваше уточнение. Спасибо.
У меня пока мало знаний. Я думал, что так нужно.
Я ввожу строку посредством serialPort.
Забыл убрать.
Ну, тогда Ваш код точно
Ну, тогда Ваш код точно
Текущий код вполне работоспособен и новичкам вполне может пригодиться.
Вот и я ж про тоже.
Хочешь использовать String - почитай https://www.arduino.cc/reference/en/language/variables/data-types/stringobject/
особенно внимательно про её свойства и методы. И особенно про этот https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/indexof/
Я воспользовался Вашим советом, но мне не понятно, как выводить строку, после того, как я нашел с помощью indexOf нужный символ ":", который является маркером.
1. Напиши внятно что надо сделать
2. Приведи пример своего кода, как ты пытался сделать пункт 1.
Здесь помогают тому, кто пытается делать сам, а не разбрасываюца кодами.
Текущий код вполне работоспособен и новичкам вполне может пригодиться.
не обманывай себя, "текущий код" - полная бредятина, просто свалка не связанных между собой команд. И еще он может приводить к зависанию ардуины.
Кстати, забыл вчера сказать, функция сработает неверно, если ....
отдасца или индекс следующего за ":" символа, или -1, если его нет. Длина строки не более 127 байтов.
но это тебе для тренировки мозга. Пацказка, смотри в строку #5 а потом в #4
отдасца или индекс следующего за ":" символа, или -1, если его нет. Длина строки не более 127 байтов.
а почему тип индекса не такой, как тип результата?
это будет след. упражнение для мозга. А потом, что будет, если в первых 256 байтах ':' не найдётся. :)
проверки, оне, сцуки, непоправимо раздувають код
а почему тип индекса не такой, как тип результата?
На самом деле, канеш, это моя ошибка. Естесственно, оне должны быть одного типа. Но это так у меня всегда, дети красивые, а то что я делаю руками - никуда не годицца.
На самом деле, канеш, это моя ошибка. Естесственно, оне должны быть одного типа. Но это так у меня всегда, дети красивые, а то что я делаю руками - никуда не годицца.
Я бы так не переживал:
ну, значить, не у одного меня дети красивые. :)
ну, значить, не у одного меня дети красивые. :)
Но int8_t на int16_t исправить стоит фюр орднунг.