2010-09-07 27 views
4

Je fais une application pour exécuter en arrière-plan sur un point de vente pour lire l'entrée d'un scanner USB. Comment puis-je obtenir l'entrée du scanner à partir de C#? Puis-je différencier le scanner d'un clavier USB? (Scanner est un dispositif HID)Comment lire les entrées d'un périphérique USB HID?

Répondre

10

Je l'ai fait avec succès avant d'utiliser un « entrée brute » mise en œuvre sur CodeProject:

Il vous permet de recevoir à la fois l'entrée (ce « touches "sont pressées si elle imite un" clavier ") ainsi que de distinguer de quel périphérique il provient.

+0

Cela semble plutôt bien. Cependant, il ne semble pas déclencher l'événement _KeyPressed même s'il a ramassé mes 2 appareils HID. – dkarzon

+0

Je l'ai fait fonctionner, compilait sous 32 bits sur un Windows 64 bits. Merci encore. – dkarzon

+0

J'utilise RawInput pour obtenir la touche d'un clavier spécifique, et cela fonctionne bien, sauf qu'il envoie toujours la touche originale. Donc, si je fais correspondre {Backspace} à Control-C et que j'appuie sur Backspace, il exécute d'abord un retour arrière puis exécute le contrôle-C. J'essaye de l'obtenir (évidemment) seulement le Control-C (Macro) et pas le Backspace (keypress original). Des idées sur la façon de faire cela? J'ai entendu dire qu'il faut que Keyboard Hooks annule le message, Raw Input pour déterminer s'il provient du bon clavier et un système de communication entre les deux. – Tanoshimi