Recevoir 2 trames avec un nombre d'octet différent

J’allais trop vite dans les essayes voila pour ça marché pas. Mais la ça marche un grand merci !!
Pour ce qui en aurons besoin:

byte contactO[14] = {85, 0, 7, 7, 1, 122, 213, 8, 1, 128, 91, 112, 0, 1}; // Badge rouge
byte contactF[14] = {85, 0, 7, 7, 1, 122, 213, 9, 1, 128, 91, 112, 0, 1}; // Badge rouge

byte contactA[14] = {85, 0, 7, 7, 1, 122, 213, 0, 1, 128, 91, 112, 0, 1}; // Active alarme

byte mouvement[7] = {85, 0, 10, 7, 1, 235, 165}; // Badge rouge

byte detecteurLu[24];

byte contactLu[21];


int etat = 0;

void setup() {

  Serial1.begin(57600);
  Serial.begin(57600);
}

void loop() {
  byte buffer[24];
  if (Serial1.available())
  {
    int cpt = Serial1.readBytes(buffer, sizeof buffer);
    if (cpt == 21)
    {
      memcpy(contactLu,buffer,21);  // recopie des octets reçus

      boolean contactOuvert = true;
      boolean contactFerme = true;
      boolean contactActive = true;

      for (byte numOctet = 0; numOctet < 14; numOctet++)
      {
        if ( contactLu[numOctet] != contactO[numOctet]) contactOuvert = false;
        if ( contactLu[numOctet] != contactF[numOctet]) contactFerme = false;
        if ( contactLu[numOctet] != contactA[numOctet]) contactActive = false;
      }
      if (contactActive == true)
      {


        switch (etat) {
          case 0:

            Serial.println("Alarme active");
            etat = 1;
            break;
          case 1:
            Serial.println("Alarme desactive");
            etat = 0;
            digitalWrite(4, LOW);
            break;
        }
      }

      if (contactOuvert == true)
      {

        switch (etat) {
          case 0:
            Serial.println("Detection ouverture porte");

            break;
          case 1:
            Serial.println("Alarme intrusion contact");
            digitalWrite(4, HIGH);

            break;
        }
      }
    }
    else
    {
      memcpy(detecteurLu,buffer,24);

      boolean detectionMouv = true;


      for (byte numOctet = 0; numOctet < 7; numOctet++)
      {
        if ( detecteurLu[numOctet] != mouvement[numOctet]) detectionMouv = false;
      }
      if (detectionMouv == true)
      {

        switch (etat) {
          case 0:
            Serial.println("Detection mouvement");

            break;
          case 1:
            Serial.println("Alarme intrusion mouvement");

            break;
        }
      }
    }
  }
}