1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
PROCEDURE GetUIDMifare1K()
//Lecture UID badge Mifare 1K
nCodeRes est un entier
hContext is a int
hCard is a int
hDLL is a int
bufKeyA is a Buffer = 0x60
bufKeyB is a Buffer = 0x61
mszReaders is a Buffer on 255 bytes
ReaderList is a string
CardReaderName is a string
mszGroups is a int = 0
pcchReaders is a int = 255
NullSeparator is a Buffer = 0x00
dwShareMode is a int = 0x01 //connect to the card in exclusive mode (no other connection allowed)
dwPreferredProtocols is a int = 0x0002 // Protocole T1
pdwActiveProtocol is a int
szReader is a string
pioSendPci is a int = 0
pbSendBuffer is a Buffer = 0x040000caff
cbSendLength is a int = 5
pioRecvPci is a int = 0
pbRecvBuffer is a Buffer on 32 bytes
pcbRecvLength is a int = 32
RecvBuffer is a string
dwDisposition is a int = 0x0000 //Leave
//Etablissement contexte Winscard
hDLL = LoadDLL("WinSCard.dll")
SELON Vrai
CAS API("WinSCard.dll","SCardEstablishContext",2,Null,Null,&hContext) = 0 //Contexte établi
nCodeRes = 1
AUTRE CAS
RENVOYER 1
FIN
//Selection lecteur NFC
SI nCodeRes = 1 ALORS //On exécute
SELON Vrai
CAS API("winscard.dll","SCardListReadersA",hContext,mszGroups,&mszReaders,&pcchReaders) = 0 //Selection lecteur NFC OK
ReaderList = mszReaders
CardReaderName = ChaîneSupprime(ReaderList,NullSeparator)
nCodeRes = 2
AUTRE CAS
RENVOYER 2
FIN
FIN
//Connexion badge NFC
SI nCodeRes = 2 ALORS //On exécute
szReader = CardReaderName
SELON Vrai
CAS API("winscard.dll","SCardConnectA",hContext,szReader,dwShareMode,dwPreferredProtocols,&hCard,&pdwActiveProtocol) = 0 ET hCard <> 0 //Handle valide créé pour le badge NFC
nCodeRes = 3
AUTRE CAS
RENVOYER 3
FIN
FIN
//Lecture UID badge
SI nCodeRes = 3 ALORS //On exécute
SELON Vrai
CAS API("winscard.dll","SCardTransmit",hCard,pioSendPci,&pbSendBuffer,cbSendLength,pioRecvPci,&pbRecvBuffer,&pcbRecvLength) = 0 ET hCard <> 0
FOR i = 1 TO 3
RecvBuffer = RecvBuffer + NumériqueVersChaîne(Asc(pbRecvBuffer[[i]]),"02X") + " "
END
RecvBuffer = RecvBuffer + NumériqueVersChaîne(Asc(pbRecvBuffer[[4]]),"02X")
AUTRE CAS
RENVOYER 4
FIN
FIN
//Déconnexion badge NFC
SI nCodeRes >= 2 ALORS //On exécute
SELON Vrai
CAS API("winscard.dll","SCardDisconnect",hCard,dwDisposition) = 0 ET hCard <> 0 //Déconnexion badge NFC réussie
AUTRE CAS
FIN
FIN
//Relache contexte Winscard
SI nCodeRes >= 1 ALORS //On exécute
SELON Vrai
CAS API("WinSCard.dll","SCardReleaseContext",hContext) = 0 //Relachement contexte winscard réussi
AUTRE CAS
FIN
FIN
RENVOYER RecvBuffer |
Partager