Разделяет число больше 9

Mcr
Offline
Зарегистрирован: 31.07.2012

Здравствуйте!
У меня возникла проблема когда я посылаю число до 10 все нормально выводит, но когда я посылаю 10 и более у меня число разбивается посимвольно, например ввожу 10 на выходе получаю 1 0 а мне нужно просто 10.
Вот код:

  delay(200);
  if(Serial.available()>0)
  {
    port =  Serial.read()- '0';
    Serial.println(port);
    }

 Пробывал еще так:

  if(Serial.available()>0)
  {
  int s = Serial.read();
  Serial.print(port);
  delay(200);
   if(s<9)
    {
    port = Serial.read()- '0';
     Serial.println(port);
    }else{
    port = port*10+( Serial.read()- '0');
    Serial.println(port);
    }

Но это вообще какието левые цыфры выдает.

Вот этот код в отдельности

  if(Serial.available()>0)
  {
    port = port*10+( Serial.read()- '0');
    Serial.println(port);
    }

то он срабатывает нормально если ввели 10 или более, но если меньше то фигня получается какаето.

подскажите как это исправить ?

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

читать до появления перевода строки?

Mcr
Offline
Зарегистрирован: 31.07.2012

JollyBiber пишет:

читать до появления перевода строки?

Можна до можна после

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Кто-то из нас двоих тупит не по детски..

Mcr
Offline
Зарегистрирован: 31.07.2012

JollyBiber пишет:

Кто-то из нас двоих тупит не по детски..

До

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Я не понимаю Ваших комментариев. Вы спросили как пофиксить проблему, я написал что нужно читать до появления символа перевода строки.

Хотя может Вы в другом окне ноты изучаете и случайно окошком ошиблись...

Mcr
Offline
Зарегистрирован: 31.07.2012

Вроде так принимает

int s = Serial.parseInt();
  Serial.print(s);

Правильный это подход или нет?

 

Mcr
Offline
Зарегистрирован: 31.07.2012

JollyBiber пишет:

Я не понимаю Ваших комментариев. Вы спросили как пофиксить проблему, я написал что нужно читать до появления символа перевода строки.

Хотя может Вы в другом окне ноты изучаете и случайно окошком ошиблись...

Вы просто поставили знак вопроса в конце)

Radjah
Offline
Зарегистрирован: 06.08.2014

Есть еще метод parseint.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Луп считывает за проход один символ. Поэтому 10 приходит как 1 и 0. Если не "перевод строки" склеивайте их вместе.