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 confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    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 : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    je connais cet article

    est ce que ca r�pond � tes besoins ?

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    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
    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 confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    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
    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 confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    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
    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 confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    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
    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 confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    D�tails du profil
    Informations personnelles :
    Localisation : France

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

    Merci bien

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

    Informations professionnelles :
    Activit� : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    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
    ?

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

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

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    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