Serial.parseInt()

De ArduWiki
Revisión del 21:20 25 jun 2019 de Kike GL (Discusión | contribuciones) (Referencias)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Descripción

Busca el siguiente número entero entre los datos entrantes, asumiendo que está codificado como texto. Se rige bajo las siguientes reglas:

  • Los caracteres iniciales que no son dígitos o un signo menos, se saltan.
  • El análisis se detiene cuando el tiempo de espera se agota, o se lee un caracter que no es dígito (excluyendo el ignorado).
  • Si no se leyeron dígitos válidos durante el tiempo de espera (vea Serial.setTimeout()), se devuelve 0.

Sintaxis

Serial.parseInt();
Serial.parseInt(caracter);

Parametros

caracter
caracter a ignorar una vez iniciado el proceso (char).

Retorna

Devuelve un número tipo long, o 0 si no encuentra nada.

Advertencias

  • Si de parámetro se introduce el símbolo de menos ('-'), el valor retornado nunca será negativo.
  • Este parámetro es muy útil para ignorar coma (',') en números como: 10,000.

Ejemplo 1

123  --> 123
a123 --> 123
123a --> 123
1a2a3 -->1, 2 y 3

Ejemplo 2

En este ejemplo mete uno a uno los dígitos entre 0~9 en monitor serie.

byte x;
int y;
void setup(){
   Serial.begin(115200);
}
void loop(){
   if (Serial.available()){
      x = Serial.peek();
      y = Serial.parseInt();
      Serial.print(x);         //ASCII
      Serial.print(" = ");
      Serial.println(y);       //Entero
   }
}

Ejemplo 3

Implementacion de un buffer circular que se usa para almacenar los ultimos n valores recibidos para efectos de hacer un promedio por ejemplo.

const byte ventana = 5;
int circularBuffer[ventana];
byte indice = 0;                  //Indice circular
 
//Mete nuevo "valor" al buffer circular
void meter(int valor){
   circularBuffer[indice] = valor;
   indice++;
   if (indice >= ventana){
      indice = 0;
   }
}
 
void setup(){
   Serial.begin(115200);
}
 
void loop(){
   if (Serial.available()){
      int x = Serial.parseInt();
      meter(x);
      for (byte n=0; n<ventana; n++){ 
         Serial.print(circularBuffer[n]);
         Serial.print(",");
      }
      Serial.println();
   }
}

Vea también


Referencias