Ciao a tutti,
sto creando un sistema di controllo accessi che apre una porta in seguito al passaggio del badge.
I badge autorizzati sono tutti definiti in un file txt caricto su una sd, putroppo però sto avendo qualche difficoltà a confrontare i valori presenti sulla sd con quelli letti dal rfid.
Per leggere ogni riga del file txt ho usato il comando:
sdrigaString = myFile.readStringUntil('\n');
mentre per leggere il valore del badge ho usato la libreria rdm6300.h e il comando seguente:
rfidString = rdm6300.get_tag_id();
Stampando entrambe le variabili string sulla seriale, i valori vengono mostrati correttamente, ma anche se risultano identici, se li metto a confronto nel seguente if, non risulta mai vero:
if (rfidString == sdrigaString)
Non riesco a capire dove sta il problema.
Grazie in anticipo per il vostro aiuto.
Buonasera e benvenuto nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazioneNELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
// Dall'header della libreria che stai usando:
uint32_t get_tag_id(void);
Stai confrontando una String con un unsigned long ed è quindi normale che l'if non sia mai vero.
La strada più breve è sfruttare è probabilmente usare la funzione toInt() della classe String.
Metti lo sketch completo ed eventualmente anche l'output del monitor seriale dove stampi sia il valore recuperato dalla SD che quello del lettore RFID.
Ho caricato lo sketch (ancora da ottimizzare), file di output e file txt presente sulla SD.
Per leggere la SD sto usando una Ethernet Shield in attesa del modulo SD dedicato.
Il riconoscimento della "card programmazione" avviene correttamente, mentre il confronto tra rfid e valore letto dalla sd avviene nel void checkCard()
Grazie
Grazie per avermi indirizzato sulla strada giusta!
Ho dichiarato la variabile rfidString come unsigned long e ora utilizzando il tuo if, quando diventa vero, esegue le instruzuoni al suo interno.
Il problema è stato risolto!!
Grazie ancora