il semble que dès que les données sont prêtes pour l'hôte (comme lorsque j'utilise WriteFile pour envoyer une commande au HID dans lequel je demande au HID de restituer certaines données telles que le port value) et le bit in packet ready est défini, l'hôte le lit (comme confirmé par une autre interruption USB) avant que ReadFile ne soit appelé. ReadFile est plus tard utilisé pour mettre ces données dans un tampon sur l'hôte. Est-ce la façon dont cela devrait se passer? Je m'attendais à ce que l'appel ReadFile provoque l'interruption in.Files d'attente de rapport d'entrée HID sur C8051F320
Donc, voici mon problème: j'ai une interface graphique et HID qui fonctionnent bien ensemble. Le HID peut faire I2C à un autre IC, et l'interface graphique peut dire au HID de faire I2C très bien. Au démarrage, l'interface graphique lit les données du HID et obtient une valeur correcte (par exemple, 0x49). L'ouverture d'une seconde interface graphique vers le même HID fait les mêmes données initiales lues à partir du HID et obtient la valeur correcte (par exemple, 0x49, elle devrait être la même que la première GUI lue). Maintenant, si je vais à la première interface graphique, et faire une lecture I2C, la valeur de relecture est 0x49, qui était la valeur que la 2e interface graphique avait demandé au HID. Il semble que le HID place cette valeur sur le point de terminaison in pour tous les périphériques qui y sont attachés. Ainsi, la première interface graphique pense à tort que c'est la bonne valeur. Par défaut, la FAQ de HID de Jan Axelson, "chaque handle ouvert au HID a sa propre file d'attente de rapport Chaque rapport qu'un périphérique envoie va dans toutes les files d'attente afin que plusieurs applications puissent lire le même rapport." Je crois que c'est mon problème. Comment est-ce que je purge ceci et efface le point final avant que la 1ère GUI fasse sa demande de sorte que la valeur correcte (que le HID envoie par le débogueur) passe à travers? J'ai essayé HidD_FlushQueue, mais il continue de retourner False (ne fonctionne pas, continue d'obtenir des erreurs "handle is invalid", bien que le handle soit valide par WriteFile/ReadFile succès avec les mêmes poignées). Des idées?
Merci!