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

Python Discussion :

Identification du Port USB


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut Identification du Port USB
    Bonjour,


    Je souhaite mettre en place une communication USB avec un instrument.

    Mais je ne sais pas à quelle numéro de port USB est connecter l'instrument de mesure...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from ThorlabsPM100 import ThorlabsPM100
    import visa
    
    rm = visa.ResourceManager()
    inst = rm.open_resource('USB0::0x1313::0x8070::PM002896::INSTR',timeout=1)
    
    power_meter = ThorlabsPM100(inst = inst)
    J'ai tenté les diffférentes option; USB1 ... USB 4 et j'obtiens comme message d'erreurs:

    File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\protocols\usbtmc.py", line 169, in __init__
    raise ValueError('No device found.')
    ValueError: No device found.



    Ainsi, comment peut on définir le port USB qui est utilisé par l'instrument?



    NB: J'utilise la version python 3.5 64bit et Windows 10 64 bit.

    Merci d'avance pour votre retour.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Avec pyusb tu peux identifier les divers appareils connectés sur tes ports usb.

    Regarde ici: https://github.com/pyusb/pyusb/blob/...s/tutorial.rst

  3. #3
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Merci pour votre retour VinsS



    J'ai testé le programme proposé sur le site https://github.com/pyusb/pyusb/blob/...s/tutorial.rst :


    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
    import usb.core
    import usb.util
     
    # find our device
    dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
     
    # was it found?
    if dev is None:
        raise ValueError('Device not found')
     
    # set the active configuration. With no arguments, the first
    # configuration will be the active one
    dev.set_configuration()
     
    # get an endpoint instance
    cfg = dev.get_active_configuration()
    intf = cfg[(0,0)]
     
    ep = usb.util.find_descriptor(
        intf,
        # match the first OUT endpoint
        custom_match = \
        lambda e: \
            usb.util.endpoint_direction(e.bEndpointAddress) == \
            usb.util.ENDPOINT_OUT)
     
    assert ep is not None
     
    # write the data
    ep.write('test')
    Mais j'obtiens cela comme message:

    Traceback (most recent call last):
    File "C:/Users/icu/AppData/Local/Programs/Python/Python35/Dossiertest/testusb.py", line 9, in <module>
    raise ValueError('Device not found')
    ValueError: Device not found



    Pourtant j'ai connecté différent instrument sur le pc ( Instrument de mesure, clé usb)
    Mais toujours la même réponse " Device not found" .


    Avez vous des idées, concernant ce problème?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Tu n'as manifestement pas les bons IDs.

    Que donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    devs = usb.core.find(find_all=True)
    for d in devs:
        print(d)
    ?

  5. #5
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    J'ai testé votre proposition de code.

    Mais cela ne donne rien...


    Est ce normal?

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Heu non, pas normal du tout, tu dois avoir une longue liste de données décrivant tous tes ports USB.

    Y compris les ports vides !

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Sous Linux il existe la commande lsusb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    vincent@djoliba:~$ lsusb
    Bus 002 Device 004: ID 04b8:08ae Seiko Epson Corp. 
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 003: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
    Bus 004 Device 002: ID 046d:c31c Logitech, Inc. Keyboard K120
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 002: ID 0bc2:ab30 Seagate RSS LLC 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Pour Windows j'ignore ce qui existe ...

  8. #8
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Merci pour votre aide VinsS.

    En me basant sur vos conseils, j'ai donc chercher un outil sur Windows qui me permets de lister les ports USB...

    J'ai donc installé USB Devices Viewer, un logiciel qui permet de lister les ports USB connecté sur Windows.

    En lançant l'exe, j'obtiens cela :

    Nom : usbviewer.PNG
Affichages : 2858
Taille : 62,0 Ko



    A partir des infos : " USB\VID_1313&PID_8078\PM002896" et "Port_#0001.Hub_#0003"

    Je modifie le programme de communication:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    from ThorlabsPM100 import ThorlabsPM100
    import visa
     
    rm = visa.ResourceManager()
    inst = rm.open_resource('USB1::0x1313::0x8078::PM002896::INSTR',timeout=1)
     
    power_meter = ThorlabsPM100(inst = inst)

    Mais je n'ai toujours le même message ....

    File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\protocols\usbtmc.py", line 169, in __init__
    raise ValueError('No device found.')
    ValueError: No device found.


    Je ne sais plus quoi faire


    Une aide à l'horizon?


    Merci d'avance

  9. #9
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par Cerise22 Voir le message
    Merci pour votre aide VinsS.
    Une aide à l'horizon?
    Dans la doc il est dit :

    The best way to connect your instrument is with the pyvisa package https://pyvisa.readthedocs.io/en/stable/
    Vous avez pensé à privilégier cette recommandation ?

  10. #10
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Bbonjour Nekcorp ,

    Oui , c'est le module pyvisa que j'utilise pour établir la communication USB.

    Notamment avec les commandes :

    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
     
     
    >>> import visa
    >>> rm = visa.ResourceManager()
    >>> rm.list_resources()
    ()
    >>> my_instrument = rm.open_resource('USB2::0x1313::0x8078::PM002896::INSTR')
    Traceback (most recent call last):
      File "<pyshell#8>", line 1, in <module>
        my_instrument = rm.open_resource('USB2::0x1313::0x8078::PM002896::INSTR')
      File "C:/Users/icu/AppData/Local/Programs/Python/Python35/Dossiertest\pyvisa\highlevel.py", line 1724, in open_resource
        res.open(access_mode, open_timeout)
      File "C:/Users/icu/AppData/Local/Programs/Python/Python35/Dossiertest\pyvisa\resources\resource.py", line 209, in open
        self.session, status = self._resource_manager.open_bare_resource(self._resource_name, access_mode, open_timeout)
      File "C:/Users/icu/AppData/Local/Programs/Python/Python35/Dossiertest\pyvisa\highlevel.py", line 1681, in open_bare_resource
        return self.visalib.open(self.session, resource_name, access_mode, open_timeout)
      File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\highlevel.py", line 194, in open
        sess = cls(session, resource_name, parsed, open_timeout)
      File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\sessions.py", line 213, in __init__
        self.after_parsing()
      File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\usb.py", line 201, in after_parsing
        self.parsed.serial_number)
      File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\protocols\usbtmc.py", line 256, in __init__
        super(USBTMC, self).__init__(vendor, product, serial_number, **kwargs)
      File "C:\Users\icu\AppData\Local\Programs\Python\Python35\lib\site-packages\pyvisa-py\protocols\usbtmc.py", line 169, in __init__
        raise ValueError('No device found.')
    ValueError: No device found.

    Quand je fais rm.list_resources(), normalement cela doit me lister l'ensemble des ressources dispo, mais bizarrement ce n'est pas le cas

    Je comprends vraiment pas ce qu'il se passe...

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Edit : je viens de lire ton autre discussion. C'est sans aucun doute un problème d'installation de module 32/64 bits…

    Arrives-tu à communiquer avec l'appareil en utilisant le logiciel fourni par le fabricant ?

    => https://www.thorlabs.com/software_pa...e.cfm?code=OPM

    Que renvoie ceci dans un terminal Windows ?

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. Identification du bon port USB
    Par L'elfe d'Azur dans le forum C#
    Réponses: 2
    Dernier message: 06/09/2010, 10h53
  2. [TP]Impression sur port USB
    Par haypo dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 18/07/2003, 11h09
  3. Réponses: 2
    Dernier message: 27/02/2003, 01h33
  4. Ports USB
    Par MAIROT dans le forum Composants VCL
    Réponses: 8
    Dernier message: 23/09/2002, 20h07
  5. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24

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