Número de elementos de un array de enteros introducido por puerto serie

Buenas tarde. Agradecido de pertenecer a este foro. No he visto foro de presentaciones, si no es así os pido disculpas por no hacerlo.

El caso es que acudo a vosotros por que por más que busco, pruebo y me rompo la cabeza, no soy capaz de hacer lo que pretendo con arduino…

El código es este:

void fijar_hora()
{
  do {Serial.print("Introduce hora y minutos. "); 
        Serial.println("Formato 24 horas (hhmm)");}
  while (!Serial.available());
  int introducirhora[4];                                          // Matriz de bytes que almacenará los valores ingresados.  
  if (Serial.available()>0)

leer_hora:; 
 {memset(introducirhora,0,sizeof(introducirhora));                // La función "memset" borra el contenido del array  "introducirhora" desde la posición 0 hasta el final sizeof.
  int i;
  for (i = 0;i<4;i++)
  { introducirhora[i]= Serial.read();                             // Lee el byte entrante y lo almacena en la posición i.
  int num0 = introducirhora[0];
  int num1 = introducirhora[1];
  int num2 = introducirhora[2];
  int num3 = introducirhora[3];
  hora = (num0-48)*10+(num1-48);                                  // Extrae del array el valor correspondiente a las horas.
  minutos = (num2-48)*10+(num3-48);}                              // Extrae del array el valor correspondiente a los minutos.
 }
if ((hora >= 25)||(minutos >=60))                                 // Si algún valor no es un valor correcto, lo indica, pidiendo introducir de nuevo.
 {do {Serial.print("Formato incorrecto. ");
        Serial.print("Introduzca de nuevo. ");
        Serial.println("Formato 24 horas (hhmm)");}
  while(!Serial.available());}
if (Serial.available()>0) 
goto leer_hora;
  }

La función es para poner en hora arduino a través del puerto serie. Funciona correctamente, lo único

que no consigo hacer es lo siguiente: Como veis el formato para introducir la hora es hhmm 
(4 números introducidos por el puerto serie), lo que pretendo hacer es que si en lugar de 
4 datos, se introdujeran menos o más (por olvido u error), me lo detecte como formato 
incorrecto. ¿Alguna idea?. 

He intentado "sizeof" con "sizeof(introducirhora)/sizeof(introducirhora[0]"
y nada, no lo consigo. También he probado con el comando "length" y tampoco, pues ésta solo 
vale para string, no para array de enteros...en fin....Llevo unos pocos de días atascado en 
esto buscando por mil sitios y no salgo de ahí. 

Agradecería ayuda. 

Gracias.
Saludos.

vas a poner en hora tu arduino, usando que librería?
Si usas time, el procedimiento ya esta hecho
Si buscas las librerías hay ejemplos que lo hacen
Esta es la librería Time. Dentro encontrarás un ejemplo (luego de instalarla) que se llama TimeSerial.ino
Este es el código

/* 
 * TimeSerial.pde
 * example code illustrating Time library set through serial port messages.
 *
 * Messages consist of the letter T followed by ten digit time (as seconds since Jan 1 1970)
 * you can send the text on the next line using Serial Monitor to set the clock to noon Jan 1 2013
 T1357041600  
 *
 * A Processing example sketch to automatically send the messages is included in the download
 * On Linux, you can use "date +T%s\n > /dev/ttyACM0" (UTC time zone)
 */ 
 
#include <TimeLib.h>

#define TIME_HEADER  "T"   // Header tag for serial time sync message
#define TIME_REQUEST  7    // ASCII bell character requests a time sync message 

void setup()  {
  Serial.begin(9600);
  while (!Serial) ; // Needed for Leonardo only
  pinMode(13, OUTPUT);
  setSyncProvider( requestSync);  //set function to call when sync required
  Serial.println("Waiting for sync message");
}

void loop(){    
  if (Serial.available()) {
    processSyncMessage();
  }
  if (timeStatus()!= timeNotSet) {
    digitalClockDisplay();  
  }
  if (timeStatus() == timeSet) {
    digitalWrite(13, HIGH); // LED on if synced
  } else {
    digitalWrite(13, LOW);  // LED off if needs refresh
  }
  delay(1000);
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year()); 
  Serial.println(); 
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}


void processSyncMessage() {
  unsigned long pctime;
  const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013

  if(Serial.find(TIME_HEADER)) {
     pctime = Serial.parseInt();
     if( pctime >= DEFAULT_TIME) { // check the integer is a valid time (greater than Jan 1 2013)
       setTime(pctime); // Sync Arduino clock to the time received on the serial port
     }
  }
}

time_t requestSync()
{
  Serial.write(TIME_REQUEST);  
  return 0; // the time will be sent later in response to serial mesg
}

Hola.

Uso la librería Time.h

La función que me muestra la hora es la siguiente:

    {
     Serial.println ();                                 // Rutina para calcular y mostrar fecha y hora por pantalla, gracias a la librería <Time.h>
     Serial.println ();
     time_t t = now();

     Serial.print("--------------------");
     Serial.println("------------------");
     Serial.print ("Fecha:");
     Serial.print(day(t));
     Serial.print(+ "/") ;
     Serial.print(month(t));
     Serial.print(+ "/") ;
     Serial.print(year(t)); 
     Serial.print( " ") ;
     Serial.print ("Hora:");
     Serial.print(hour(t));  
     Serial.print(+ ":") ;
     Serial.println(minute(t));
     Serial.print("--------------------");
     Serial.println("------------------");
     }

Eso ya está hecho, y no quisiera cambiarlo. No voy a utilizar RTC ni nada, solo quiero que lo muestre por el puerto serie. Lo que pretendo es que en la función “void fijar_hora” me detecte cuando en lugar de introducir 4 datos por el puerto serie correspondiente a “hhmm”, si por error introduzco 1, 2, 3 o más de 4. Me indique formato incorrecto.

Por lo que veo es la misma librería, creo, solo que algo modificada. Básicamente, lo que pretendo es que arduino me detecte el numero de elementos que le introduzco por el puerto serie. Esto es lo que no consigo, almacenar de alguna forma en una variable el número de elementos del array, es decir,
si son las 19:30, conecto arduino, me pide la hora e introduzco “193” que me detecte que no son 4
elementos los introducidos y me indique formato incorrecto.

Saludos.