Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

codice uid esadecimale con zero iniziale

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] codice uid esadecimale con zero iniziale

Messaggioda Foto Utentemiomiomio » 24 nov 2017, 13:44

ciao a tutti,
Vi scrivo perché ho realizzato a livello molto amatoriale un lettore di card nfc grazie al vostro aiuto.
Ho notato però che quando una card ha il codice uid che inizia con 0 (zero in esadecimale) omette di trascrivere in seriale lo zero.
invece io avrei necessità che venga riportata ogni cifra anche se zero ma non so come intervenire.
Potreste darmi una mano?
Grazie.
questo è il mio codice relativo alla lettura dell'uid

Codice: Seleziona tutto
#include<SPI.h>
#include<MFRC522.h>
#include<SoftwareSerial.h>
#define SS_PIN 4
#define RST_PIN 9
#define No_Of_Card 3
SoftwareSerial mySerial(8,9);   
MFRC522 rfid(SS_PIN,RST_PIN);
MFRC522::MIFARE_Key key;


byte i;
byte id_temp[3][3];


String inStringHex;


void setup()
{


  Serial.begin(9600);
  mySerial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  for(byte i=0;i<6;i++)
  {
    key.keyByte[i]=0xFF;
  }
  }


void loop() {

inStringHex="";
  if(!rfid.PICC_IsNewCardPresent())
  return;
  if(!rfid.PICC_ReadCardSerial())
  return;
  for(i=0;i<4;i++)
    {
   id_temp[0][i]=rfid.uid.uidByte[i];
inStringHex += String(rfid.uid.uidByte[i], HEX);
Serial.print(rfid.uid.uidByte[i], HEX);
   }


      // Halt PICC
  rfid.PICC_HaltA();
  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();


}

Avatar utente
Foto Utentemiomiomio
3 2
 
Messaggi: 29
Iscritto il: 8 gen 2013, 22:09

0
voti

[2] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto Utenteluxinterior » 24 nov 2017, 14:17

Senza sapere nulla NFC io suggerisco questa soluzione
letto il codice quindi conoscendo la sua lunghezza se necessario lo fai precedere da zeri quanto basta.
Per farla ad occhi chiusi inizializzi una stringa della lunghezza che ti serve per l'UID con tutti zeri poi letto il codice, quindi conoscendo la lunghezza, copi a partire da un offset il codice nella stringa. In questo modo non hai sorprese se gli zeri iniziali sono due o più funziona lo stesso

Scusa ho parlato di stirnghe ma è analog per i vettori scegli tu il formato del dato che ti serve
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

-1
voti

[3] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto Utentebiget » 24 nov 2017, 14:21

è normale dato che lo tratti come numero e non come stringa

se proprio vuoi farlo con for:

Codice: Seleziona tutto
for(i=0;i<4;i++)
{
   if ( rfid.uid.uidByte[i] < 16 )
              inStringHex += "0" + String(rfid.uid.uidByte[i], HEX);
   else inStringHex += String(rfid.uid.uidByte[i], HEX);
}//for

Serial.print(inStringHex);
Avatar utente
Foto Utentebiget
1.155 3 7
CRU - Account cancellato su Richiesta utente
 
Messaggi: 464
Iscritto il: 16 dic 2016, 19:47

0
voti

[4] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto Utentemiomiomio » 24 nov 2017, 17:46

grazie davvero!
Sembra funzionare!
egbit praticamente questo codice inserisce lo zero iniziale qualora sia presente giusto?
Il ciclo for lo uso per creare una stringa unica con le cifre della card.
Sbaglio? nel senso che se non ho capito male la lettura dell'uid avviene per blocchi di 2 cifre?
se lo zero fosse ad un blocco centrale verrebbe aggiunto?
Avatar utente
Foto Utentemiomiomio
3 2
 
Messaggi: 29
Iscritto il: 8 gen 2013, 22:09

-1
voti

[5] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto Utentebiget » 24 nov 2017, 19:34

Print ... HEX prende il tuo byte e lo converte giustamente in esadecimale

in esadecimale i numeri da 0 a 15 hanno bisogno di una sola cifra per essere rappresentati

