2016-11-11 1 views
2

Avoir un problème avec la programmation Windows 10 UWP C# pour accéder à un périphérique USB HID.Windows 10 UWP HID DLL Échec de la lecture du rapport d'entrée

  • Je n'ai aucun problème pour trouver un périphérique (GetDeviceSelector, DeviceInformation) et aucun problème pour ouvrir le périphérique (FromIdAsync).
  • Je peux également lui envoyer un rapport de sortie sans problème (CreateOutputReport, ajouter un tableau d'octets pour le message, SendOutputReportAsync) et le périphérique USB réagit correctement en allumant une LED.
  • Je ne suis pas capable de relire le rapport d'entrée (GetInputReportAsync), peu importe ce que j'essaie, y compris les différents identifiants de rapport. L'appareil est toujours valide et non nul en essayant de le faire.

J'ai vérifié deux fois le VID, le PID, la page d'utilisation et l'ID. Aucun d'entre eux ne viole tout ce que je peux trouver dans les documents, ne pas essayer d'utiliser les pages d'utilisation de niveau supérieur.

J'ai vérifié le micrologiciel de l'appareil et son descripteur USB. Le Gestionnaire de périphériques est heureux dans Windows 7 ou 10, aucun problème signalé. Je peux accéder à l'appareil sous Windows 7 ou 10 via une DLL d'interface que j'ai écrite avec Windows DDK pour Windows 7 et une application de test et envoyer/recevoir très bien sous Windows 7 ou 10. Je peux définir des LED, lire des valeurs, etc., toutes les fonctions fonctionnent.

j'ai connecté un analyseur USB et les paquets sont là, mais la fonction GetInputReportAsync ne reviendra pas toutes les données, à une exception « Un périphérique connecté au système ne fonctionne pas (Exception de HRESULT: 0x8007001F). »

Utilisation de Window 10 Home, mode développeur activé. J'ai essayé Visual Studio 2015 Community Edition et l'essai VS 2015 Pro. J'ai essayé le Windows-universal-samples-master sur GitHub et le projet CustomHidDeviceAccess, pas de chance, mon appareil est un peu différent de celui utilisé dans cette démo.

Quelqu'un a déjà vu ça? Y a-t-il une astuce ou un moyen spécial de le faire? Y at-il un paramètre qui me manque dans Windows 10 ou mon projet? Y a-t-il des pages d'utilisation dans l'hex FF ?? plage que je ne peux pas utiliser avec UWP? Ou certains identifiants de rapport? Je me demande simplement pourquoi je reçois toujours une exception lorsque j'essaie d'obtenir le rapport d'entrée via C# UWP et pourquoi ma DLL/application DDK fonctionne toujours. Suggestions? THX.

Répondre

1

Apparemment, vous ne pouvez pas simplement appeler la fonction GetInputReportAsync() pour lire le rapport. Au lieu de cela, la seule façon de le faire fonctionner est d'ajouter un gestionnaire d'événements à mon périphérique pour gérer la réception d'un rapport d'entrée via InputReportReceived. Ensuite, après avoir envoyé mon rapport de sortie, attendez que le gestionnaire d'événements se déclenche et notifiez les données du rapport d'entrée en retour de l'appareil, la réponse à ma commande. Cela semble être la seule façon de le faire fonctionner sur cette config.