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

Visual C++ Discussion :

API communication port / USB


Sujet :

Visual C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut API communication port / USB
    Bonjour j'ai lu sur un forum qqun qui disait , mot pour mot : "Sur la MSDN il doit y avoir des API pour récupérer le nom des périphériques".
    En fait la discussion tournait autours des périphériques USB, qui se comporte comme un port série avec un nom différent (qu'il faut récupérer).
    Donc j'ai cherché en vain sur la MSDN, parlant meme avec Alexia (personne mise à notre service par microsoft pour aider dans nos recherches (j'ai été impressionné que microsoft fasse ca gratuitement d'ailleurs) ) .

    Est ce que qqun peut m'éclairer mieux qu'Alexia ? si une telle bibliotheque existe, et (j'en rajoute ^^) si des bibliotheques pour communiquer avec les ports séries existent ? Et est ce qu'on peut trouver des choses dans ce genre sur la MSDN?

    Je vous remercie d'avance pour tous les approfodissements que vous pourrez m'apporter sur la question

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    je connais cet article

    est ce que ca répond à tes besoins ?
    Hiko-seijuro

    n'cha - hoyoyo gang

    espace perso : http://hiko-seijuro.developpez.com
    dernier tuto : Introduction à l'éditeur de texte Emacs sous linux
    consulter les faqs : http://www.developpez.com/faq
    PAS DE QUESTIONS TECHNIQUES PAR MP OU MAIL

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut
    Je sais pas mais il me semble que ca parle plus du niveau du dessous, c'est à dire toute la partie drivers, cette partie est normalement gérer par windows, c'est la partie communication qui m'interresse plus

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu peux commencer par regarder ce qu'il y a dans la faq http://c.developpez.com/faq/vc/?page...WithSerialPort

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut
    Ok pour la partie port, c parfait

    Mais pour la partie USB, j'ai un petit probleme.
    Je vais recentrer ma question :

    En Visual Basic il y a une fonction : "FindHIDInterface" qui retourne le nom du périphérique USB branché (selon les paramètres je ne sais plus exactement à quoi ils correspondent). On se sert ensuite de ce nom à la place du nom du port dans une connexion avec un port.
    Je suis donc à la recherche de la librairie, ou des fonctions, peut importe ou elles sont (MSDN ou non ) qui permettrai une correspondance avec cette fonction VisualBasic.

    Ou un exemple de connexion à un port USB en C++

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    jamais entendu parler de FindHIDInterface
    mais si t'as une bibliotheque ou une dll, tu devrais pouvoir la réutiliser en C++

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par usbeck
    En Visual Basic il y a une fonction : "FindHIDInterface" qui retourne le nom du périphérique USB branché (selon les paramètres je ne sais plus exactement à quoi ils correspondent).
    Je suis donc à la recherche de la librairie, ou des fonctions, peut importe ou elles sont (MSDN ou non ) qui permettrai une correspondance avec cette fonction VisualBasic.

    Ou un exemple de connexion à un port USB en C++
    c'est pas du tout standard sous VB.
    Pour tout ce qui est periphs il faut prendre des API comme CreateFile.
    ( voir l'exemple du tutoriel)
    Aller sur codeguru.com ou codeproject.com à tout hasard

    Citation Envoyé par usbeck
    Est ce que qqun peut m'éclairer mieux qu'Alexia ? si une telle bibliotheque existe, et (j'en rajoute ^^) si des bibliotheques pour communiquer avec les ports séries existent ? Et est ce qu'on peut trouver des choses dans ce genre sur la MSDN?
    Le MSDN ne détaille que les API bas-niveau comme CreateFile.
    Il n'y a pas de bibliothèques sous Windows ( ou peu ) , que des fonctions de bases.
    Il faut tout créer par soi-même en utilisant les API.
    Fais google + CreateFile+MSDN par exemple

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut
    J'ai ouie dire que ma fonction VB : venait d'une dll, il y a moyen d'utiliser des dll en C++ ?

    (arf c peut etre un peu simple comme question en plus j'ai pas fait de recherche je crains)

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est sur que ca craint ...

    faut savoir de quel genre de dll il s'agit et comment elle a été créé, mais bon, si c'est une dll VB, y a 99% de chance que ca soit un objet COM, donc utilisable avec VC++
    et puis si c'est une dll autre, utilisée depuis VB, ca devrait se faire aussi

    Comment est utilisée la dll en VB ? déclaration ? instanciation ? référencée ?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut
    Bon vu qu'on en parle je saute sur l'occasion et je montre ca tout de suite
    Malheureusement je n'ai pas tout retenu dans ce qu'on m'a dit donc je ne sais pas ou l'appel à la dll est faite, mais je le saurais vendredi au plus tard.

    Le code VB de ma fonction est le suivant :

    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
     
    Public Function FindHIDInterface(VID As Integer, PID As Integer, UsagePage As Integer) As String
    	' This function searches the system HID tables for a device matching VID, PID and UsagePage
    	' If found then it returns the system name for the device (for a later open)
    	Dim HidGuid As GUID
    	Dim PnPHandle, HidHandle, HidEntry, BytesReturned, i As Long
    	Dim HidName, NameMatch As String
    	Dim Success, Found As Boolean
    	Dim DeviceInterfaceData As Device_Interface_Data
    	Dim FunctionClassDeviceData As Device_Interface_Detail
    	Dim Attributes As HIDD_ATTRIBUTES
    	Dim DataPointer As Long
    	Dim HidCapabilities As Hid_Capabilities
    	Dim temp As Integer
    	'
    	' Clear the name, return this empty string if the device is not found
    	NameMatch = ""
    	'   First, get the HID class identifier
    	Call HidD_GetHidGuid(HidGuid)
    	'   Get a handle for the Plug and Play node, request currently active HID devices
    	PnPHandle = SetupDiGetClassDevs(HidGuid, 0, 0, DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE)
    	If (PnPHandle = INVALID_DEVICE_HANDLE) Then ErrorExit ("Could not attach to PnP node")
    	'
    	HidEntry = 0
    	Found = False
    	DeviceInterfaceData.cbSize = Len(DeviceInterfaceData)
    	'   Step through the table of HID devices
     
    	Do While (SetupDiEnumDeviceInterfaces(PnPHandle, 0, HidGuid, HidEntry, DeviceInterfaceData) And Not (Found))
    		'   There is a device here, get it's name
    	    FunctionClassDeviceData.cbSize = 5 ' Minimum size, my structure can hold maximum size
    	    Success = SetupDiGetDeviceInterfaceDetail(PnPHandle, DeviceInterfaceData, FunctionClassDeviceData, _
    	        UBound(FunctionClassDeviceData.DataPath), BytesReturned, 0)
     
    	    If (Success = 0) Then 
    			ErrorExit ("Could not get the name of this HID device")
     
    			' Convert returned C string to Visual Basic String
    			HidName = ""
    			i = 0
    			Do While FunctionClassDeviceData.DataPath(i) <> 0
    		        HidName = HidName & Chr$(FunctionClassDeviceData.DataPath(i))
    				i = i + 1
    	        Loop
     
    			' Can now open this HID device for inspection
    			HidHandle = CreateFile(HidName, 0, FILE_SHARE_READWRITE, SA, OPEN_EXISTING, 0, 0)
    			If (HidHandle = INVALID_DEVICE_HANDLE) Then 
    				ErrorExit ("Could not open HID device")
     
    				' Is it OUR HID device?
    				If HidD_GetAttributes(HidHandle, Attributes) Then
    					If ((Attributes.VendorID = VID) And (Attributes.ProductID = PID)) Then
    						' Is it the correct interface?
    						Success = HidD_GetPreparsedData(HidHandle, DataPointer)
    						If (Success) Then
    						End If
    					End If
    				End If
    				Call CloseHandle(HidHandle)
    			End If 'HidD_GetAttributes
    			HidEntry = HidEntry + 1 ' Check next entry
    	Loop 'SetupDiEnumDeviceInterfaces returns FALSE when there are no more entries
     
    	SetupDiDestroyDeviceInfoList (PnPHandle)
    	FindHIDInterface = NameMatch
    End Function
    Donc c pas tres clair surtout sans couleur ^^
    Mince j'ai envoyé alors que je voulais mettre en forme, je le refais si j'arrive à indenter correctement

  11. #11
    mat.M
    Invité(e)
    Par défaut
    Concernant le code donné, tu as oublié les déclarations des API comme declare lib contenues dans un module.
    Il suffit de porter le code VB sous C++

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    qu'est-ce qui t'empeche de traduire cette fonction ?

    SetupDiEnumDeviceInterfaces et autres SetupDiGetClassDevs font parti de l'api win32, tu peux les utiliser en C++

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut
    Oki ben ca se passera comme ca sans doute

    Merci bien

  14. #14
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Bonne idée, ca m'interresserai egalement...
    mais comment definer ou trouver la structure de certaines déclaration comme :
    Device_Interface_Data
    Device_Interface_Detail
    HIDD_ATTRIBUTES
    Hid_Capabilities
    ?
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Points : 47
    Points
    47
    Par défaut
    héhé j'ai une piste pour moi mais peut etre ca vous interresse aussi ^^ :
    The MPUSBAPI

  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
    j'ai peut etre trouvé quelque chose qui pourrait aider.

    http://translate.google.fr/translate...%3Dfr%26sa%3DX

Discussions similaires

  1. API pour Port USB C#
    Par nasix dans le forum C#
    Réponses: 1
    Dernier message: 28/02/2009, 14h02
  2. communication Port Usb en mode non bloquant
    Par laurentleroy dans le forum C
    Réponses: 4
    Dernier message: 28/10/2007, 23h29
  3. Communication Port USB
    Par gdumouli dans le forum C
    Réponses: 12
    Dernier message: 03/07/2007, 12h37
  4. Communication Port USB
    Par Skarsnick dans le forum Administration système
    Réponses: 2
    Dernier message: 28/03/2007, 13h41
  5. communication port usb
    Par ledaker dans le forum Windows
    Réponses: 3
    Dernier message: 21/03/2006, 09h28

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