Парсинг текста
- Войдите на сайт для отправки комментариев
Сб, 29/07/2017 - 05:49
Добрый день.
Создал приложение для управления подсветкой.
У подсветки есть несколько каналов, которые могут принимать значение от 0 до 255.
Приложение на телефоне отправляет по Bluetooth текст в виде "цвет_значение". Например "R_255" или "G_140"
Как разделить принятую информацию на две переменные "цвет" и "значение" Например "R" и "255" или "G" и"140"
После анализа программа должна установить для определенного канала нужное значение. Как это сделать я разберусь сам. Мне не понятно только то, как разделить принятый текст на две переменные.
Вот что придумал. Анализируем принятую информацию посимвольно.
String str1; char r = 'R'; void setup() { Serial.begin(9600); Serial.println("String analyzer is a module, that will analyze text recieved via Bluetooth or a PC."); Serial.println("Input text like 'COLORNAME_COLORVALUE' "); } void loop() { if (Serial.available()) { String str1 = Serial.readString(); Serial.print(str1); if ( str1[0] == r) { Serial.print("Color RED"); } } }Символы 3,4,5 объединяются в String color.
n3 = str1[2]; n4 = str1[3]; n5 = str1[4]; color = (n3 + n4 + n5);Как теперь превратить String color в Int?
Задал вопрос, сам же и ответил.
Символы 3,4,5 объединяются в String color.
Не объединяются, а заменяются
смотрите на Serial.parseInt();
if (Serial.available() > 0) { int r; if (Serial.read() == 'R') r = Serial.parseInt(); Serial.print(r); }if (Serial.available() > 0) { int r; if (Serial.read() == 'R') r = Serial.parseInt(); Serial.print(r); }а если в сериале уже лежит "R_255 G_140 B_122" ?
а если в сериале уже лежит "R_255 G_140 B_122" ?
Обработать всё также.
if (Serial.available() > 0) { byte incomingByte = Serial.read(); if (incomingByte == 'R') { Serial.print("R = "); Serial.println(Serial.parseInt()); } if (incomingByte == 'G') { Serial.print("G = "); Serial.println(Serial.parseInt()); } if (incomingByte == 'B') { Serial.print("B = "); Serial.println(Serial.parseInt()); } }