Diferencia entre revisiones de «Serial.read()»
De ArduWiki
(→Ejemplo 3) |
(→Ejemplo 3) |
||
Línea 50: | Línea 50: | ||
== Ejemplo 3 == | == Ejemplo 3 == | ||
− | Es este ejemplo capturaremos varios caracteres y los almacenamos en una variable tipo [[String]] | + | Es este ejemplo capturaremos varios caracteres y los almacenamos uno a uno en una variable tipo [[String]]. |
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
Línea 62: | Línea 62: | ||
while (Serial.available()){ | while (Serial.available()){ | ||
char caracter = Serial.read(); | char caracter = Serial.read(); | ||
− | + | frase.concat(caracter); | |
− | + | delay(10); | |
− | } | + | } |
− | + | if (frase != ""){ | |
− | + | Serial.println(frase); | |
− | + | frase = ""; | |
} | } | ||
} | } |
Revisión del 00:32 23 feb 2019
Contenido
Descripción
Lee o captura un byte (un carácter) desde el puerto serie.
Sintaxis
byte variable = Serial.read();
Parametros
- variable
- variable para capturar byte de entrada
Retorno
El valor recuperado según el número de bits de datos configurado, o -1 si el buffer de entrada está vacío (int).
Advertencia
- Si por error no se verifica de antemano si hay datos disponibles, read() retornará 255 para byte en el caso que el valor real sea -1 (nada).
- El buffer en el caso de UNO y NANO es de 64 kB. Aunque esto se puede cambiar con la libreria HardwareSerial.h.
Ejemplo 1
En este primer ejemplo usamos una variable tipo char para capturar el caracter.
void setup(){
Serial.begin(115200);
}
void loop(){
if (Serial.available()){ //Espera carácter
char car = Serial.read(); //Lee carácter enviado y lo borra del buffer
Serial.println(car); //Imprime carácter enviado
}
}
Ejemplo 2
En este segundo ejemplo usamos una variable tipo byte para capturar carácter.
void setup(){
Serial.begin(115200);
}
void loop(){
if (Serial.available()){ //Espera carácter
byte car = Serial.read(); //Lee carácter enviado y lo borra del buffer
Serial.write(car); //Imprime caracter enviado
Serial.print(" = ");
Serial.println(car); //Imprime código ASCII carácter enviado
}
}
Ejemplo 3
Es este ejemplo capturaremos varios caracteres y los almacenamos uno a uno en una variable tipo String.
String frase = "";
void setup(){
Serial.begin(115200);
}
void loop(){
while (Serial.available()){
char caracter = Serial.read();
frase.concat(caracter);
delay(10);
}
if (frase != ""){
Serial.println(frase);
frase = "";
}
}
Ejemplo 4
Este ejemplo recibe una matriz de ints.
int datos[10];
void setup(){
Serial.begin(115200);
}
void loop(){
if (Serial.available() >= 10 * sizeof(datos[0])){
Serial.readBytes((byte*)datos, 10 * sizeof(datos[0]));
}
}
Vea también
- Serial
- Serial.begin()
- Serial.peek()
- Serial.available()
- Serial.print()
- Serial.println()
- Serial.write()
- Serial.end()
Referencias
- Cadena de texto por puerto serie -Luis Llamas
- Matriz por puerto serie - Luis Llamas