Étape 5: USB HID rapports et descripteurs de rapport
Jetez un oeil à votre manette classique Wii. Il possède 15 boutons (ronde jusqu'à 16 pour plus de simplicité) et deux manettes de jeu. Cela signifie que nous devons envoyer 15 bits de données pour les boutons et 4 nombres, un pour chaque axe de données de la manette. Nous définissons notre format de données pour ressembler à ceci :
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | |
Octet 0 | Bouton | Bouton | Bouton | Bouton | Bouton | Bouton | Bouton | Bouton |
Octet 1 | Bouton | Bouton | Bouton | Bouton | Bouton | Bouton | Bouton | Bouton |
Octet 2 | Axe du stick analogique gauche X as Integer signé Char | |||||||
Octet 3 | Axe du stick analogique gauche Y as Integer signé Char | |||||||
Octet 4 | Axe du Stick droit X as Integer signé Char | |||||||
Octet 5 | Axe du Stick droit Y as Integer signé Char |
Et puis nous pouvons définir une structure de données en C/C++
Un descripteur de rapport l’écriture implique décrivant un contexte d’utilisation tout d’abord et puis décrivant les données sur le plan de son étendue et de la taille puis décrivant la signification des données par rapport au contexte d’utilisation.
Tout d’abord, faire comprendre que l’appareil est une manette de jeu à l’ordinateur
Puis de décrire les données de bouton (16 bits)
Ensuite décrire les données de le 4 axe comme des entiers 8 bits signés
- NOTE: Z est utilisée pour représenter l’axe X du stick droit, Rx est utilisé pour représenter l’axe Y du stick droit. Ce n’est pas sensé, mais c’est ainsi que la plupart existants tapis de jeu USB fonctionnent. J’ai testé à l’aide de Battlefield Bad Company 2, ça marche.
- Remarque : Utilisez « absolu » pour quelque chose comme les manettes de jeu, mais « relatif » pour des choses comme souris.
Enfin, le descripteur de rapport ressemble à :
Maintenant que nous avons un descripteur de rapport, comment faisons-nous nos AVR dire ce genre de choses à l’ordinateur ? Allez télécharger le « HID descripteur outil officiel » de http://www.usb.org/developers/hidpage/ . Il permet de mettre ce genre de choses dans, et l’outil va générer le tableau binaire correct pour vous.
Lorsque vous enregistrez votre résultat, allez dans « Fichier » -> "Enregistrer sous" et puis assurez-vous que vous choisissez "fichier d’en-tête (* .h)" dans l’enregistrer boîte de dialogue. Puis ouvrez le fichier, il devrait ressembler à
Grand, la taille du tableau doit être copié dans V-USB « usbconfig.h » où il est dit « USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH » et « char ReportDescriptor » doit être renommé en « PROGMEM char usbHidReportDescriptor » alors qu’il est stocké dans la mémoire flash de l’AVR. Vous vous retrouvez avec quelque chose comme :
Ce morceau de code, ainsi que le typedef struct, nous l’avons fait précédemment, est inclus dans le code source de notre projet (voir le code source entier) plus tard.
Lecture plus :