Разбор команды из строки COM-порта

SpaceQuester
SpaceQuester аватар
Offline
Зарегистрирован: 27.01.2016

У меня формат команды такой: CV:1234

Короче, буквы, двоеточие, цифры. Я их ловлю в сериал порте.



Есть скрипт простейший, суть которого: если первые буквы равны тому что мне нужно, то отсечь их, а остальные цифры перевести в int и далее работать с ними.

Код (C++):

void setup() {
  Serial.begin(9600);
}
void loop() {

  String input = "";

  while (Serial.available())
  {
    input = input + (char)(Serial.read());
    Serial.print(input);
  }

  if (input.startsWith("CV:")) {
    String Voltage =  input.substring(2);
    Voltage.trim();
    int Vol = Voltage.toInt();
    Serial.print(Vol);
  }
}

Почему не работает, можете подсказать?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

input.substring(2)

а строка "CV:4753" второй символ какой?

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

input.substring(3) - как минимум, чтобы за : читала.