Diferencia entre revisiones de «Serial.parseInt()»
De ArduWiki
(Página creada con «== Descripción == == Sintaxis == <pre> </pre> == Parametros == == Retorna == == Advertencias == Nada. == Ejemplo == <syntaxhighlight lang="c++"> </syntaxhighlight> =...») |
(→Referencias) |
||
(No se muestran 13 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == 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 == | == Sintaxis == | ||
<pre> | <pre> | ||
+ | Serial.parseInt(); | ||
+ | Serial.parseInt(caracter); | ||
</pre> | </pre> | ||
== Parametros == | == Parametros == | ||
+ | ;caracter: caracter a ignorar una vez iniciado el proceso ([[char]]). | ||
== Retorna == | == Retorna == | ||
+ | Devuelve un número tipo [[long]], o '''0''' si no encuentra nada. | ||
== Advertencias == | == 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 == | ||
+ | <syntaxhighlight lang="c++"> | ||
+ | 123 --> 123 | ||
+ | a123 --> 123 | ||
+ | 123a --> 123 | ||
+ | 1a2a3 -->1, 2 y 3 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 2 == | ||
+ | En este ejemplo mete uno a uno los dígitos entre 0~9 en monitor serie. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | 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 | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == 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. | ||
− | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
+ | 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(); | ||
+ | } | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Serial</categorytree> | |
− | |||
− | |||
− | |||
== Referencias == | == Referencias == | ||
+ | * [https://www.luisllamas.es/buffer-circular-arduino/ Buffer circulare en Arduino] - Luis Llamas | ||
− | [[Category: | + | [[Category:Serial]] |
Revisión actual del 21:20 25 jun 2019
Contenido
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
- Buffer circulare en Arduino - Luis Llamas