A continuacion os pego un codigo que lo que pretende es leer una cadena del tipo !10:55# como veis el codigo, para empezar, es sencillo pero en el monitor serie solo salen ceros del tipo 00:00....La idea es almacenar la cadena por medio del bucle while y a continuacion leer las partes del aaray que me interesen. Gracias.
¿Estás seguro de que te salen sólo ceros? Inicialmente por supuesto ya que el array estará a cero pero cuando introduces datos en la consola te aparecerán. Eso sí, como el array lo has hecho tipo byte te aparecerán los códigos en decimal de los byte introducidos. Para que veas los caracteres tienes que crear el array tipo char. Y por último si quieres introducir más de una trama y que la imprima tendrás que resetear a cero el contador. El código quedará así:
Mas precisamente, igual que un unsigned char
El problema es que puede que Serial.print esté sobrecargado con funciones distintas según se le pase un char o byte, tampoco he mirado el fuente, pero no tengo mucho tiempo...
a lo mejor es que el código no hace las cosas como piensas que debe hacerlo
Para empezar, si no hay ningún dato en el puerto serie, no entra en el while, y va a escribir directamente lo que hay en tramaleida.
cuando introduzcas 2 caracteres verás el segundo como el primero de la linea.
si envías al puerto serie 1234567, deberías ver
00:00 (o lo que coincida que haya en ese array en ese momento, nunca se sabe)
00:00
.... (hasta que envías 2)
20:00
20:00
.... (hasta que envías 3)
23:00
...
23:50
....
23:56
y cuando llegues a 7, vuelta a empezar (pero ahora si sabes lo que hay en el array)
prueba a hacer algo como :
define una variable que sirva para marcar que hay datos válidos para enviar, inicializada a algo que sea no
cuando llegues a 7 datos recibidos, pon esa variable a si (dentro del while)
cuando hay datos para enviar, escribe la salida, y pones otra vez la variable a no para que arduino sepa que no hay que enviar nada mas hasta llenar el array tramaleida otra vez
recuerda que loop() empieza otra vez casi inmediatamente después de haber terminado