IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Lire les données d'une carte RFID (lecteur USB omnikey 5325 cl) via un fomulaire dans Access [AC-2010]


Sujet :

IHM

  1. #1
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut Lire les données d'une carte RFID (lecteur USB omnikey 5325 cl) via un fomulaire dans Access
    Bonjour a tous,

    Je suis en train de me casser la tête sur un sujet depuis quelques jours.
    Je m'explique, je dois utiliser le lecteur de carte RFID (un lecteur USB OMNIKEY 5325 CL) avec une base de données Access 2010.
    Je m'arrive pas a trouver des exemple de code en VBA ou VB6 qui pourrait m'indiquer comme récupérer l'ATR de la carte.
    J'ai fais les différentes installation sur mon PC et l'outil d'OMNIKEY lit bien ma carte, mais je ne vois vraiment pas comment je dois faire pour la lire via un formulaire dans Access.

    Merci d'avance pour votre aide.

    Isabelle

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Est-ce que ton périphérique pourrait être configurer pour simuler un clavier ?
    Certains lecteurs de code barre le permettent ce qui fait que pour le PC c'est comme si tu entrais les données via le pavé numérique.

    Sinon j'ai trouvé cela
    Interfacing with serial/USB barcode scanners in Microsoft Access 2010
    ici : https://strokescribe.com/en/read-ser...cess-2010.html

    Les autres postes ne sont pas optimistes ni précis sur comment procéder.

    As-tu essayé de contacter ton fournisseur de lecteur, ils ont peut-être une solution toute faite ou des exemples.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Merci marot_r, je vais regarder ton lien.

    Je ne peux pas configurer le lecteur pour simuler un clavier.

    J'ai contacté le constructeur mais je ne pense pas avoir de réponse rapide.

  4. #4
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Bon je viens te faire plusieurs tests mais cela ne fonctionne pas...

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    As-tu pensé à regarder sur Google si il existerai une communauté des utilisateurs de ton lecteur ?

    Est-ce que tu as un manuel technique expliquant la connexion à un quelconque langage (C, C++, C#, Java, autres) ?

    Cela donnerai peut-être une piste.

    En cherchant sur le sujet élargi j'ai trouvé ceci :
    Writing apps for USB devices (Windows Store apps using C#/VB/C++)
    https://msdn.microsoft.com/en-us/lib.../dn263144.aspx

    How Can i Get data from USB port in c#?
    https://social.msdn.microsoft.com/Fo...-usb-port-in-c
    Cela mentionne les lecteurs RFID et comme VBA est capable d'interfacer avec des API, la solution et peut-être par là.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    J'ai un peu avancé, j'ai trouvé des déclarations pour winscard.dll, mais je n'arrive pas et surtout ne comprend pas comment les utiliser

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    J'ai trouvé cela en cherchant dans Google sur le nom de la dll.

    Can MS Access interface with Smart Cards?
    http://iswwwup.com/t/3a172312335f/ca...art-cards.html

    Personnellement je me tiens aussi loin que possible des DLL.

    Je pense que ta meilleure chance est de faire pression sur ton fournisseur de lecteur pour qu'il te donne des exemples de code et/ou de la documentation sur comment interfacer avec ton lecteur.
    Éventuellement indique que tu vas renvoyer le produit et demander un remboursement puisqu'il ne répond pas à tes besoins. Taper là où cela fait mal : au portefeuille.

    Tu disais que tu avais une application qui interface avec ton lecteur, as-tu essayer de contacter les auteurs de cette application ?

    As-tu une de la doc technique qui vient avec ton lecteur ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Aussi tu voudras peut-être essayer une recherche sur le modèle et la marque de ton lecteur + VBA dans Google.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    A force de recherches j'avance petit à petit.

    J'ai trouvé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
     
    '**************************************************************************
     ' winscard.dll Visual Basic Function Prototypes
     '**************************************************************************
     'SCardAccessStartedEvent
     'http://msdn.microsoft.com/en-us/library/aa379466(VS.85).aspx
     'HANDLE STDCALL SCardAccessStartedEvent(VOID)
     Public Declare Function SCardAccessStartedEvent Lib "winscard.dll" () As Long
     
    Public Type SCARD_READERSTATE
      szReader As String
      pvUserData As Long
      dwCurrentState As Long
      dwEventState As Long
      cbAtr As Long
      rgbAtr As Byte
    End Type
    'http://msdn.microsoft.com/en-us/library/aa922903.aspx
    Public Type SCARD_ATRMASK
      cbAtr As Long
      rgbAtr As Byte
      rgbMask As Byte
    End Type
    'http://msdn.microsoft.com/en-us/library/aa379807.aspx
    Public Type SCARD_IO_REQUEST
      dwProtocol As Long
      dwPciLength As Long
    End Type
     
     'SCardAddReaderToGroup
     'LONG STDCALL SCardAddReaderToGroupA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
     Public Declare Function SCardAddReaderToGroup Lib "winscard.dll" Alias "SCardAddReaderToGroupA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardBeginTransaction
     'LONG STDCALL SCardBeginTransaction(SCARDHANDLE(in))
     Public Declare Function SCardBeginTransaction Lib "winscard.dll" ( _
         ByVal hCard As Long _
         ) As Long
     
     'SCardCancel
     'LONG STDCALL SCardCancel(SCARDCONTEXT(in))
     Public Declare Function SCardCancel Lib "winscard.dll" ( _
         ByVal hContext As Long _
         ) As Long
     
     'SCardConnect
     'LONG STDCALL SCardConnectA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in), DWORD(in),
     ' LPSCARDHANDLE(out), LPDWORD(out))
     Public Declare Function SCardConnect Lib "winscard.dll" Alias "SCardConnectA" ( _
         ByVal hContext As Long, _
         ByVal szReader As String, _
         ByVal dwShareMode As Long, _
         ByVal dwPreferredProtocols As Long, _
         ByRef phCard As Long, _
         ByRef pdwActiveProtocol As Long _
         ) As Long
     
     'SCardControl
     'LONG STDCALL SCardControl(SCARDHANDLE(in), DWORD(in), LPCVOID(in), DWORD(in),
     ' LPVOID(out), DWORD(in), LPDWORD(out))
     Public Declare Function SCardControl Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwControlCode As Long, _
         ByRef lpInBuffer As Long, _
         ByVal nInBufferSize As Long, _
         ByRef lpOutBuffer As Long, _
         ByVal nOutBufferSize As Long, _
         ByRef lpBytesReturned As Long _
         ) As Long
     
     'SCardDisconnect
     'LONG STDCALL SCardDisconnect(SCARDHANDLE(in), DWORD(in))
     Public Declare Function SCardDisconnect Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwDisposition As Long _
         ) As Long
     
     'SCardEndTransaction
     'LONG STDCALL SCardEndTransaction(SCARDHANDLE(in), DWORD(in))
     Public Declare Function SCardEndTransaction Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwDisposition As Long _
         ) As Long
     
     'SCardEstablishContext
     'LONG STDCALL SCardEstablishContext(DWORD(in), LPCVOID(in), LPCVOID(in),
     ' LPSCARDCONTEXT(out))
     Public Declare Function SCardEstablishContext Lib "winscard.dll" ( _
         ByVal dwScope As Long, _
         ByVal pvReserved1 As Long, _
         ByVal pvReserved2 As Long, _
         ByRef phContext As Long _
         ) As Long
     
     'SCardForgetCardType
     'LONG STDCALL SCardForgetCardTypeA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardForgetCardType Lib "winscard.dll" Alias "SCardForgetCardTypeA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String _
         ) As Long
     
     'SCardForgetReader
     'LONG STDCALL SCardForgetReaderA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardForgetReader Lib "winscard.dll" Alias "SCardForgetReaderA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String _
         ) As Long
     
     'SCardForgetReaderGroup
     'LONG STDCALL SCardForgetReaderGroupA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardForgetReaderGroup Lib "winscard.dll" Alias "SCardForgetReaderGroupA" ( _
         ByVal hContext As Long, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardFreeMemory
     'LONG STDCALL SCardFreeMemory(SCARDCONTEXT(in), LPCVOID(in))
     Public Declare Function SCardFreeMemory Lib "winscard.dll" ( _
         ByVal hContext As Long, _
         ByVal pvMem As Long _
         ) As Long
     
     'SCardGetAttrib
     'LONG STDCALL SCardGetAttrib(SCARDHANDLE(in), DWORD(in), LPBYTE(out), LPDWORD(inout))
     Public Declare Function SCardGetAttrib Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwAttrId As Long, _
         ByRef pbAttr As ByteArray, _
         ByRef pcbAttrLen As Long _
         ) As Long
     
     'SCardGetCardTypeProviderName
     'LONG STDCALL SCardGetCardTypeProviderNameA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in),
     ' LPSTR(out), LPDWORD(inout))
     Public Declare Function SCardGetCardTypeProviderName Lib "winscard.dll" Alias "SCardGetCardTypeProviderNameA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String, _
         ByVal dwProviderId As Long, _
         ByVal szProvider As String, _
         ByRef pcchProvider As Long _
         ) As Long
     
     'SCardGetProviderId
     'LONG STDCALL SCardGetProviderIdA(SCARDCONTEXT(in), LPCSTR(in), LPGUID(out))
     Public Declare Function SCardGetProviderId Lib "winscard.dll" Alias "SCardGetProviderIdA" ( _
         ByVal hContext As Long, _
         ByVal szCard As String, _
         ByRef pguidProviderId As GUID _
         ) As Long
     
     'SCardGetStatusChange
     'LONG STDCALL SCardGetStatusChangeA(SCARDCONTEXT(in), DWORD(in),
     ' LPSCARD_READERSTATEA(inout), DWORD(in))
     Public Declare Function SCardGetStatusChange Lib "winscard.dll" Alias "SCardGetStatusChangeA" ( _
         ByVal hContext As Long, _
         ByVal dwTimeout As Long, _
         ByRef rgReaderStates() As SCARD_READERSTATE, _
         ByVal cReaders As Long _
         ) As Long
     
     'SCardIntroduceCardType
     'LONG STDCALL SCardIntroduceCardTypeA(SCARDCONTEXT(in), LPCSTR(in), LPCGUID(in),
     ' LPCGUID(in), DWORD(in), LPCBYTE(in), LPCBYTE(in), DWORD(in))
     Public Declare Function SCardIntroduceCardType Lib "winscard.dll" Alias "SCardIntroduceCardTypeA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String, _
         ByRef pguidPrimaryProvider As GUID, _
         ByRef pguidInterfaces As GUID, _
         ByVal dwInterfaceCount As Long, _
         ByVal pbAtr As ByteArray, _
         ByVal pbAtrMask As ByteArray, _
         ByVal cbAtrLen As Long _
         ) As Long
     
     'SCardIntroduceReader
     'LONG STDCALL SCardIntroduceReaderA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
     Public Declare Function SCardIntroduceReader Lib "winscard.dll" Alias "SCardIntroduceReaderA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String, _
         ByVal szDeviceName As String _
         ) As Long
     
     'SCardIntroduceReaderGroup
     'LONG STDCALL SCardIntroduceReaderGroupA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardIntroduceReaderGroup Lib "winscard.dll" Alias "SCardIntroduceReaderGroupA" ( _
         ByVal hContext As Long, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardIsValidContext
     'LONG STDCALL SCardIsValidContext(SCARDCONTEXT(in))
     Public Declare Function SCardIsValidContext Lib "winscard.dll" ( _
         ByVal hContext As Long _
     ) As Long
     
     'SCardListCards
     'LONG STDCALL SCardListCardsA(SCARDCONTEXT(in), LPCBYTE(in), LPCGUID(in), DWORD(in),
     ' LPCSTR(out), LPDWORD(inout))
     Public Declare Function SCardListCards Lib "winscard.dll" Alias "SCardListCardsA" ( _
         ByVal hContext As Long, _
         ByVal pbAtr As ByteArray, _
         ByVal rgguidInterfaces As Long, _
         ByVal cguidInterfaceCount As Long, _
         ByVal mszCards As String, _
         ByRef pcchCards As Long _
         ) As Long
     
     'SCardListInterfaces
     'LONG STDCALL SCardListInterfacesA(SCARDCONTEXT(in), LPCSTR(in), LPGUID(out),
     ' LPDWORD(inout))
     Public Declare Function SCardListInterfaces Lib "winscard.dll" Alias "SCardListInterfacesA" ( _
         ByVal hContext As Long, _
         ByVal szCard As String, _
         ByRef pguidInterfaces As GUID, _
         ByRef pcguidInterfaces As Long _
         ) As Long
     
     'SCardListReaderGroups
     'LONG STDCALL SCardListReaderGroupsA(SCARDCONTEXT(in), LPSTR(out), LPDWORD(inout))
     Public Declare Function SCardListReaderGroups Lib "winscard.dll" Alias "SCardListReaderGroupsA" ( _
         ByVal hContext As Long, _
         ByVal mszGroups As String, _
         ByRef pcchGroups As Long _
         ) As Long
     
     'SCardListReaders
     'LONG STDCALL SCardListReadersA(SCARDCONTEXT(in), LPCSTR(in), LPSTR(out), LPDWORD(inout))
     Public Declare Function SCardListReaders Lib "winscard.dll" Alias "SCardListReadersA" ( _
         ByVal hContext As Long, _
         ByVal mszGroups As String, _
         ByVal mszReaders As String, _
         ByRef pcchReaders As Long _
         ) As Long
     
     'SCardLocateCards
     'LONG STDCALL SCardLocateCardsA(SCARDCONTEXT(in), LPCSTR(in),
     ' LPSCARD_READERSTATEA(inout), DWORD(in))
     Public Declare Function SCardLocateCards Lib "winscard.dll" Alias "SCardLocateCardsA" ( _
         ByVal hContext As Long, _
         ByVal mszCards As String, _
         ByRef rgReaderStates() As SCARD_READERSTATE, _
         ByVal cReaders As Long _
         ) As Long
     
     'SCardLocateCardsByATR
     'LONG STDCALL SCardLocateCardsByATRA(SCARDCONTEXT(in), LPSCARD_ATRMASK(in), DWORD(in),
     ' LPSCARD_READERSTATEA(inout), DWORD(in))
     Public Declare Function SCardLocateCardsByATR Lib "winscard.dll" Alias "SCardLocateCardsByATRA" ( _
         ByVal hContext As Long, _
         ByRef rgAtrMasks() As SCARD_ATRMASK, _
         ByVal cAtrs As Long, _
         ByRef rgReaderStates() As SCARD_READERSTATE, _
         ByVal cReaders As Long _
         ) As Long
     
     'SCardReconnect
     
     'LONG STDCALL SCardReconnect(SCARDHANDLE(in), DWORD(in), DWORD(in), DWORD(in),
     ' LPDWORD(out))
     Public Declare Function SCardReconnect Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwShareMode As Long, _
         ByVal dwPreferredProtocols As Long, _
         ByVal dwInitialization As Long, _
         ByRef pdwActiveProtocol As Long _
         ) As Long
     
     'SCardReleaseContext
     
     'LONG STDCALL SCardReleaseContext(SCARDCONTEXT(in))
     Public Declare Function SCardReleaseContext Lib "winscard.dll" ( _
         ByVal hContext As Long _
         ) As Long
     
     'SCardReleaseStartedEvent
     
     'VOID STDCALL SCardReleaseStartedEvent(HANDLE(in))
     Public Declare Sub SCardReleaseStartedEvent Lib "winscard.dll" ( _
         ByVal hStartedEventHandle As Long _
         )
     
     'SCardRemoveReaderFromGroup
     
     'LONG STDCALL SCardRemoveReaderFromGroupA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
     Public Declare Function SCardRemoveReaderFromGroup Lib "winscard.dll" Alias "SCardRemoveReaderFromGroupA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardSetAttrib
     'LONG STDCALL SCardSetAttrib(SCARDHANDLE(in), DWORD(in), LPCBYTE(in), DWORD(in))
     Public Declare Function SCardSetAttrib Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwAttrId As Long, _
         ByVal pbAttr As ByteArray, _
         ByVal cbAttrLen As Long _
         ) As Long
     
     'SCardSetCardTypeProviderName
     'LONG STDCALL SCardSetCardTypeProviderNameA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in),
     ' LPCSTR(in))
     Public Declare Function SCardSetCardTypeProviderName Lib "winscard.dll" Alias "SCardSetCardTypeProviderNameA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String, _
         ByVal dwProviderId As Long, _
         ByVal szProvider As String _
         ) As Long
     
     'SCardState
     'LONG STDCALL SCardState(SCARDHANDLE(in), LPDWORD(out), LPDWORD(out), LPBYTE(out),
     ' LPDWORD(out))
     Public Declare Function SCardState Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByRef pdwState As Long, _
         ByRef pdwProtocol As Long, _
         ByRef pbAtr As ByteArray, _
         ByRef pcbAtrLen As Long _
     ) As Long
     
     'SCardStatus
     'LONG STDCALL SCardStatusA(SCARDHANDLE(in), LPSTR(out), LPDWORD(inout), LPDWORD(out),
     ' LPDWORD(out), LPBYTE(out), LPDWORD(inout))
     Public Declare Function SCardStatus Lib "winscard.dll" Alias "SCardStatusA" ( _
         ByVal hCard As Long, _
         ByVal szReaderName As String, _
         ByRef pcchReaderLen As Long, _
         ByRef pdwState As Long, _
         ByRef pdwProtocol As Long, _
         ByRef pbAtr As ByteArray, _
         ByRef pcbAtrLen As Long _
         ) As Long
     
     'SCardTransmit
     'LONG STDCALL SCardTransmit(SCARDHANDLE(in), LPCSCARD_IO_REQUEST(in), LPCBYTE(in),
     ' DWORD(in), LPSCARD_IO_REQUEST(inout), LPBYTE(out), LPDWORD(inout))
     Public Declare Function SCardTransmit Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByRef pioSendPci As SCARD_IO_REQUEST, _
         ByRef pbSendBuffer As Byte, _
         ByVal cbSendLength As Long, _
         ByRef pioRecvPci As SCARD_IO_REQUEST, _
         ByRef pbRecvBuffer As Byte, _
         ByRef pcbRecvLength As Long _
     ) As Long
     
    Public Declare Function SCardTransmitLong Lib "winscard.dll" Alias "SCardTransmit" ( _
        ByVal hCard As Long, _
         ByRef pioSendPci As SCARD_IO_REQUEST, _
         ByRef pbSendBuffer As Byte, _
         ByVal cbSendLength As Long, _
         ByVal pioRecvPci As Long, _
         ByRef pbRecvBuffer As Byte, _
         ByRef pcbRecvLength As Long _
     ) As Long
     
    ' Initialize an I2C Card
    ' Parameters:
    '       hCard               = Handle to current Card
    '       pCardParameters     = Pointer to a SCARD_I2C_CARD_PARAMETERS type
    '       lType               = Predefined Cardtype (SCARD_I2C_TYPE)
    '
    Public Declare Function SCardI2CInit Lib "scardsyn.dll" _
        (ByVal hCard As Long, _
         ByRef pCardParameters As Long, _
         ByVal lType As Long) As Long
     
    '
    ' Read Bytes from Card
    ' Parameters:
    '       hCard               = Handle to current Card
    '       pbReadBuffer        = Array of Bytes where data should be stored in
    '       ulReadBufferSize    = Size of ReadBuffer
    '       ulAddress           = Offset where read starts
    '       ulBytesToRead       = Number of Bytes to read
    '
    Public Declare Function SCardI2CReadData Lib "scardsyn.dll" _
        (ByVal hCard As Long, _
         ByRef pbReadBuffer As Byte, _
         ByVal ulReadBufferSize As Long, _
         ByVal ulAddress As Long, _
         ByVal ulBytesToRead As Long) As Long
     
    '
    ' Card Parameters Structure
    '
    Public Type SCARD_I2C_CARD_PARAMETERS
        ucPageSize As Byte              ' Maximal number of bytes that can be written in a successive manner, in a single device select phase.
        ucNumberOfAddressBytes As Byte  ' Number of bytes used to address the memory in the I2C card.
        ulMemorySize As Integer         ' The size of the e2prom allocated in the card
    End Type
     
     
     
    Public Const SCARD_SCOPE_SYSTEM As Integer = 2
    Public Const SCARD_SCOPE_USER As Integer = 2
    Public Const SCARD_S_SUCCESS As Integer = 0

    et j'ai commencé a faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Sub test3()
    Dim hContext As Long
    Dim hCard As Long
    Dim retval As Long
    Dim readers As String * 256
    Dim groups As String * 256
    Dim activeprotocol As Long
    Dim readerlen As Long
    Dim scard_protocol_t0_or_t1 As Long
    Dim scard_share_shared As Long
    Dim pCardParameters As SCARD_I2C_CARD_PARAMETERS
    Dim apdu(261) As Byte
    Dim recvlen As Long
    Dim recvbuf(256) As Byte
    Dim recvbuff(256) As ByteArray
     
    scard_protocol_t0_or_t1 = 0
    scard_share_shared = 3 '2  1
     
    retval = SCardEstablishContext(SCARD_SCOPE_USER, 0, 0, hContext)
    If retval <> 0 Then MsgBox "erreur n." & CStr(retval)
     
    readerlen = 256
     
    retval = SCardListReaders(hContext, groups, readers, readerlen)
    If retval <> 0 Then MsgBox "erreur n. " & CStr(retval)
     
     
    retval = SCardConnect(hContext, readers, scard_share_shared, scard_protocol_t0_or_t1, hCard, activeprotocol)
    If retval <> 0 Then MsgBox "erreur n. " & CStr(retval)
     
    pCardParameters.ucNumberOfAddressBytes = 1
    pCardParameters.ucPageSize = 8
    pCardParameters.ulMemorySize = 256
     
     
    retval = SCardI2CInit(hCard, 8, 2)
    If retval <> 0 Then MsgBox "erreur n. " & CStr(retval)
     
     
    apdu(0) = &H0
    apdu(1) = &HCA
    apdu(2) = &H0
    apdu(3) = &H81
    apdu(4) = &H0
    apdu(5) = &H0
    recvlen = 7
     
    retval = SCardI2CReadData(hCard, apdu(0), recvlen, 1, recvlen)
    If retval <> 0 Then MsgBox "erreur n. " & CStr(retval)
     
     
    End Sub
    Mais je bloque à partir de "SCardI2CInit" je n'arrive pas a trouver le bon paramètre (IType) ou plutôt plusieurs valeurs supérieures à 0 semblent fonctionner, ce qui n'est pas bon signe
    Et ensuite je ne vois pas comment faire pour le SCardI2CReadData (les données que j'y a mise sont fausse).

    Mais ma plus grosse interrogation reste encore, comment faire avec tout ca pour récupérer le code ATR de la carte???

    Je vais continuer mes recherches, si vous avez des idées, je suis preneuse!!

  10. #10
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Bon j'ai encore un peu avancé.
    Par contre je suis bloquée sur le SCardTransmit, je n'arrive pas a lui passer les bons paramètres.
    Je n'utilise plus le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    retval = SCardI2CInit(hCard, 8, 2)
    If retval <> 0 Then MsgBox "erreur n. " & CStr(retval)
    Est-ce que quelqu'un sait l'utiliser?

    Merci d'avance.

  11. #11
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Bonjour a tous,

    J'ai finalement utilisé la solution suivante, je récupère le code Hexa de la carte car le lecteur que j'utilise ne donne pas d'autres informations.
    J'espère que ce code pourra aider quelqu'un....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
     '**************************************************************************
     ' winscard.dll Visual Basic Function Prototypes
     '**************************************************************************
     'SCardAccessStartedEvent
     'http://msdn.microsoft.com/en-us/library/aa379466(VS.85).aspx
     'HANDLE STDCALL SCardAccessStartedEvent(VOID)
     Public Declare Function SCardAccessStartedEvent Lib "winscard.dll" () As Long
     
    Public Type SCARD_READERSTATE
      szReader As String
      pvUserData As Long
      dwCurrentState As Long
      dwEventState As Long
      cbAtr As Long
      rgbAtr As Byte
    End Type
    'http://msdn.microsoft.com/en-us/library/aa922903.aspx
    Public Type SCARD_ATRMASK
      cbAtr As Long
      rgbAtr As Byte
      rgbMask As Byte
    End Type
    'http://msdn.microsoft.com/en-us/library/aa379807.aspx
    Public Type SCARD_IO_REQUEST
      dwProtocol As Long
      dwPciLength As Long
    End Type
     
     'SCardAddReaderToGroup
     'LONG STDCALL SCardAddReaderToGroupA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
     Public Declare Function SCardAddReaderToGroup Lib "winscard.dll" Alias "SCardAddReaderToGroupA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardBeginTransaction
     'LONG STDCALL SCardBeginTransaction(SCARDHANDLE(in))
     Public Declare Function SCardBeginTransaction Lib "winscard.dll" ( _
         ByVal hCard As Long _
         ) As Long
     
     'SCardCancel
     'LONG STDCALL SCardCancel(SCARDCONTEXT(in))
     Public Declare Function SCardCancel Lib "winscard.dll" ( _
         ByVal hContext As Long _
         ) As Long
     
     'SCardConnect
     'LONG STDCALL SCardConnectA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in), DWORD(in),
     ' LPSCARDHANDLE(out), LPDWORD(out))
     Public Declare Function SCardConnect Lib "winscard.dll" Alias "SCardConnectA" ( _
         ByVal hContext As Long, _
         ByVal szReader As String, _
         ByVal dwShareMode As Long, _
         ByVal dwPreferredProtocols As Long, _
         ByRef phCard As Long, _
         ByRef pdwActiveProtocol As Long _
         ) As Long
     
     'SCardControl
     'LONG STDCALL SCardControl(SCARDHANDLE(in), DWORD(in), LPCVOID(in), DWORD(in),
     ' LPVOID(out), DWORD(in), LPDWORD(out))
     Public Declare Function SCardControl Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwControlCode As Long, _
         ByRef lpInBuffer As Long, _
         ByVal nInBufferSize As Long, _
         ByRef lpOutBuffer As Long, _
         ByVal nOutBufferSize As Long, _
         ByRef lpBytesReturned As Long _
         ) As Long
     
     'SCardDisconnect
     'LONG STDCALL SCardDisconnect(SCARDHANDLE(in), DWORD(in))
     Public Declare Function SCardDisconnect Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwDisposition As Long _
         ) As Long
     
     'SCardEndTransaction
     'LONG STDCALL SCardEndTransaction(SCARDHANDLE(in), DWORD(in))
     Public Declare Function SCardEndTransaction Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwDisposition As Long _
         ) As Long
     
     'SCardEstablishContext
     'LONG STDCALL SCardEstablishContext(DWORD(in), LPCVOID(in), LPCVOID(in),
     ' LPSCARDCONTEXT(out))
     Public Declare Function SCardEstablishContext Lib "winscard.dll" ( _
         ByVal dwScope As Long, _
         ByVal pvReserved1 As Long, _
         ByVal pvReserved2 As Long, _
         ByRef phContext As Long _
         ) As Long
     
     'SCardForgetCardType
     'LONG STDCALL SCardForgetCardTypeA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardForgetCardType Lib "winscard.dll" Alias "SCardForgetCardTypeA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String _
         ) As Long
     
     'SCardForgetReader
     'LONG STDCALL SCardForgetReaderA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardForgetReader Lib "winscard.dll" Alias "SCardForgetReaderA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String _
         ) As Long
     
     'SCardForgetReaderGroup
     'LONG STDCALL SCardForgetReaderGroupA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardForgetReaderGroup Lib "winscard.dll" Alias "SCardForgetReaderGroupA" ( _
         ByVal hContext As Long, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardFreeMemory
     'LONG STDCALL SCardFreeMemory(SCARDCONTEXT(in), LPCVOID(in))
     Public Declare Function SCardFreeMemory Lib "winscard.dll" ( _
         ByVal hContext As Long, _
         ByVal pvMem As Long _
         ) As Long
     
     'SCardGetAttrib
     'LONG STDCALL SCardGetAttrib(SCARDHANDLE(in), DWORD(in), LPBYTE(out), LPDWORD(inout))
     Public Declare Function SCardGetAttrib Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwAttrId As Long, _
         ByRef pbAttr As ByteArray, _
         ByRef pcbAttrLen As Long _
         ) As Long
     
     'SCardGetCardTypeProviderName
     'LONG STDCALL SCardGetCardTypeProviderNameA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in),
     ' LPSTR(out), LPDWORD(inout))
     Public Declare Function SCardGetCardTypeProviderName Lib "winscard.dll" Alias "SCardGetCardTypeProviderNameA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String, _
         ByVal dwProviderId As Long, _
         ByVal szProvider As String, _
         ByRef pcchProvider As Long _
         ) As Long
     
     'SCardGetProviderId
     'LONG STDCALL SCardGetProviderIdA(SCARDCONTEXT(in), LPCSTR(in), LPGUID(out))
     Public Declare Function SCardGetProviderId Lib "winscard.dll" Alias "SCardGetProviderIdA" ( _
         ByVal hContext As Long, _
         ByVal szCard As String, _
         ByRef pguidProviderId As GUID _
         ) As Long
     
     'SCardGetStatusChange
     'LONG STDCALL SCardGetStatusChangeA(SCARDCONTEXT(in), DWORD(in),
     ' LPSCARD_READERSTATEA(inout), DWORD(in))
     Public Declare Function SCardGetStatusChange Lib "winscard.dll" Alias "SCardGetStatusChangeA" ( _
         ByVal hContext As Long, _
         ByVal dwTimeout As Long, _
         ByRef rgReaderStates() As SCARD_READERSTATE, _
         ByVal cReaders As Long _
         ) As Long
     
     'SCardIntroduceCardType
     'LONG STDCALL SCardIntroduceCardTypeA(SCARDCONTEXT(in), LPCSTR(in), LPCGUID(in),
     ' LPCGUID(in), DWORD(in), LPCBYTE(in), LPCBYTE(in), DWORD(in))
     Public Declare Function SCardIntroduceCardType Lib "winscard.dll" Alias "SCardIntroduceCardTypeA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String, _
         ByRef pguidPrimaryProvider As GUID, _
         ByRef pguidInterfaces As GUID, _
         ByVal dwInterfaceCount As Long, _
         ByVal pbAtr As ByteArray, _
         ByVal pbAtrMask As ByteArray, _
         ByVal cbAtrLen As Long _
         ) As Long
     
     'SCardIntroduceReader
     'LONG STDCALL SCardIntroduceReaderA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
     Public Declare Function SCardIntroduceReader Lib "winscard.dll" Alias "SCardIntroduceReaderA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String, _
         ByVal szDeviceName As String _
         ) As Long
     
     'SCardIntroduceReaderGroup
     'LONG STDCALL SCardIntroduceReaderGroupA(SCARDCONTEXT(in), LPCSTR(in))
     Public Declare Function SCardIntroduceReaderGroup Lib "winscard.dll" Alias "SCardIntroduceReaderGroupA" ( _
         ByVal hContext As Long, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardIsValidContext
     'LONG STDCALL SCardIsValidContext(SCARDCONTEXT(in))
     Public Declare Function SCardIsValidContext Lib "winscard.dll" ( _
         ByVal hContext As Long _
     ) As Long
     
     'SCardListCards
     'LONG STDCALL SCardListCardsA(SCARDCONTEXT(in), LPCBYTE(in), LPCGUID(in), DWORD(in),
     ' LPCSTR(out), LPDWORD(inout))
     Public Declare Function SCardListCards Lib "winscard.dll" Alias "SCardListCardsA" ( _
         ByVal hContext As Long, _
         ByVal pbAtr As ByteArray, _
         ByVal rgguidInterfaces As Long, _
         ByVal cguidInterfaceCount As Long, _
         ByVal mszCards As String, _
         ByRef pcchCards As Long _
         ) As Long
     
     'SCardListInterfaces
     'LONG STDCALL SCardListInterfacesA(SCARDCONTEXT(in), LPCSTR(in), LPGUID(out),
     ' LPDWORD(inout))
     Public Declare Function SCardListInterfaces Lib "winscard.dll" Alias "SCardListInterfacesA" ( _
         ByVal hContext As Long, _
         ByVal szCard As String, _
         ByRef pguidInterfaces As GUID, _
         ByRef pcguidInterfaces As Long _
         ) As Long
     
     'SCardListReaderGroups
     'LONG STDCALL SCardListReaderGroupsA(SCARDCONTEXT(in), LPSTR(out), LPDWORD(inout))
     Public Declare Function SCardListReaderGroups Lib "winscard.dll" Alias "SCardListReaderGroupsA" ( _
         ByVal hContext As Long, _
         ByVal mszGroups As String, _
         ByRef pcchGroups As Long _
         ) As Long
     
     'SCardListReaders
     'LONG STDCALL SCardListReadersA(SCARDCONTEXT(in), LPCSTR(in), LPSTR(out), LPDWORD(inout))
     Public Declare Function SCardListReaders Lib "winscard.dll" Alias "SCardListReadersA" ( _
         ByVal hContext As Long, _
         ByVal mszGroups As String, _
         ByVal mszReaders As String, _
         ByRef pcchReaders As Long _
         ) As Long
     
     'SCardLocateCards
     'LONG STDCALL SCardLocateCardsA(SCARDCONTEXT(in), LPCSTR(in),
     ' LPSCARD_READERSTATEA(inout), DWORD(in))
     Public Declare Function SCardLocateCards Lib "winscard.dll" Alias "SCardLocateCardsA" ( _
         ByVal hContext As Long, _
         ByVal mszCards As String, _
         ByRef rgReaderStates() As SCARD_READERSTATE, _
         ByVal cReaders As Long _
         ) As Long
     
     'SCardLocateCardsByATR
     'LONG STDCALL SCardLocateCardsByATRA(SCARDCONTEXT(in), LPSCARD_ATRMASK(in), DWORD(in),
     ' LPSCARD_READERSTATEA(inout), DWORD(in))
     Public Declare Function SCardLocateCardsByATR Lib "winscard.dll" Alias "SCardLocateCardsByATRA" ( _
         ByVal hContext As Long, _
         ByRef rgAtrMasks() As SCARD_ATRMASK, _
         ByVal cAtrs As Long, _
         ByRef rgReaderStates() As SCARD_READERSTATE, _
         ByVal cReaders As Long _
         ) As Long
     
     'SCardReconnect
     
     'LONG STDCALL SCardReconnect(SCARDHANDLE(in), DWORD(in), DWORD(in), DWORD(in),
     ' LPDWORD(out))
     Public Declare Function SCardReconnect Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwShareMode As Long, _
         ByVal dwPreferredProtocols As Long, _
         ByVal dwInitialization As Long, _
         ByRef pdwActiveProtocol As Long _
         ) As Long
     
     'SCardReleaseContext
     
     'LONG STDCALL SCardReleaseContext(SCARDCONTEXT(in))
     Public Declare Function SCardReleaseContext Lib "winscard.dll" ( _
         ByVal hContext As Long _
         ) As Long
     
     'SCardReleaseStartedEvent
     
     'VOID STDCALL SCardReleaseStartedEvent(HANDLE(in))
     Public Declare Sub SCardReleaseStartedEvent Lib "winscard.dll" ( _
         ByVal hStartedEventHandle As Long _
         )
     
     'SCardRemoveReaderFromGroup
     
     'LONG STDCALL SCardRemoveReaderFromGroupA(SCARDCONTEXT(in), LPCSTR(in), LPCSTR(in))
     Public Declare Function SCardRemoveReaderFromGroup Lib "winscard.dll" Alias "SCardRemoveReaderFromGroupA" ( _
         ByVal hContext As Long, _
         ByVal szReaderName As String, _
         ByVal szGroupName As String _
         ) As Long
     
     'SCardSetAttrib
     'LONG STDCALL SCardSetAttrib(SCARDHANDLE(in), DWORD(in), LPCBYTE(in), DWORD(in))
     Public Declare Function SCardSetAttrib Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByVal dwAttrId As Long, _
         ByVal pbAttr As ByteArray, _
         ByVal cbAttrLen As Long _
         ) As Long
     
     'SCardSetCardTypeProviderName
     'LONG STDCALL SCardSetCardTypeProviderNameA(SCARDCONTEXT(in), LPCSTR(in), DWORD(in),
     ' LPCSTR(in))
     Public Declare Function SCardSetCardTypeProviderName Lib "winscard.dll" Alias "SCardSetCardTypeProviderNameA" ( _
         ByVal hContext As Long, _
         ByVal szCardName As String, _
         ByVal dwProviderId As Long, _
         ByVal szProvider As String _
         ) As Long
     
     'SCardState
     'LONG STDCALL SCardState(SCARDHANDLE(in), LPDWORD(out), LPDWORD(out), LPBYTE(out),
     ' LPDWORD(out))
     Public Declare Function SCardState Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByRef pdwState As Long, _
         ByRef pdwProtocol As Long, _
         ByRef pbAtr As ByteArray, _
         ByRef pcbAtrLen As Long _
     ) As Long
     
     'SCardStatus
     'LONG STDCALL SCardStatusA(SCARDHANDLE(in), LPSTR(out), LPDWORD(inout), LPDWORD(out),
     ' LPDWORD(out), LPBYTE(out), LPDWORD(inout))
     Public Declare Function SCardStatus Lib "winscard.dll" Alias "SCardStatusA" ( _
         ByVal hCard As Long, _
         ByVal szReaderName As String, _
         ByRef pcchReaderLen As Long, _
         ByRef pdwState As Long, _
         ByRef pdwProtocol As Long, _
         ByRef pbAtr As ByteArray, _
         ByRef pcbAtrLen As Long _
         ) As Long
     
     'SCardTransmit
     'LONG STDCALL SCardTransmit(SCARDHANDLE(in), LPCSCARD_IO_REQUEST(in), LPCBYTE(in),
     ' DWORD(in), LPSCARD_IO_REQUEST(inout), LPBYTE(out), LPDWORD(inout))
     Public Declare Function SCardTransmit Lib "winscard.dll" ( _
         ByVal hCard As Long, _
         ByRef pioSendPci As SCARD_IO_REQUEST, _
         ByRef pbSendBuffer As Byte, _
         ByVal cbSendLength As Long, _
         ByRef pioRecvPci As SCARD_IO_REQUEST, _
         ByRef pbRecvBuffer As Byte, _
         ByRef pcbRecvLength As Long _
     ) As Long
     
    Public Declare Function SCardTransmitLong Lib "winscard.dll" Alias "SCardTransmit" ( _
        ByVal hCard As Long, _
         ByRef pioSendPci As SCARD_IO_REQUEST, _
         ByRef pbSendBuffer As Byte, _
         ByVal cbSendLength As Long, _
         ByVal pioRecvPci As Long, _
         ByRef pbRecvBuffer As Byte, _
         ByRef pcbRecvLength As Long _
     ) As Long
     
     
     
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
    Public Function ReadBadge() As String
    Dim hContext As Long
    Dim hCard As Long
    Dim retval As Long
    Dim Scope As Long
    Dim readers As String * 256
    Dim groups As String * 256
    Dim activeprotocol As Long
    Dim readerlen As Long
    Dim scard_protocol_t0_or_t1 As Long
    Dim scard_share_shared As Long
    Dim recvlen As Long
    Dim bytArray() As Byte
    Dim recvbuff(256) As ByteArray
    Dim Smem As Integer
    Dim i As Integer
    Dim chaine_hexa As String
    Dim scad_leave_card As Long
     
        scard_protocol_t0_or_t1 = 0
        scard_share_shared = 3
        readerlen = 256
        recvlen = 255
        strHexa = ""
     
        retval = SCardEstablishContext(Scope, 0, 0, hContext)
        If retval <> 0 Then MsgBox "erreur SCardEstablishContext  n." & CStr(retval)
     
        retval = SCardListReaders(hContext, groups, readers, readerlen)
        If retval <> 0 Then MsgBox "erreur SCardListReaders n. " & CStr(retval)
     
        retval = SCardConnect(hContext, readers, scard_share_shared, scard_protocol_t0_or_t1, hCard, activeprotocol)
        If retval <> 0 Then MsgBox "erreur SCardConnect n. " & CStr(retval)
     
     
        retval = SCardStatus(hCard, readers, readerlen, 1, scard_protocol_t0_or_t1, recvbuff(0), recvlen)
        If retval <> 0 Then MsgBox "Erreur SCardStatus n. " & CStr(retval)
     
        bytArray = recvbuff(0).B
     
        For i = 0 To recvlen - 1
            chaine_hexa = bytArray(i)
            strHexa = strHexa & " " & Format(decimal_en_hexadecimal(chaine_hexa), "00")
        Next i
     
        retval = SCardDisconnect(hCard, scad_leave_card)
        If retval <> 0 Then MsgBox "erreur SCardDisconnect n. " & CStr(retval)
     
        retval = SCardReleaseContext(hContext)
        If retval <> 0 Then MsgBox "erreur SCardReleaseContext n. " & CStr(retval)
     
        ReadBadge = Trim(strHexa)
     
    End Function

  12. #12
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Août 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Août 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Le code fourni ne s'exécute pas sous MS Access
    Les types ByteArray et GUID ne sont pas reconnus.
    Si quelqu'un a une idée…

    Merci.

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je te suggère d'ouvrir une discussion sur ce point en mettant celle-ci en référence (et en recopiant le code concerné dans ta nouvelle discussion) car poster dans une discussion terminée n'est pas la meilleure solution pour attirer des réponses.

    Et je n'ai aucune idée d'où viennent les 2 types mentionnés car le code ressemble bien à du VBA pas du VB6 ou VB.Net.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour lire les donnée d'une table externe
    Par waldoun dans le forum SQL*Loader
    Réponses: 0
    Dernier message: 01/05/2009, 18h16
  2. Réponses: 5
    Dernier message: 20/10/2008, 16h19
  3. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  4. Réponses: 3
    Dernier message: 31/01/2007, 17h46
  5. [VB+Lotus Notes] Lire les données d'une DB Lotus
    Par kenn dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/08/2005, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo