libre/écrire un port USB

libre/écrire un port USB - C++ - Programmation

Marsh Posté le 18-01-2007 à 09:10:14    

Bonjour,
 
Je cherche à lire et écrire sur un port USB, je pensais que cela était trivial, il semble que non.
 
Quelqu'un à-til une idée, MSDN est muet, je n'ai rien vu de probant chez nos amis de "codeProject", pourant il doit bien y avoir un moyen simple genre  
  hCom = CreateFile( "USB001",                             // similaire à "COM1" ou "LPT1"  
                     GENERIC_READ | GENERIC_WRITE,
                     0,                                                // "w" accès exculsif
                     NULL,                                           // pas d'attributs de sécurité
                     OPEN_EXISTING,                            // on suppose que le port existe !
                     0,                                                // pas de "recouvrement"
                     NULL);                                          // cf. documentation
           
 
Merci d'avance.

Reply

Marsh Posté le 18-01-2007 à 09:10:14   

Reply

Marsh Posté le 18-01-2007 à 10:23:43    

Reply

Marsh Posté le 18-01-2007 à 20:07:13    

merci Karl, ton lien est une mine, il y en a presque trop, mais apparement ce que je veux faire n'est pas possible simplement.
Je vais donc me documenter sur les ports virtuels, je sens que ce n'est pas gagné.

Reply

Marsh Posté le 18-01-2007 à 20:59:58    

Ce lien répond à ta question, il faut en fait juste connaitre le GUID du device sur lequel tu souhaites communiquer.

Reply

Marsh Posté le 19-01-2007 à 00:09:23    

J'ai du lire trop vite, mon multi-tache fonctionne mal avec l'age ! et puis je me suis battu toute la journée avec ce P. de M. de HTML ! je retournerai lire mieux...

Reply

Marsh Posté le 19-01-2007 à 15:40:14    

