Dar un valor de dos o más dígitos en comunicación serial

Muy buenas, me sorprende no haber sido capaz de encontrar información para este problema ya que deduzco que debe ser una práctica bastante frecuente, pero como ya dije no he logrado sacar nada en claro tras mucho buscar por la web.
Supongamos que tengo una variable v a la que le quiero asignar un valor mediante Serial.read(). Si el valor está entre 0 y 9 es muy fácil: v = Serial.read()-48 (por el tema del ASCII). Pero si quiero asignarle por ejemplo el 43, llegaría primero un 4 y luego un 3 y no un valor 43. Para salir del paso, lo que he hecho ha sido leer dos veces asignando una variable por valor y luego descomponer el número, por ejemplo 23 = 2*10 + 3. Esta solución a pesar de ser una chapuza funciona muy bien para salir del paso con sencillez, pero cuando la dificultad y complejidad de los proyectos aumenta ligeramente ya comienza a dar muchos dolores de cabeza. Por eso me preguntaba si alguien tendría idea de cómo se hace realmente.
Un saludo y muchas gracias de antemano.

Hola,
sobre eso hay mucho escrito. Puedes enviar los valores en forma de cadena de texto, y luego convertirlo a int, float o lo que te convenga.
Por ejemplo, aquí

se explica cómo enviar cadenas char

O puedes enviar los números, booleanos, caracteres, cadenas, etc. como datos byte a byte almacenándolos en estructuras struct y union.

http://giltesa.com/wp-content/uploads/2013/03/union.txt
http://giltesa.com/wp-content/uploads/2013/03/union-struct.txt

Saludos!

También puedes probar, en lugar de Serial.read(), Serial.parseInt() o Serial.parseFloat(). Estas funciones leen caracteres de Serial hasta componer un entero o flotante.
Por ejemplo, si enviamos por Serial "123.56,1230" y enter, y el siguiente código:

float a=parseFloat(); // a debería ser 123.56
int b=parseInt(); // i debería ser 1230

Muchas gracias por los aportes, es justo lo que buscaba, sobre todo lo último. No había leído nunca sobre la existencia de esas funciones pero si funcionan no os imagináis lo fácil que va a ser mi vida a partir de ahora, jajaja.
Un saludo y muchas gracias de nuevo :slight_smile:

curro92:

Hola, esto no lo he probado, pero me ha parecido bastante util para el tratamiento de cadenas. Simplemente poniéndole como caracter terminador el símbolo "/0" o "/n"