Comment puis-je programmer un pilote pour un périphérique USB pour la plate-forme windows?

je cherche un appareil qui lit les tensions de câblage via une interface USB et renvoie les données. Comment pourrais-je programmer quelque chose pour interpréter ces données et quel langage utiliserais-je?



modifier: Si cela peut aider, ce projet est de développer un tachomètre numérique pour les moteurs plus anciens qui ne supportent pas un port de données ODB2 complet. Par conséquent, il lira les tensions sur un circuit en courant continu et aura une interface graphique précise. Je n'ai absolument aucune idée de l'endroit où commencer avec tout cela, mais je suis déterminé à le faire fonctionner! c'est pour windows.

10
demandé sur atomicharri 2008-10-02 11:58:45

12 réponses

Tricher et utiliser libusb. J'ai fait ça pour un projet sur lequel je travaille depuis un moment et j'ai écrit un C++/ wxWidgets application pour traiter les données.

j'ai pensé récemment à réécrire l'application sur le PC en wxPython cependant, comme il est beaucoup plus rapide pour le développement de GUI.

Comment vous souhaitez afficher / enregistrer les données? Il ya beaucoup d'options disponibles. Vous pouvez faire un peu assez cool stuff (facilement) avec OpenGL capacités de wxWidgets que ce soit une représentation de données 2D ou 3D.

8
répondu Jon Cage 2008-10-02 08:28:13

si vous le pouvez, je vous suggérerais d'utiliser une bibliothèque comme libusb, comme l'ont suggéré kris et Jon Cage.

si libusb ne va pas répondre à vos besoins et que vous développez Pour Windows, vous devriez jeter un oeil au logiciel qui jungo a fournit. Encore une fois, cela déplace le logiciel usb dans l'espace utilisateur plutôt que d'exiger le développement du noyau Windows. (edit 3: Ilya souligne dans le commentaire que Jungo est également disponible pour Linux)

Si vous devez faire un peu de noyau développement (Windows ou Linux) puis C est assez bien la seule option que vous avez. Enquêter sur Livre de Rubini pour le développement de linux. Pour le développement des pilotes windows je peux recommander livre par Oney. Mais j'étudierais l'option libusb de préférence au développement du pilote dans les deux cas.


Btw. Si tout ce que vous êtes intéressé est d'être en mesure de mesurer les tensions sur un périphérique usb (et l'écriture du code n'est pas important) il il y a beaucoup de produits qui le feront pour vous. Jetez un oeil à certains de l'offre de Instruments Nationaux. Ceux-ci traitent avec le travail dur de l'usb et l'acquisition de données et vous donner une interface de programmation agréable à utiliser dans votre application.


(edit 2) Il y a aussi des puces USB-série (par ex. ceux-ci) qui peut être interfacé directement à un processeur embarqué usig seulement un uart. En général, ils viennent avec pilote.

6
répondu Andrew Edgecombe 2008-10-07 22:07:31

regardez libusb. Il est disponible pour Linux et Windows.

3
répondu kris 2008-10-02 08:02:04

comme vous êtes toujours à la recherche d'un périphérique qui convertit les tensions en informations, je vous suggère de jeter un oeil aux périphériques qui implémentent une interface USB-HID (interface humaine), comme ceux trouvé ici.

Ils ont l'avantage de ne pas nécessiter de tout développement de pilote de périphérique ou l'installation de pilotes. Ils sont aussi plug and play qu'une souris, un clavier ou un lecteur flash. L'interface est assez générique, et la plupart des fabricants fournissent également bibliothèques nécessaires pour lire l'information à partir de l'Appareil, être avisé lorsqu'un appareil est branché, découvrir les appareils, et ainsi de suite.

En outre, avoir un coup d'oeil à cet article cela explique comment utiliser un périphérique HID en C#, par exemple.

Dave

2
répondu Dave Van den Eynde 2008-10-02 10:56:56

me semble que si vous voulez lire les tensions de câblage alors vous avez besoin d'un convertisseur A / D. Fabriquez-vous votre propre convertisseur A/D? Si c'est le cas, vous avez une belle programmation de firmware à faire du côté de l'appareil, plus que le pilote du côté de l'hôte que vous demandez ici. Sinon, vous allez acheter un convertisseur A/D, et vous pouvez utiliser le pilote le vendeur de fournitures.

1
répondu Windows programmer 2008-10-02 08:40:55

a moins que vous ne frappiez votre propre pilote USB du côté du micrologiciel, votre puce sera probablement livrée avec un pilote pour le PC. Par exemple, les microcontrôleurs PIC de Microchip viennent non seulement avec un firmware pour le PIC, mais avec un pilote Windows. Je m'attends à ce que d'autres puces USB compatibles viennent aussi avec leurs propres pilotes.

rappelez-vous que pendant que vous interagissez avec le port USB directement du côté du firmware, du côté du PC tout ce que vous interagissez réellement avec est le pilote pour le contrôleur d'hôte.

1
répondu MrZebra 2008-10-02 10:00:12

votre option la plus facile est probablement d'acheter une sorte de dispositif standard d'acquisition de données. Beaucoup d'entreprises font ce genre de choses, mais elles sont parfois affreusement chères:

  1. Instruments Nationaux
  2. Amplicon
  3. LabJack

vous pouvez également construire votre propre à partir d'un kit, bien que je ne puisse pas trouver de liens pour vous tout à l'heure.

Si vous voulez quelque chose de plus personnalisé, vous pouvez utiliser un EZ-USB et PIC. Ils fournissent des pilotes USB (Pour Windows, au moins) qui vous permettent d'interagir avec le périphérique sans écrire de pilotes.

avec la plupart de ces Vous avez un choix assez large de langages de programmation, j'ai écrit un logiciel pour communiquer avec les périphériques EZ-USB de Visual Basic 6 dans le passé.

1
répondu Kevin ORourke 2008-10-02 11:05:31

la plupart des microcontrôleurs ont été construits en ADC, et une tonne d'entre eux ont également un sous-système usb. Cypress, PIC, AVR viennent à l'esprit. Chaque fois que je fais un travail USB pour mes propres projets, j'utilise pyusb et wxPython. Ils facilitent énormément la tâche, bien qu'il y ait une courbe d'apprentissage initiale assez dure.

sans vergogne, j'ai écrit un petit pilote python avec pyusb pour un périphérique USB-LCD. Vous pouvez consulter mon code source ici.

1
répondu jeremy 2008-10-02 15:18:52

je suis, personnellement, en utilisant des PICs Microchip - ils ont des convertisseurs AD/DA, des ports USB, des pilotes libres et des chargeurs de démarrage - et tout cela pour moins de 4$. Après avoir branché un tel appareil, vous obtenez un port COM supplémentaire - le reste est trivial.

1
répondu IgorM 2008-10-02 15:23:02

vous ne dites pas quelle plate-forme vous regardez. Si vous visez Windows, USB Revealed est un jeu génial de référence.

1
répondu plinth 2008-10-02 15:30:57

pour le matériel, jetez un coup d'oeil à FTDI produits.

si vous avez du matériel et que vous voulez y accéder sous Windows, j'ai récemment découvert WinUSB. Si c'est ce que vous avez besoin, prendre un coup d'oeil à ce livre blanc.

1
répondu pelesl 2009-12-17 05:02:16

en plus de WinUSB, libusb et Jungo, il y a une autre option pour programmer les périphériques USB à partir du mode utilisateur - User-Mode Driver Framework (UMDF).

Écrire un pilote UMDF, c'est essentiellement créer un composant COM en cours de fabrication avec vos outils préférés.

0
répondu Taneli Waltari 2010-01-19 09:20:53