Mi trovo difronte ad un ennesimo problema a cui forse uno di voi saprà darmi lumi.
Ho creato un piccolo client tcp che si collega alla porta 1501 ad una macchina a cui devo inviare dei comandi in codice hex, e fino a qui nessun problema.....
Creo un array in cui inserisco la sequenza di dati in hex da inviare alla macchina
byte Richiesta[] = {0xfe, 0x00, 0xe8, 0x01, 0xe9, 0xff}; //Valori per richiesta stato macchina.
invio i dati alla macchina in questo modo:
client.write(Richiesta,6);
La macchina esegue correttamente tutti i comandi che gli invio, il mio problema sta nella ricezione dei dati dalla macchina, infatti io mi aspetto di ricevere i dati in questo modo:
FE0E814D6163726F5F466C61740C1FF
Mentre dalla seriale leggo:
FFFFFFFE0FFFFFFE814D6163726F5F466C61740FFFFFFC1FFFFFFFF
per leggere i dati ricevuti uso:
if (client.available()) {
char c = client.read();
Serial.print(c,HEX);
}
Per quale motivo mi trovo tutti quegli FF in piu nella ricezione?
Devo poi inserire i dati ricevuti in un array, in quanto solo alcuni dei valori devono essere modificati, ovvero i primi tre, e l'ultimo che e uguale alla somma di tutti i precedenti, per sapere quanti valori ho ricevuto ho usato questo metodo:
if (client.available()) {
char c = client.read();
Serial.print(c,HEX);
NtxtMsg += c;
Serial.println(NtxtMsg.length());
Serial.print(" ");
}
Dalle prove che ho fatto il numero che mi viene indicato e corretto, ma se qualcuno ha metodi migliori da suggerirmi.....
grazie!!!