Go Down

Topic: confronto stringa esadecimale con strcmp()  (Read 231 times) previous topic - next topic

Roberto70

Salve, mi sapete dire dove sbaglio ?

Ho necessità di leggere alcune stringhe in esadecimale e ho fatto questo programma di test.
Sembra funzionale ma solo fino al terzo Byte. Sembra che dal quarto byte in poi non viene fatta nessuna verifica. Grazie anticipatamente

[
Code: [Select]
#include <string.h>

byte variable[11];
byte index = 0;
byte flag = 0;

byte coderead1 [] = {0x7E, 0x09, 0x00, 0x03, 0x01, 0x73, 0x41, 0x00, 0x18, 0xD7, 0xA7};
byte coderead2 [] = {0x7E, 0x09, 0x00, 0x03, 0x01, 0x73, 0x01, 0x00, 0x18, 0x97, 0x27};


//===================================
//=              SETUP              =
//===================================
void setup() {
  Serial.begin(9600);
  delay(2000);
  Serial.println("-----START----");
  pinMode(3, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  flag =0;
} //
//===================================
//=              LOOP               =
//===================================
void loop() {
             digitalWrite(3, LOW);
             while (Serial.available() > 0)
                    {
                    byte b = Serial.read();
                    variable[index++] = b;
                    }
                    if (index == 11)
                         {
                          index = 0;
                          if (strcmp(coderead1, variable) == 0)
                            {
                            Serial.print("Corretto !!!!!");
                            Serial.println();
                            digitalWrite(2, HIGH);
                            delay(1000);
                            digitalWrite(2, LOW);
                       
                            }
                 else
                            {
                            Serial.print("ERRATO");
                            Serial.println();
                           
                            }
                          }
   }

gpb01

Prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ...

... poi, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Il tuo post è già stato spostato nell'opportuna sezione del forum "Italiano"dove puoi proseguire la discussione.

P.P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)
Search is Your friend ... or I am Your enemy !

torn24

Invece di presentarsi ha posto la domanda nel forum inglese e ha trovato anche la risposta :o  :o

gpb01

#3
May 15, 2019, 04:41 pm Last Edit: May 15, 2019, 04:41 pm by gpb01
Invece di presentarsi ha posto la domanda nel forum inglese e ha trovato anche la risposta :o  :o
La risposta era banale (0x00 è il terminatore di stringa) ... ma visto che fa "Cross Posting", il thread intanto viene chiuso e poi cancellato, dopo di che ... vedremo in futuro per l'utente.

Guglielmo
Search is Your friend ... or I am Your enemy !

Go Up