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 :

[2003] utiliser des périphériques usb


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut [2003] utiliser des périphériques usb
    bonsoir,

    voila ,je suis en access 2003 et j'ai trois lecteur de badge magnetique en usb .j'aimerais savoir comment faire pour que la base reconnaisse quel lecteur est utilisé,sachant qu'il remplisse une seule zone texte.

    d'avance je vous remercie.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    est-ce que les lecteurs de badges apparaissent dans la liste des lecteurs de la station de travail, au même titre que les disques durs et les lecteurs CD/DVD ?
    Si oui, est-ce que quelque chose de ce genre fait l'affaire ?

    Dans un module standard
    1) Récupérer la liste des lecteurs de badges
    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
     
    Type BADGE_READER
      Lettre As String
      N°Serie As String
    End Type
     
    Public BdgReaders(1 To 3) As BADGE_READER
     
    Private Sub GetBdgReaders() 
     Dim SysF, Lecteur
     Dim i As byte 
     Set SysF=CreateObject("Scripting.FileSystemObject")
     i=0
     For Each Lecteur In SysF.Drives
       'Si le lecteur est un lecteur amovible est <> du lecteur de disquette
       If Lecteur.DriveType=1 And Lecteur.DriveLetter>"B" Then
          i=i+1
          bdgReaders(i).Lettre=Lecteur.DriveLetter & ":\"
          bdgReaders(i).N°Serie=Lecteur.SerialNumber
       End if
     Next 
     Set SysF=Nothing
    End Sub
    2)Renvoyer la lettre du lecteur courant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function GetCurrentBdgReader() As String
     Dim SysF 
     Dim i As Byte 
    'Si la liste des lecteurs n'est pas connue la récupérer
     if bdgReaders(1).letter="" Then GetBbgReaders
     Set SysF=CreateObject("Scripting.FileSystemObject")
     For i=1 To 3
      If SysF.GetDrive(bdgReaders(i).Lettre).IsReady Then
         GetCurrentBdgReader=bdgReaders(i).Lettre
         Exit For
      End if
     Next i
     Set SysF=Nothing
    End function

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    les lecteurs n'apparaissent pas dans la liste des lecteurs de la station de travail,seulement dans le gestionnaire de peripherique sous peripherique d'interface utilisateur (HID) et quand j'ouvre il me renvoie une chaine de caractères avec VID ET PID
    est ce que le numero d'instance du périphérique pourrait servir de numero de série?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Comme je le pensais, je me suis avancé.
    Tu dois sûrement avoir un logiciel qui renvoie les infos de la carte lue ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    je n'ai pas de logiciel avec les lecteurs de badge.avant de commencer j'aurai voulu identifier quel lecteur etait actif lors du passage du badge pour que aprés je puisse faire une affectation.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Je vois, de quelle manière fais-tu une affectation ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    avec un lecteur quand le badge passe et qu'il est reconnu ,je positionne la souris sur un bouton .mais quand je rajoute un secon lecteur je ne peux pas utiliser cette méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub texte300_afterupdate()
    If Me.Texte300.Value = "%12345?"Then
    SetCursorPos 720, 590
    mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 720, 590, 0, 0
    SetCursorPos 380, 155
    mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 380, 155, 0, 0
    Else
    SetCursorPos 380, 155
    mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, 380, 155, 0, 0
    End If
    Me.Texte300.Value = ""
     
    End Sub

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    peut on faire apparaitre dans le poste de travail un peripherique USB (HID)et lui assigné une lettre ?

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonsoir,
    non, tu ne peux pas, ce sont des périphériques d'entrées. Il faut je crois utiliser les API windows http://msdn.microsoft.com/en-us/libr...43(VS.85).aspx

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    j'ai trouvé cette adresse,tu crois que cela pourrai faire l'affaire?
    http://www2.hawaii.edu/~hermany/api.htm

    a quoi pourrai me servir les API puisque dans le gestionnaire de peripheriques
    j' ai les renseignement USB/VID ET PID;est ce que ces renseignement ne sont pas suffisant pour pouvoir faire une affectation materielle?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    à ce niveau, je suis incompétent. Je garde les reflexes de programmeur assembleur 16 bits; imaginant qu'il faut interroger les registres du port ou créer un driver pour récupérer les messages provenant des périphériques. Là, je ne sais pas comment ça se passe avec un seul lecteur, encore moins avec trois.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    ok je te remercie quand même pour ton aide.mais une petite question.y aurait il un moyen de programmer differemment? je m'explique:

    j' ai 3 lecteurs, lecteur 1 ; lecteur 2 lecteur 3

    j'ai 5 utilisateurs A ,B,C, D,E

    chaque utilisateur n'aurait pas les meme droits:

    A,B,D lecteur 1

    A,B,C,D lecteur 2

    A,B,D,E lecteur 3

    y aurait il un moyen de mettre une condition pour que A,B et E ne commande pas la méme chose meme en changeant de lecteur?

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Oui, il me manque un truc dans ta requête.
    Tu disposes d'un activex, d'une dll... comment reçois-tu les messages des lecteurs ? C'est là que je suis perdu ?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    en fait le lecteur est en hid keyboard il n'a besoin de rien.des que je passe un badge il me dit ce qui est inscrit dans une zone de texte si A est inscrit dans le badge,si je passe le badge il me renvoi A dans la zone texte(pas de dll d'installer ni active X)

    est ce qu'en utilisant le select case cela pourrait fonctionner?

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    ji'ai repris ton morceau de code ,sachant que j'ai un projet similaire je n'arrivé pas a simuler un click,tandis que maintenant ca marche un deplacant la souris.je te remercie.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    merci,content de t'avoir aider ,mais pour moi j'ai toujours un problème et je ne sais pas comment le résoudre

  17. #17
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    Citation Envoyé par fred271
    a quoi pourrai me servir les API puisque dans le gestionnaire de peripheriques
    j' ai les renseignement USB/VID ET PID;est ce que ces renseignement ne sont pas suffisant pour pouvoir faire une affectation materielle?
    le gestionnaire de périphérique ne te donne pas l'activité de celui-ci.

    tes lecteurs se comportent comme de périphériques supplémentaires comme s'il y avait trois souris ou trois clavier sur l'usb.
    ils déclenchent un événement et un message.
    la seul partie que tu peux gérer par défaut sur access c'est la réception d'une partie du message: les caractères lu par le lecteur de badge.
    il te faut donc utiliser des API, et dont le lien que t'a donné ilank me parait une bonne piste, pour intercepter l'événement avec le message complet qui doit contenir aussi l'origine du message (sa provenance) et ainsi savoir quelle lecteur a été utilisé.

    bonne continuation,

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    j'ai pu identifier mon lecteur de badge (identificateur global unique =GUID)

    GUID {745A17A0-74D3-11D0-B6FE-00A0C90F57DA}

    comment je peux l'utiliser maintenant qu'il est identifié?

  19. #19
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    à défaut d'avoir la science infuse, je te suggère plutôt d'attaquer la lecture par api des événements et de débugger les messages entrants afin d'identifier le message du bagde et ainsi extraire du message la partie id qui je suis certain ne sera pas le GUID (trop long pour être inclus dedans).


  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    le seul probleme c'est que je ne sais pas faire cela.j'ai un viewer usb et il ne m'indique aucune données a part ce qui est sur le badge.
    voila les seules informations que j'ai pu receuillir via usb monitor.(adressage du port usb et ce qui y circule.)la seule chose qui appartient réellement au lecteur est le GUID;


    Pipe Handle: 0x828ac364 (Endpoint Address: 0x81)
    Get 0x8 bytes from the device
    02 00 00 00 00 00 00 00 ........
    000337: Bulk or Interrupt Transfer (DOWN), 26.03.2009 21:00:20.897 +0.0
    Pipe Handle: 0x828ac364 (Endpoint Address: 0x81)
    Get 0x8 bytes from the device
    000338: Bulk or Interrupt Transfer (UP), 26.03.2009 21:00:20.907 +0.010. Status: 0x00000000
    Pipe Handle: 0x828ac364 (Endpoint Address: 0x81)
    Get 0x8 bytes from the device
    00 00 00 00 00 00 00 00 ........
    000339: Bulk or Interrupt Transfer (DOWN), 26.03.2009 21:00:20.907 +0.0
    Pipe Handle: 0x828ac364 (Endpoint Address: 0x81)
    Get 0x8 bytes from the device
    000340: Bulk or Interrupt Transfer (UP), 26.03.2009 21:00:20.907 +0.0. Status: 0x00000000
    Pipe Handle: 0x828ac364 (Endpoint Address: 0x81)
    Get 0x8 bytes from the device
    00 00 28 00 00 00 00 00 ..(.....
    000341: Bulk or Interrupt Transfer (DOWN), 26.03.2009 21:00:20.907 +0.0
    Pipe Handle: 0x828ac364 (Endpoint Address: 0x81)
    Get 0x8 bytes from the device


    Pipe Information (Handle 0x828ac364, Endpoint address 0x81)
    Maximum packet size: 0x8
    Endpoint address: 0x81
    Interval: 0x1
    Transfer Type: Interrupt
    Maximum transfer size: 0x1000

Discussions similaires

  1. retirer automatiquement des périphériques USB au démarage.
    Par Pierre GIRARD dans le forum Windows
    Réponses: 10
    Dernier message: 09/09/2010, 18h43
  2. Réponses: 1
    Dernier message: 31/12/2009, 14h31
  3. Réponses: 2
    Dernier message: 09/06/2008, 23h56
  4. Déconnexion des périphériques USB
    Par Franck.H dans le forum Composants
    Réponses: 5
    Dernier message: 21/11/2007, 17h35
  5. [XP] Détection aléatoire des périphériques USB
    Par aymen007 dans le forum Windows XP
    Réponses: 10
    Dernier message: 25/09/2007, 16h25

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