Diferencia entre revisiones de «Serial.write()»
De ArduWiki
(→Referencias) |
|||
(No se muestran 18 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
− | Envia datos binarios al puerto serie. Esta información se envía como un byte o serie de bytes | + | Envia datos binarios ("crudos") al puerto serie. Esta información se envía como un byte o serie de bytes. |
== Sintaxis == | == Sintaxis == | ||
Línea 10: | Línea 10: | ||
== Parametros == | == Parametros == | ||
− | ;val: Valor como un solo byte. | + | ;val: Valor como un solo [[byte]] o variable (el byte menos signficativo en caso de ser más grande). |
− | ;str: Cadena como una serie de bytes. | + | ;str: Cadena como una serie de bytes ([[string]]). |
− | ;buf: Matriz enviada como una serie de bytes. | + | ;buf: Matriz enviada como una serie de bytes ([[byte]]*). |
− | ;len: Largo de la cadena | + | ;len: Largo de la cadena ([[int]]). |
== Retorno == | == Retorno == | ||
− | + | La cantidad real de bytes que se enviaron con éxito ([[int]]). | |
== Advertencia == | == Advertencia == | ||
Para enviar los caracteres que representan los dígitos de un número, use la función [[Serial.print()]] en su lugar. | Para enviar los caracteres que representan los dígitos de un número, use la función [[Serial.print()]] en su lugar. | ||
+ | |||
+ | == Comentarios == | ||
+ | * Todos los datos enviados a través del puerto serie se envían como 0 y 1. La diferencia entre '''write()''' y [[Serial.print()|print()]] es cómo lo que se está enviando se '''interpreta'''. | ||
+ | * Otro aspecto a tener en cuenta es que '''write()''' trabaja con byte (8 bits) por eso Serial.write(65); produce lo mismo que Serial.write(321); o Serial.write(577); es decir la letra A que corresponde al ASCII 65 y 321 - 256 = 65. Recuerda 2^8 = 256. | ||
+ | * Es distinto usar Serial.write("65"); Serial.write("321"); y Serial.write("577"); que es exactamente igual a Serial.print(65); Serial.print(321); y Serial.print(577);. | ||
== Ejemplo 1 == | == Ejemplo 1 == | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
Serial.write(65); //A | Serial.write(65); //A | ||
+ | Serial.write("65"); //65 | ||
Serial.write("Hola mundo"); //Hola mundo | Serial.write("Hola mundo"); //Hola mundo | ||
n = Serial.write("Hola mundo"); //Retorna el largo de cadena | n = Serial.write("Hola mundo"); //Retorna el largo de cadena | ||
+ | |||
+ | Serial.write(0x48); //H | ||
+ | Serial.write(0x45); //E | ||
+ | Serial.write(0x4C); //L | ||
+ | Serial.write(0x4C); //L | ||
+ | Serial.write(0x4F); //O | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Línea 32: | Línea 44: | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
− | Serial.write(65); | + | void setup(){ |
− | Serial.print(65); | + | Serial.begin(115200); |
+ | Serial.write(72); //H | ||
+ | Serial.write(79); //O | ||
+ | Serial.write(76); //L | ||
+ | Serial.write(65); //A | ||
+ | Serial.print(72); //72 | ||
+ | Serial.print(79); //79 | ||
+ | Serial.print(76); //76 | ||
+ | Serial.print(65); //65 | ||
+ | } | ||
+ | void loop(){ | ||
+ | //nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | Es importante resaltar la diferencia entre usar '''Serial.write()''' vs [[Serial.print()]] o [[Serial.println()]], mira este ejemplo. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup(){ | ||
+ | Serial.begin(115200); | ||
+ | byte x = 'A'; | ||
+ | Serial.write(x); //A | ||
+ | Serial.print(" = "); | ||
+ | Serial.println(x); //65 código ASCII de A | ||
+ | } | ||
+ | void loop(){ | ||
+ | //nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 4 == | ||
+ | Enviar una serie de [[byte]]s por puerto serie. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | const byte datos[] = {0,1,2,3,5,7,11,13}; | ||
+ | const size_t largo = sizeof(datos)/sizeof(datos[0]); | ||
+ | |||
+ | void setup(){ | ||
+ | Serial.begin(115200); | ||
+ | Serial.write(datos, largo); | ||
+ | } | ||
+ | void loop(){ | ||
+ | //nada | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Serial</categorytree> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Referencias == | == Referencias == | ||
+ | * [https://aprendiendoarduino.wordpress.com/tag/comunicacion-serie/ Comunicación serie] - Enrique Crespo | ||
+ | * [https://arduino.stackexchange.com/questions/10088/what-is-the-difference-between-serial-write-and-serial-print-and-when-are-they Difference between serial write and serial print] - Stack Exchange | ||
− | [[Category: | + | [[Category:Serial]] |
Revisión actual del 00:07 19 jul 2019
Contenido
Descripción
Envia datos binarios ("crudos") al puerto serie. Esta información se envía como un byte o serie de bytes.
Sintaxis
Serial.write(val); Serial.write(str); Serial.write(buf, len);
Parametros
- val
- Valor como un solo byte o variable (el byte menos signficativo en caso de ser más grande).
- str
- Cadena como una serie de bytes (string).
- buf
- Matriz enviada como una serie de bytes (byte*).
- len
- Largo de la cadena (int).
Retorno
La cantidad real de bytes que se enviaron con éxito (int).
Advertencia
Para enviar los caracteres que representan los dígitos de un número, use la función Serial.print() en su lugar.
Comentarios
- Todos los datos enviados a través del puerto serie se envían como 0 y 1. La diferencia entre write() y print() es cómo lo que se está enviando se interpreta.
- Otro aspecto a tener en cuenta es que write() trabaja con byte (8 bits) por eso Serial.write(65); produce lo mismo que Serial.write(321); o Serial.write(577); es decir la letra A que corresponde al ASCII 65 y 321 - 256 = 65. Recuerda 2^8 = 256.
- Es distinto usar Serial.write("65"); Serial.write("321"); y Serial.write("577"); que es exactamente igual a Serial.print(65); Serial.print(321); y Serial.print(577);.
Ejemplo 1
Serial.write(65); //A
Serial.write("65"); //65
Serial.write("Hola mundo"); //Hola mundo
n = Serial.write("Hola mundo"); //Retorna el largo de cadena
Serial.write(0x48); //H
Serial.write(0x45); //E
Serial.write(0x4C); //L
Serial.write(0x4C); //L
Serial.write(0x4F); //O
Ejemplo 2
Es importante resaltar la diferencia entre usar Serial.write() vs Serial.print() o Serial.println(), mira este ejemplo.
void setup(){
Serial.begin(115200);
Serial.write(72); //H
Serial.write(79); //O
Serial.write(76); //L
Serial.write(65); //A
Serial.print(72); //72
Serial.print(79); //79
Serial.print(76); //76
Serial.print(65); //65
}
void loop(){
//nada
}
Ejemplo 3
Es importante resaltar la diferencia entre usar Serial.write() vs Serial.print() o Serial.println(), mira este ejemplo.
void setup(){
Serial.begin(115200);
byte x = 'A';
Serial.write(x); //A
Serial.print(" = ");
Serial.println(x); //65 código ASCII de A
}
void loop(){
//nada
}
Ejemplo 4
Enviar una serie de bytes por puerto serie.
const byte datos[] = {0,1,2,3,5,7,11,13};
const size_t largo = sizeof(datos)/sizeof(datos[0]);
void setup(){
Serial.begin(115200);
Serial.write(datos, largo);
}
void loop(){
//nada
}
Vea también
Referencias
- Comunicación serie - Enrique Crespo
- Difference between serial write and serial print - Stack Exchange