linux usb-HID: adicionar biblioteca libhid para eclipse (C ++) ou netbeans IDEs ou input.h nativa ou hiddev.h?
-
19-09-2019 - |
Pergunta
eu tenho problema com libhid .
i descobriu que há 2 vias 4 acessando o usb-HID em linux
1) linux padrão bibliotecas como input.h e hiddev.h e ...
2) usando libhid
i encontrado libhid alguns confundir e tentar usar input.h mas eu tenho problema com isso 2.
Eu não sei como obter informações sobre o dispositivo a partir do Ubuntu
i usar open () para abrir o dispositivo
str="/dev/inpt/eventX" \\where X=0,1,...,7(I'm not sure about this)
open(str,O_RDWR)
em seguida, obter informações com ioctl
ioctl(fd,EVIOCGVERSION,&version);
mas me dê fornecedor errado e produto IDs
, em seguida, eu tento usar libhid mas ideia saber teve como usar libhid (ou qualquer outra biblioteca) no eclipse ou netbeans
você pode me dizer como você compilou seus códigos de qualquer IDE como eclipse ou netbeans ou apenas usando o terminal e gcc? ou Como trabalhar com ioctl () e open ()?
todo o meu código de exemplo:
#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;
}
Solução
I encontrar uma maneira de compilar meu código em eclipse
1 problema resolvido
para compilar o código com o GCC no terminal, você deve definir libhid para GCC, acrescentando "-lhid" ao seu comando: gcc test_libhid.c -lhid
Se o seu usando o eclipse e você quiser usar libhid com ele você deve adicionar "-lhid" para vinculador gcc, a fim de gcc poderia usar libhid quando seu compilar seu código siga os passos:
1) no painel Explorador do projeto, R clique sobre seu projeto selecionar propriedades (última opção) ou selecione o seu projeto e pressione Alt + Enter
2) no painel esquerdo expanda "c / c ++ construção" e selecione "setting"
3) no lado direito selecione a aba "Configuração de função"
4) você deve ver compilador GCC C e GCC C vinculador e GCC assembler lá. expandir GCC C vinculador e selecione Bibliotecas
5) após a seleção no lado direito você verá 2 caixas: Bibliotecas (-l) e Biblioteca caminho de pesquisa (-L) nas Bibliotecas (-l) adicionar "escondido"
Nota ??em> :. Eclipse uso GCC para compilar seus códigos Quando você fizer isso etapas Eclipse Adicionar parâmetro "-lhid" para gcc para poder-lo reconhecer o libhid