Tu as bien cliqué sur le mot "lien" qui pointe vers la solution  :??:
Tu dois juste noter ceci :

 
Code :
  1. GUID const GUID_CLASS_COMPORT =
  2. { 0x86e0d1e0L, 0x8089, 0x11d0,
 

C'est le GUID de la classe du périphérique USB, SetupDiEnumDeviceInterfaces énumère tous les périphériques disponibles dans cette classe, à chaque itération de l'énumération, un appel à SetupDiGetDeviceInterfaceDetail te permet d'en savoir plus sur le device courant, un appel de SetupDiGetDeviceRegistryProperty permet de connaitre les informations inscrites dans la base de registre (ça sert à windows), la, tu as les informations nécéssaire pour ouvrir une le device via SetupDiOpenDeviceInterface.


Message édité par karlkox le 19-01-2007 à 15:41:03
Reply

Marsh Posté le 19-01-2007 à 15:47:59    

Ton aide est trés préciseuse ( : gain de temps), j'ai vu la marche à suivre  ce matin dans l'une des applications "HID" du site pré-cité mais il me manquait "hidsdi.h" pour la compiler et je n'ai pas eu le temps de partir chez MSDM2 pour le récupérer.
Je programme deux projets à la fois, plus un bug qui viens de surgir sur un truc qui tourne depuis deux ans !
Bref, je sature, en tout cas c'est vaiment sympta de me répndre, bien sur à charge de revanche.

Reply

Marsh Posté le 19-01-2007 à 16:27:06    

Je comprend ta situation, je suis un peu dans le même cas donc bon courage  :jap:

Reply

Marsh Posté le 20-01-2007 à 12:35:08    

J'ai testé ce matin, mais je ne trouve que le port COM1 !
 
est-ce que ceci n'est pas limitatif aux COM ?
 
DEFINE_GUID (GUID_CLASS_COMPORT, 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73);
 
hDevInfo = SetupDiGetClassDevs(guidDev, NUL, idFen,
   DIGCF_ALLCLASSES | DIGCF_DEVICEINTERFACE);
ou
//   DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);  
donnent les mêmes résultats ce qui me semble étrange !
 
Le reste fonctionne apparement bien (avec COM1 en tout cas)
 
Karl, tu fais quoi au juste en ce moment, un gros projet ?

Reply

Marsh Posté le 20-01-2007 à 12:59:19    

Salut,
J'ai décidé de chercher par mes propres moyens, j'ai donc fait une recherche dans les includes du ddk pour tout ce qui concerne l'usb, apres beaucoup de lecture, je suis tombé sur cette macro IOCTL_USB_USER_REQUEST que j'ai passé à google qui m'a amené à ici : tu as absolument tout ce que tu souhaites connaitre sur la communication via USB que ce soit au niveau client ou noyau (bas niveau).
J'ai vite fait lu quelques fonctions et la, c'est sûr, tout y est :)
Il te faudra par contre le DDK. (Mingw dispose d'une implémentation mais pas complète)

 

Pour ma part, j'ai différents projets plus ou moins gros en cours et que je doit finir :

 

- une lib de lecture de fichiers mod/xm/s3m (wip 65 %),
- un unlocker de fichier (quasi fini),
- je prépare une VAE (validation des acquis de l'experience, je suis autodidacte), je vais donc devoir proposer des projets (je pense à un lecteur audio du style wxMusik ou MusikCube),
- le "port" de FMOD Ex pour PureBasic (un langage Basic TRES évolué/rapide/portable) à savoir l'API et tous les exemples,
- des routines de lecture des fichiers mp3 (tag/headers) mais quelque chose de TRES robuste (pas un simple check des 4 ou 16 premiers ko),
- un logiciel de retouche audio compatible VST,
- terminer mon frontend de l'encodeur Nero AAC (wip 80 %) avec en plus support d'autres formats autre que le WAV via des plugins maisons,
- commencer et terminer un logiciel de calcul pour la course à pied (FCMAC, VO2MAX, VMA ...),
- commencer et terminer un logiciel qui tripotera tout signal audio via FFT pour en faire un peu n'importe quoi (affichage du spectre via différentes fenêtres par exemple),
- porter tous mes plugins pour foobar2000 0.8 vers la v 0.9.

 

Comme on dit, y a du boulot  :p

  


Message édité par karlkox le 20-01-2007 à 13:01:10
Reply

Marsh Posté le 20-01-2007 à 12:59:19   

Reply

Marsh Posté le 20-01-2007 à 13:15:25    

Merci encore ...
Moi aussi j'ai cherché, mais sur une autre piste, et en testant les differents GUID
 deHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses
 
je progresse pas mal, mais j'ai aussi des obligations familialles et donc je vais devoir arreter pour ce matin !
Je vois que le travail ne te manque pas, et que c'est assez clair dans ton esprit, mais ce sont des projets non-commerciaux (à court terme).
Tu me parles de VAE va voir ceci (MAIS ATTENTION C'EST EN TEST A NE PAS DIVULGER !!! ET PAS TROP DE CONNEXIONS sinon je ne pourrais plus analyser mon travail, MERCI)  [lien en message privé]
 
Pour tes présentations je peux peut être t'aider, parce que j'ai la pratique d'être de l'autre coté ...
 
A bientôt
Gérard


Message édité par stabia le 20-01-2007 à 18:23:06
Reply

Marsh Posté le 20-02-2007 à 06:29:31    

excusez moi, mais je souhaite egalement ercevoir des info d'un appareil branche en USB. Je suis un peu debutant, excusez moi, mais c'est quoi une DDK ?
excusez moi

Reply

Marsh Posté le 21-02-2007 à 14:11:26    

Pour apercevoir des infos d'un port usb tu as ce que l'on appelle des sniffers, exemple USBmonitor qui est gratuit. Tu le lance sur le port a écouter et il te décrit tout ce qui se passe.
 
Pour ma part j'ai récupéré l'adresse exact d'une caméra Pan&Tilt (orientable avec des moteurs) j'ai récupéré les trames qui lui ordonnent de pivoter, mais je ne comprend toujours pas comment lui envoyer moi même ces trames depuis devC++... Help me please.  
 
Question pour Stabia: Quelle librairie utilise tu pour les fonctions "setupDiEnumerateDevice()" etc...?


Message édité par ptitcon51 le 22-02-2007 à 13:12:09
Reply

Marsh Posté le 12-10-2007 à 11:48:04    

Bonjour,
Je suis un etudiant à l'université littoral, j'ai comme projet: Develppement d'un driver d'une tablette graphique Wacom Volito2 à port USB par le langage C++, pour le moment je suis au début du projet, veuilez m'envoyer svp des docs et des liens que je serai besoin d'eux.
Envoyez-moi svp comment peut on récuperer des données à partir d'un port USB provenants du tablette graphique.
A+.
Au revoir et bonne journée. :)  
 
Courriel: boukhane21@yahoo.fr

Reply

Marsh Posté le 12-10-2007 à 15:28:50    

si tu aimes les godmichets, tu risques de recevoir pas mal de promos :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed