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