Problema controllo valori ricevuti da Server....

Salve a tutti...
Vi espongo subito il problema, da un po di tempo mi sto dedicando ad un progetto che comunica con una macchina via tcpip (l'Arduino fa da client alla macchina Server), i due comunicano tramite l' invio di treni di dati Esadecimali.
Ormai riesco perfettamente a inviare alla macchina vari tipi di comandi, rielaborare i dati ricevuti per poi re inviarli alla macchina, quello che sto tentando di fare da un po di giorni e che invece non mi riesce e di controllare i dati che ricevo dalla macchina(mi spiego meglio!):
Io invio una richiesta alla macchine, e la sua risposta la inserisco in un array, in modo da poter controllare i dati che ricevo, infatti conosco sempre i primi 4 valori che inserisco nel mio array e l'ultimo 0xff.
Non riesco pero a fare un controllo co un if

 if (client.available() >0) {
 
  unsigned char c = client.read();

    NtxtMsg += c;
  
 Serial.print(NtxtMsg.length());
 Serial.print(" ");
  i = NtxtMsg.length(); 
  
  Data[i-1] = c;
   Serial.println(c, HEX);
   
     
   Serial.print("Stampo i Valori di Data[0] ");
   Serial.println(Data[0], HEX);
   Serial.print("Stampo i Valori di Data[1] ");
   Serial.println(Data[1], HEX);
   Serial.print("Stampo i Valori di Data[2] ");
   Serial.println(Data[2], HEX);
   Serial.print("Stampo i Valori di Data[3] ");
   Serial.println(Data[3], HEX);

// TEST RICEZIONE

 if (byte(Data[0])==byte(0xfe)&&byte(Data[1])==byte(0x00)&&byte(Data[2])==byte(0xe8)&&byte(Data[3])==byte(0x01)&&byte(Data[i])==byte(0xff)){
    Serial.println("Ricevuta Macro in esecuzione");
    
  }
 
  }
  else
{
   NtxtMsg = ""; // Resetto il contatore dei valori ricevuti
  
}

Questa e l' ultima prova che ho fatto ma nulla, ho provato in vari modi a scrivere l' if ma nulla di fatto.

 if ((Data[0])==(0xfe)&&(Data[1])==(0x00)&&(Data[2])==(0xe8)&&(Data[3])==(0x01)&&(Data[i])==(0xff)){

Ho provato anche ad inserire i valori esadecimali dentro a delle variabili tipo unsigned char b1=(oxfe); ma nulla non funziona.

Dove sbaglio ? qualche idea Grazie in anticipo BY

I valori stampati sul Terminale attraverso la USB sono corretti (quelli che ti aspetti)? Anche il Data*???*
Oltre che metterei le parentesi in modo diverso anche se non dovrebbe cambiare niente:
* *if ((Data[0]==0xfe)&&(Data[1]==0x00)&&(Data[2]==0xe8)&&(Data[3]==0x01)&&(Data[i]==0xff)){* *
Se ho capito bene l' ultimo elemento del Array non é Data[ i ] ma Data[ i-1 ].
Ciao Uwe

Uwe GRAZZZZZZZZIEEE!!!!

Avevi ragione bastava metttere i-1 ed e partito perfettamente.

 if ((Data[0] == 0xfe)&&(Data[1] == 0x00)&&(Data[2] == 0xe8)&&(Data[3] == 0x01)&&(Data[i-1] == 0xff)){

Per rispondere cmq alla tua domanda iniziale, visto che avevo aperto un post tempo fa su questo argomento, per avere i valori corretti nel terminale
ho impostato l'array come unsigned char altrimenti alcuni valori li scriveva correttamente ma alcuni venivano preceduti da una serie di fffffffff, cambiano
la dichiarazione ho risolto.

grazie ancora By VIC_20

Felice di averti potuto aiutare. 8)
Ciao Uwe