Comment programmer un pilote pour un périphérique USB pour la plate-forme Windows?

Je recherche 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 quelle langue utiliserais-je?

edit: Si cela vous aide, ce projet consiste à développer un tachymètre numérique pour les moteurs plus anciens ne prenant pas en charge un port de données ODB2 complet. Par conséquent, il lit les tensions sur un circuit CC et possède une interface graphique précise. Je n’ai absolument aucune idée par où commencer, mais je suis déterminé à le faire fonctionner! c’est pour les fenêtres.

Trichez et utilisez libusb . Je l’ai fait pour un projet sur lequel je travaille depuis longtemps et j’ai écrit une application C ++ / wxWidgets pour gérer les données.

J’ai récemment pensé à réécrire l’application sur le PC sous wxPython, car elle est beaucoup plus rapide pour le développement de l’interface graphique.

Comment voulez-vous afficher / enregistrer les données? Il y a beaucoup d’options disponibles. Vous pouvez faire des choses assez sympas (facilement) avec les capacités OpenGL de wxWidgets, que ce soit la représentation de données 2D ou 3D.

Si vous le pouvez, je vous suggère d’utiliser une bibliothèque comme libusb, comme l’ont suggéré kris et Jon Cage.

Si libusb ne répond pas à vos besoins et que vous développez pour Windows, vous devriez jeter un oeil au logiciel fourni par Jungo . Encore une fois, cela déplace le logiciel USB dans l’espace utilisateur plutôt que de nécessiter le développement du kernel Windows. (edit 3: Ilya souligne dans le commentaire que Jungo est également disponible pour Linux)

Si vous devez faire du développement du kernel (Windows ou Linux), alors C est à peu près la seule option que vous avez. Étudiez ce livre par Rubini pour le développement de Linux. Pour le développement de pilotes Windows, je peux recommander ce 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 qui vous intéresse, c’est de pouvoir mesurer les tensions sur un périphérique USB (et l’écriture du code n’est pas importante), il existe de nombreux produits qui le feront pour vous. Jetez un oeil à certaines des offres de National Instruments . Ceux-ci traiteront du travail acharné de l’usb et de l’acquisition de données et vous donneront une interface de programmation agréable à utiliser dans votre application.


(edit 2) Il y a aussi des puces série USB (par exemple, celles-ci ) qui peuvent être interfacées directement avec un processeur embarqué en utilisant seulement un uart. En règle générale, ils sont livrés avec des pilotes.

Regardez libusb . Il est disponible pour Linux et Windows.

Comme vous recherchez toujours un périphérique qui convertit les tensions en informations, je vous suggère de jeter un coup d’œil aux périphériques qui implémentent une interface USB-HID (Human Interface Device), tels que ceux trouvés ici .

Ils ont l’avantage de ne nécessiter aucun développement de pilote de périphérique ou installation de pilotes. Ils sont aussi plug and play qu’une souris, un clavier ou un lecteur flash. L’interface est plutôt générique et la plupart des fabricants fournissent également les bibliothèques nécessaires pour lire les informations à partir du périphérique, être avertis lorsqu’un périphérique est branché / déconnecté, découvrir des périphériques, etc.

En outre, consultez cet article qui explique comment utiliser un périphérique HID en C #, par exemple.

Dave

Il me semble que si vous voulez lire les tensions de câblage, vous avez besoin d’un convertisseur A / N. Faites-vous votre propre convertisseur A / N? Si c’est le cas, vous avez de belles programmations à faire du côté du périphérique, plus que le pilote côté hôte dont vous parlez ici. Sinon, vous allez acheter un convertisseur A / N, et vous devez simplement utiliser le pilote fourni par le fournisseur.

Si vous ne cognez pas 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 sont fournis non seulement avec un microprogramme pour le PIC, mais également avec un pilote Windows. Je m’attends à ce que d’autres puces compatibles USB soient également livrées avec leurs propres pilotes.

N’oubliez pas que lorsque vous interagissez avec le port USB directement du côté du microprogramme, du côté du PC, vous interagissez uniquement avec le pilote du contrôleur hôte.

L’option la plus simple consiste probablement à acheter une sorte de périphérique d’acquisition de données standard. Beaucoup d’entresockets font ce genre de chose, mais elles coûtent parfois très cher:

  1. National Instruments
  2. Amplicon
  3. LabJack

Vous pouvez également créer votre propre kit à partir d’un kit, même si je ne trouve aucun lien pour vous en ce moment.

Si vous voulez quelque chose de plus personnalisé, vous pouvez utiliser un EZ-USB ou un PIC . Ils fournissent des pilotes USB (pour Windows au moins) qui vous permettent d’interagir avec l’appareil sans écrire de pilote.

Avec la plupart d’entre eux, vous avez un choix assez large de langages de programmation, j’ai déjà écrit un logiciel pour communiquer avec les périphériques EZ-USB de Visual Basic 6.

La plupart des microcontrôleurs ont intégré l’ADC, et une tonne d’entre eux ont également un sous-système USB intégré. On pense à Cypress, PIC, AVR. Chaque fois que je fais du travail USB pour mes propres projets, j’utilise pyusb et wxPython . Ils facilitent énormément l’exécution du travail, même si la courbe d’apprentissage initiale est assez dure.

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

Personnellement, j’utilise les PIC Microchip – ils ont des convertisseurs AD / DA, des ports USB, des pilotes gratuits et des chargeurs de démarrage – et tout cela pour moins de 4 dollars. Après avoir branché un tel appareil, vous obtenez un port COM supplémentaire – le rest est sortingvial.

Vous ne dites pas quelle plate-forme vous regardez. Si vous ciblez Windows, USB Revealed est une référence impressionnante.

Pour le matériel, consultez les produits FTDI .

Si vous avez du matériel et que vous souhaitez y accéder sous Windows, j’ai récemment découvert WinUSB . Si c’est ce dont vous avez besoin, consultez ce livre blanc .