linux usb-hid: ajouter bibliothèque libhid à éclipser (C ++) ou NetBeans ou IDEs input.h natif ou hiddev.h?
-
19-09-2019 - |
Question
J'ai problème avec libhid .
i trouvé qu'il ya deux voies 4 accédant à l'USB-HID sous Linux
1) les bibliothèques par défaut de Linux comme input.h et hiddev.h ...
2) en utilisant libhid
j'ai trouvé libhid un peu confus et essayer d'utiliser input.h mais j'ai un problème que 2.
Je ne sais pas comment obtenir des informations sur mon appareil de ubuntu
i utiliser open () pour ouvrir le dispositif
str="/dev/inpt/eventX" \\where X=0,1,...,7(I'm not sure about this)
open(str,O_RDWR)
puis obtenir des informations avec ioctl
ioctl(fd,EVIOCGVERSION,&version);
mais il me donne tort fournisseur et ID produit
puis i essayer d'utiliser libhid mais avait savoir idée comment utiliser libhid (ou toute autre bibliothèque) dans Eclipse ou NetBeans
Pouvez-vous me dire comment vous compilez vos codes tout IDE comme Eclipse ou NetBeans ou tout simplement en utilisant la borne et gcc? ou comment travailler avec ioctl () et open ()?
mon code entier exemple:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ftw.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <errno.h>
#include <stdint.h>
#include <asm/types.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/usbdevice_fs.h>
#include <linux/input.h>
#include <strings.h>
struct input_devinfo
{
uint16_t bustype;
uint16_t vendor;
uint16_t product;
uint16_t version;
};
int main(void) {
//puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
//usb_device ud;
//int i=0;
//string str;
//str=char[100];
//str="/dev/input/event0\n";
printf("------------- start -----------------\n");
char str[]="" ;
int version=0;
char c[16];
char t;
int i,fd;
//for (i=0 ; i<8 ; i++)
{
//strcpy(c,str);
//t=i-'0';
//printf("salam5\n");
//c[15]=t;
//openning
//open(str,O_RDONLY);//read and write
if ((fd = open(str,O_RDWR)) < 0)
perror("str open\n");
else
printf("%s opened successfully\n",str);
ioctl(fd,EVIOCGVERSION,&version);
printf("version = %d \n",version);
printf("evdev driver version is %d.%d.%d\n",version >> 16, (version >> 8) & 0xff, version & 0xff);
//geting info from device
struct input_devinfo device_info;
ioctl(fd,EVIOCGID,&device_info);
printf("vendor 0x%04hx product 0x%04hx version 0x%04hx is on ?",
device_info.vendor, device_info.product,
device_info.version);
}
return EXIT_SUCCESS;
}
La solution
Je trouve un moyen de compiler mon code dans Eclipse
1 problème résolu
pour compiler votre code avec GCC dans le terminal que vous devez définir libhid pour GCC en ajoutant « -lhid » à votre commande: gcc test_libhid.c -lhid
si vous utilisez Eclipse et que vous voulez utiliser libhid avec lui, vous devez ajouter « -lhid » à linker gcc afin de gcc pourrait utiliser libhid lorsque sa compilation de votre code suivez les étapes:
1) sur le projet panneau Explorer, R-cliquez sur votre projet sélectionnez Propriétés (dernière option) ou sélectionnez votre projet et appuyez sur Alt + Entrée
2) dans le panneau gauche expand "c / c ++ construire" et sélectionnez "réglage"
3) dans le côté droit de sélectionner onglet "réglage d'outil"
4) vous devriez voir compilateur GCC C et éditeur de liens GCC C et assembleur GCC là-dedans. développer linker GCC C et sélectionnez Bibliothèques
5) après avoir sélectionné dans la partie droite vous devriez voir 2 cases: Bibliothèques (-l) et chemin de recherche bibliothèque (-L) dans les bibliothèques (-l) ajouter "caché"
Note :. Eclipse utiliser GCC pour compiler vos codes lorsque vous effectuez ces étapes éclipsent ajouter le paramètre "-lhid" à gcc pour pouvoir elle reconnaître le libhid