(0-F) e quindi se il byte contiene da 0 a 15 Print ... HEX da come risultato 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F non lo costringe nessuno a scrivere i numeri usando due cifre :mrgreen: per di piu' sprecare spazio per degli zeri co sta crisi

posizione: non importa inizio, centro, fine, estrema destra, estrema sinista , medio oriente funziona comunque :mrgreen:
Avatar utente
Foto Utentebiget
1.155 3 7
CRU - Account cancellato su Richiesta utente
 
Messaggi: 464
Iscritto il: 16 dic 2016, 19:47

0
voti

[6] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto Utentemiomiomio » 27 nov 2017, 0:11

egbit ha scritto:per di piu' sprecare spazio per degli zeri co sta crisi

posizione: non importa inizio, centro, fine, estrema destra, estrema sinista , medio oriente funziona comunque :mrgreen:
:D :D :D
=D> =D> =D>
grazie, ho capito!
Grazie ancora!
Avatar utente
Foto Utentemiomiomio
3 2
 
Messaggi: 29
Iscritto il: 8 gen 2013, 22:09

0
voti

[7] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto UtenteMassimoB » 27 nov 2017, 1:35

se fosse un tanto al chilo sarei d'accordo ma pensa se lavorassimo in conversione di dato con tanto di mantissa eccc.

e qui non è detto che il tuo esadecimale Byte sia così scontato... sai tipo per esempio complemento a due e compagnia cantante

la crisi portroppo colpisce tutti tranne la logica delle basi di conversione
MCSA Windows Server 2012 R2
Cisco CCNA R&S - Cisco CCNA Security - Cisco CCNA Cyber Ops
CompTia A+ - CompTia Linux+ - CompTIA Systems Support Specialist CSSS
CompTia Pentest+ LPIC-1 - VCP VMware - Cisco CCNP Enterprise
Avatar utente
Foto UtenteMassimoB
14,2k 6 12 13
Expert free
 
Messaggi: 3163
Iscritto il: 28 ott 2012, 9:56
Località: Milano

0
voti

[8] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto UtenteMassimoB » 27 nov 2017, 1:37

se dovessi trattare gli 0 e 1 li tratterei come tali con le dovute maschere di conversione booleane
MCSA Windows Server 2012 R2
Cisco CCNA R&S - Cisco CCNA Security - Cisco CCNA Cyber Ops
CompTia A+ - CompTia Linux+ - CompTIA Systems Support Specialist CSSS
CompTia Pentest+ LPIC-1 - VCP VMware - Cisco CCNP Enterprise
Avatar utente
Foto UtenteMassimoB
14,2k 6 12 13
Expert free
 
Messaggi: 3163
Iscritto il: 28 ott 2012, 9:56
Località: Milano

0
voti

[9] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto UtenteMassimoB » 27 nov 2017, 1:45

microsoft per esempio definisce nella certificazione 70-483 delle regole su come trattare le variabili
MCSA Windows Server 2012 R2
Cisco CCNA R&S - Cisco CCNA Security - Cisco CCNA Cyber Ops
CompTia A+ - CompTia Linux+ - CompTIA Systems Support Specialist CSSS
CompTia Pentest+ LPIC-1 - VCP VMware - Cisco CCNP Enterprise
Avatar utente
Foto UtenteMassimoB
14,2k 6 12 13
Expert free
 
Messaggi: 3163
Iscritto il: 28 ott 2012, 9:56
Località: Milano

0
voti

[10] Re: codice uid esadecimale con zero iniziale

Messaggioda Foto Utentemiomiomio » 30 nov 2017, 19:21

ho comprato questo
ALLARME 5V BUZZER ARDUINO cicalino oscillatore integrato 3,1KHz piezo circuiti
l'ho collegato al pin 6 + e al gnd -.
Emette un labile clac e basta e non un sonoro beep. Sbaglio qualcosa oppure dovevo prendere un piezobuzzer?
nel codice ho messo:
Codice: Seleziona tutto
pinMode(6, OUTPUT); //buzzer

grazie.
Avatar utente
Foto Utentemiomiomio
3 2
 
Messaggi: 29
Iscritto il: 8 gen 2013, 22:09

Prossimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Google [Bot] e 3 ospiti