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

Bibliothèques tierces Python Discussion :

py usb aide utilisation


Sujet :

Bibliothèques tierces Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut py usb aide utilisation
    Bonjour a tous,
    dans le cadre d'un projet je dois recuperer les sortie d'un fpga sur un pc. Pour le moment je le fais avec python via un protocole serie, mais je voudrais utiliser un USB, pour cela j'ai telecharger les lib pyUSB(http://bleyer.org/pyusb/) pour le 2.6 que j'utilise cependant des la premiere ligne il me trouve une erreur quand je tape import usb. Je ne peux donc faire aucun test si quelquun sait d'ou le pb peux venir? Et me donner des conseils sur la programation avec ce module car je suis un peu novice. Je dois recuperer un mot de 16 bits sur le bus en gros!
    Merci de votre aide

  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,

    Pourquoi fais-tu 'import usb' ?

    Sur le site ils donnent cet exemple :

    # import the PyUSB module
    import d2xx
    ...
    Je me trompe ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    effectivement, il semble que D2xx soit l'evolution de la bib usb, par contre avec cette bib je ne sais pas comment faire pour lire un mot sur le bus. Leur exemple est sence te lister les periph connecte mais ca ne marche pas qqn a t il deja essaye?

  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
    J'ai vérifié sur ma bécane, (Ubuntu Lucid) et en fait j'ai un pyUSB, provenant des dépôts officiels et qui n'est pas du tout celui dont tu parles.

    Qui, par ailleurs, fonctionne sans problème :

    /usr/share/doc/python-usb/examples

    As-tu regardé là :

    http://www.ftdichip.com/Support/Docu...gramGuides.htm

    Je n'ai pas fouillé plus loin puisque je n'ai pas ce pyUSB là.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci VinsS
    mais ton lien concerne le langage C et non le python,
    pourrais tu me dire ou tu as trouve le tien de pyUSB?
    Je tourne sous windows avec py2.6, et je n'arrive pas a trouve le bon module
    mon projet dois etre terminer dici la fin de la semaine donc je manque un peu de temps...
    Merci de votre aide a tous

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Le package PyUSB dont parle VinsS se trouve à pyusb
    Il est construit au dessus de libusb - dont il existe une variante win32 -.

    Celui dont vous parlez est construit au dessus des DLL - Windows seulement? - de FTDI -. Son auteur a encapsulé l'API C pour qu'elle soit plus intégrée à Python mais n'a pas trop documenté cela: pour utiliser autre chose que les exemples donnés sur le site, il faut souker dans les sources et "tester".

    Pour la fin de la semaine, c'est quand même un peu short sauf si vous n'avez que des fonctions basiques à mettre en oeuvre.
    Bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    merci,
    c'est sur ce lien que j'avais trouve cette lib.
    Je vais continuer de chercher comment utiliser cette derniere
    merci

  8. #8
    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, je pense que tu n'auras pas les exemples avec la version windows de SourceForge.

    Je te les copie :

    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
     
    #!/usr/bin/env python
     
    #
     
    # Enumerate usb devices
     
    #
     
    #Copyright 2005 - 2007 Wander Lairson Costa
     
     
     
    import usb
     
     
     
    busses = usb.busses()
     
     
     
    for bus in busses:
     
    	devices = bus.devices
     
    	for dev in devices:
     
    		print "Device:", dev.filename
     
    		print "  Device class:",dev.deviceClass
     
    		print "  Device sub class:",dev.deviceSubClass
     
    		print "  Device protocol:",dev.deviceProtocol
     
    		print "  Max packet size:",dev.maxPacketSize
     
    		print "  idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor)
     
    		print "  idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct)
     
    		print "  Device Version:",dev.deviceVersion
     
    		for config in dev.configurations:
     
    			print "  Configuration:", config.value
     
    			print "    Total length:", config.totalLength 
     
    			print "    selfPowered:", config.selfPowered
     
    			print "    remoteWakeup:", config.remoteWakeup
     
    			print "    maxPower:", config.maxPower
     
    			for intf in config.interfaces:
     
    				print "    Interface:",intf[0].interfaceNumber
     
    				for alt in intf:
     
    					print "    Alternate Setting:",alt.alternateSetting
     
    					print "      Interface class:",alt.interfaceClass
     
    					print "      Interface sub class:",alt.interfaceSubClass
     
    					print "      Interface protocol:",alt.interfaceProtocol
     
    					for ep in alt.endpoints:
     
    						print "      Endpoint:",hex(ep.address)
     
    						print "        Type:",ep.type
     
    						print "        Max packet size:",ep.maxPacketSize
     
    						print "        Interval:",ep.interval
    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
     
    #!/usr/bin/env python
     
     
     
    """
     
    Provides an interface to USB Printer Class devices.
     
    """
     
     
     
    import usb
     
    import types
     
     
     
    PRINTER_CLASS			= 0x07
     
    PRINTER_SUBCLASS		= 0x01
     
    UNIDIRECTIONAL_PROTOCOL	= 0x01
     
    BIDIRECTIONAL_PROTOCOL	= 0x02
     
    IEEE1284_4_PROTOCOL		= 0x03
     
    VENDOR_PROTOCOL			= 0xff
     
     
     
    class Printer:
     
    	def __init__(self, device, configuration, interface):
     
    		"""
     
                    __init__(device, configuration, interface) -> None
     
     
     
                    Initialize the device.
     
                            device: printer usb.Device object.
     
                            configuration: printer usb.Configuration object of the Device or configuration number.
     
                            interface: printer usb.Interface object representing the
     
                                       interface and altenate setting.
     
                            
     
                    """
     
    		if PRINTER_CLASS != interface.interfaceClass:
     
    			raise TypeError, "Wrong interface class"
     
     
     
    		self.__devhandle = device.open()
     
    		self.__devhandle.setConfiguration(configuration)
     
    		self.__devhandle.claimInterface(interface)
     
    		self.__devhandle.setAltInterface(interface)
     
     
     
    		self.__intf = interface.interfaceNumber
     
    		self.__alt	= interface.alternateSetting
     
     
     
    		self.__conf = (type(configuration) == types.IntType \
     
    						or type(configuration) == types.LongType) and \
     
    						configuration or \
     
    						configuration.value
     
     
     
    		# initialize members
     
    		# TODO: automatic endpoints detection
     
    		self.__bulkout	= 1
     
    		self.__bulkin	= 0x82
     
     
     
    	def __del__(self):
     
    		try:
     
    			self.__devhandle.releaseInterface(self.__intf)
     
    			del self.__devhandle
     
    		except:
     
    			pass
     
     
     
    	def getDeviceID(self, maxlen, timeout = 100):
     
    		"""
     
                    getDeviceID(maxlen, timeout = 100) -> device_id
     
     
     
                    Get the device capabilities information.
     
                            maxlen: maxlength of the buffer.
     
                            timeout: operation timeout.
     
                    """
     
    		return self.__devhandle.controlMsg(requestType = 0xa1,
     
    										   request = 0,
     
    										   value = self.__conf - 1,
     
    										   index = self.__alt + (self.__intf << 8),
     
    										   buffer = maxlen,
     
    										   timeout = timeout)
     
     
     
    	def getPortStatus(self, timeout = 100):
     
    		"""
     
                    getPortStatus(timeout = 100) -> status
     
     
     
                    Get the port status.
     
                            timeout: operation timeout.
     
                    """
     
    		return self.__devhandle.controlMsg(requestType = 0xa1,
     
    										   request = 1,
     
    										   value = 0,
     
    										   index = self.__intf,
     
    										   buffer = 1,
     
    										   timeout = timeout)[0]
     
     
     
    	def softReset(self, timeout = 100):
     
    		"""
     
                    softReset(timeout = 100) -> None
     
     
     
                    Request flushes all buffers and resets the Bulk OUT
     
                    and Bulk IN pipes to their default states.
     
                            timeout: the operation timeout.
     
                    """
     
    		self.__devhandle.controlMsg(requestType = 0x21,
     
    								   	request = 2,
     
    								   	value = 0,
     
    								   	index = self.__intf,
     
    								   	buffer = 0)
     
     
     
     
     
    	def write(self, buffer, timeout = 100):
     
    		"""
     
                    write(buffer, timeout = 100) -> written
     
     
     
                    Write data to printer.
     
                            buffer: data buffer.
     
                            timeout: operation timeout.
     
                    """
     
    		return self.__devhandle.bulkWrite(self.__bulkout,
     
    										  buffer,
     
    										  timeout)
     
     
     
    	def read(self, numbytes, timeout = 100):
     
    		"""
     
                    read(numbytes, timeout = 100) -> data
     
     
     
                    Read data from printer.
     
                            numbytes: number of bytes to read.
     
                            timeout: operation timeout.
     
                    """
     
    		return self.__devhandle.bulkRead(self.__bulkin,
     
    										 numbytes,
     
    										 timeout)
    Bon travail.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    j'ai toujours droit a l'erreur au moment de l'import de la bib... alors la je ne comprend plus

Discussions similaires

  1. [USB]Comment utiliser cette API pour la communication USB
    Par fouguasse dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 19/08/2007, 18h18
  2. aide utilisation fonction MM_jumpMenu
    Par calitom dans le forum Langage
    Réponses: 5
    Dernier message: 20/07/2006, 16h53
  3. [PHP-JS] aide utilisation checkbox
    Par calitom dans le forum Langage
    Réponses: 7
    Dernier message: 28/06/2006, 14h13
  4. [USB] [JNI] Utiliser JNI pour accéder aux ports USB
    Par Javatator dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/10/2005, 06h40
  5. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59

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