leggendo il codice UID da un badge rfid e mi sembra che venga fatto correttamente, vorrei visualizzarlo su un display 4*20. Purtroppo però visualizzo delle cifre che cambiano velocemente. Mi spego facendo riferimento al codice sotto:
la sub Ceck_ric_reader_rfid , la richiamo nel loop principale, ma ho provato anche nell interrupt del timer0. Quando nella sub arrivo a fare Lcd "Numero: " ; Ar(8) ; Ar(9) ; Ar(10) ; Ar(11), sono sicuro che le variabili sono quelle che mi servono perchè ho fatto l'analisi dei byte che ricevo ed anche il cecksum con gli XOR. Non capisco però perchè visualizzo delle cifre che cambiano in continuazione. C'è da dire che se richiamo la sub nel timer0, a volte visualizzo il UID tutto a zero a volte leggo il codice corretto. Mi potete dare qualche ragguaglio?
Grazie
- Code: Select all
Sub Ceck_ric_reader_rfid(ar() As Byte)
Dim Mem_pres As Bit
Dim Mem_ass As Bit
If Avvenuto_timeout = 1 Then
Avvenuto_timeout = 0
Mem_pres = 0
Mem_ass = 0
End If
If Ar(1) = &HDE And Ar(2) = &H13 And Ar(3) = &HED And Ar(4) = &H05 And Ar(5) = &H08 And Ar(6) = &H00 And Ar(7) = &H34 Then
'Ricezione del UID della scheda
'Controlliamo il RSP_EXT. Per esempio: 13 E2 0A 87 83 dove 83 è il cecksum di 13-E2-0A-87
Dim Btempbyte As Byte
Btempbyte = Ar(8) Xor Ar(9)
Btempbyte = Ar(10) Xor Btempbyte
Btempbyte = Ar(11) Xor Btempbyte
Btempbyte = Btempbyte + 7
If Btempbyte = Ar(12) Then
If Mem_pres = 0 Then Cls
Mem_pres = 1
Mem_ass = 0
Locate 1 , 3
Lcd "Card Presente"
Locate 2 , 1
Lcd "Numero: " ; Ar(8) ; Ar(9) ; Ar(10) ; Ar(11)
Else
Goto Msg_error
End If
Else
Goto Msg_error
End If
Goto Fine_ceck_ric_reader_rfif 'salta alla fine senza ciclare l'errore
Msg_error:
If Mem_ass = 0 Then Cls
Mem_ass = 1
Mem_pres = 0
Locate 1 , 4
Lcd "Card Assente"
Locate 2 , 2 'clear the LCD display
Lcd "Avvicinare la card"
Locate 3 , 5
Lcd "al lettore"
Fine_ceck_ric_reader_rfif:
End Sub