Travailler avec les périphériques USB dans .NET
À l'aide .Net (C#), comment pouvez-vous travailler avec les périphériques USB?
Comment pouvez-vous détecter des événements USB (les connexions/déconnexions) et comment voulez-vous communiquer avec des périphériques (lecture/écriture).
Est-il un natif .Net solution pour cela?
- Plus de réponses ici: stackoverflow.com/questions/2803890/net-api-for-hid-usb
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de natif (p. ex., Système de bibliothèques) solution pour cela. C'est la raison pour laquelle SharpUSBLib existe, comme l'a mentionné moobaa.
Si vous souhaitez restaurer votre propre gestionnaire de périphériques USB, vous pouvez consulter la Classe SerialPort de Système.IO.Les Ports.
J'ai essayé d'utiliser SharpUSBLib et ce foutu mon ordinateur (besoin d'un système de restauration). Arrivé à un collègue sur le même projet.
J'ai trouvé une alternative en LibUSBDotNet: http://sourceforge.net/projects/libusbdotnet
Havn pas utilisé beaucoup encore, mais qui semble bon et récemment mis à jour (à la différence de Sharp).
EDIT: à compter de la mi-février 2017, LibUSBDotNet a été mis à jour sur 2 semaines. Pendant ce temps SharpUSBLib n'a pas été mis à jour depuis 2004.
J'ai utilisé le code suivant pour détecter les périphériques USB sont branchés et débranchés de mon ordinateur:
Vous devez assurez-vous d'appeler la méthode dispose() lors de la fermeture de votre application. Sinon, vous recevrez un objet COM erreur lors de l'exécution lors de la fermeture.
Le #usblib USB Bibliothèque pour .NET
Je le recommande LibUSBDotNet, la bibliothèque, j'ai été à l'aide de 2 ans.
Si vous devez travailler avec un périphérique USB (envoyer des demandes, les réponses), cette bibliothèque était la meilleure solution que j'ai pu trouver.
Pour:
Contre:
Mais je trouve toujours fourni des échantillons et le code source est assez pour le codage.
Juste, parfois, je vois un comportement étrange et veulent savoir pourquoi il a été mis en œuvre dans ce sens et ne peut pas obtenir même un soupçon...
Il y a un tutoriel sur le SharpUSBLib bibliothèque et les pilotes HID de travail avec C# ici:
http://www.developerfusion.com/article/84338/making-usb-c-friendly/
Périphériques USB tombent généralement dans deux catégories: Caché, et USB. Un périphérique USB peut ou peut ne pas être un périphérique Hid et vice versa. Hid est généralement un peu plus facile à travailler que d'un port USB direct. Plates-formes différentes ont différentes Api pour traiter à la fois USB et Hid.
Voici la documentation pour UWP:
USB:
https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/how-to-connect-to-a-usb-device--uwp-app-
Hid:
https://docs.microsoft.com/en-us/uwp/api/windows.devices.humaninterfacedevice
Voici la documentation pour Android:
https://developer.xamarin.com/api/namespace/Android.Hardware.Usb/
Voici deux classes pour traiter avec USB/Hid brutes API de Windows niveau:
https://github.com/MelbourneDeveloper/Device.Net/blob/master/src/Hid.Net/Windows/HidAPICalls.cs
}
https://github.com/MelbourneDeveloper/Device.Net/blob/master/src/Usb.Net/Windows/WinUsbApiCalls.cs
Avec l'une de ces solutions, vous aurez besoin de sondage pour l'appareil sur un intervalle, ou utiliser l'un de l'API native de l'appareil à l'écoute des classes. Toutefois, cette bibliothèque met une couche à travers Caché, et USB sur toutes les plates-formes de sorte que vous pouvez détecter les connexions et déconnexions facilement: https://github.com/MelbourneDeveloper/Device.Net/wiki/Device-Listener . C'est comment vous pouvez l'utiliser:
Il y a un générique toolkit WinDriver pour l'écriture de Pilotes USB en mode utilisateur que le n ° de support.NET ainsi
Si vous avez National Instruments logiciel sur votre PC, vous pouvez créer un Pilote USB à l'aide de leur "NI-VISA de l'Assistant de Pilote d'".
Étapes pour créer le Pilote USB: http://www.ni.com/tutorial/4478/en/
Une fois que vous avez créé le pilote, vous serez en mesure d'Écrire et de Lire des octets à n'importe quel Périphérique USB.
Assurez-vous que le pilote est vu par windows dans le Gestionnaire de Périphériques:
De Code C#:
Utilisation:
Espère que cela aide quelqu'un.
La plupart des chipsets USB avec des pilotes. Silicon Labs en a un.
J'ai obtenu une interface à un Teensy de travail assez bien, à l'aide de cet article
J'ai essayé plusieurs de ces suggestions avec pas de chance. J'ai fini par écrire une solution de travail à l'aide de Java et de la hid4java de la bibliothèque. Comme une application console, je peux shell à partir de C# à l'aide de
Process.Start()
, passage de paramètres ainsi que les réponses de lecture. Cette offre de base HID I/O, mais sans connecter/déconnecter des événements. Pour cela j'aurais besoin de le réécrire à exécuter en tant que daemon ou service et l'utilisation de canaux nommés ou d'un autre serveur/client de transport. Pour l'instant, c'est suffisant pour obtenir le travail fait depuis le hi4java bibliothèque "fonctionne".