linux usb-hid: добавить библиотеку libhid в eclipse (C ++) или IDE NetBeans, или в собственный input.h или hiddev.h? - PullRequest
0 голосов
/ 24 августа 2009

У меня проблема с libhid .

я обнаружил, что есть 2 способа 4 доступа к usb-hid в linux

1) стандартные библиотеки linux, такие как input.h и hiddev.h и ...

2) с использованием libhid

Я обнаружил, что libhid немного запутал, и попытался использовать input.h, но у меня проблема с этим 2.

Я не знаю, как получить информацию о моем устройстве из Ubuntu

я использую open (), чтобы открыть устройство

str="/dev/inpt/eventX" \\where X=0,1,...,7(I'm not sure about this)
open(str,O_RDWR)

затем получите информацию с ioctl

ioctl(fd,EVIOCGVERSION,&version);

но это дает мне неверные идентификаторы поставщиков и продуктов

, то я пытаюсь использовать libhid, но знаю, как использовать libhid (или любую другую библиотеку) в eclipse или netbeans

Можете ли вы рассказать мне, как вы компилировали свои коды в любой среде IDE, например eclipse или netbeans, или просто использовали терминал и gcc? или же как работать с ioctl () и open ()?

мой пример кода:

#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;
}

1 Ответ

0 голосов
/ 29 августа 2009

Я нахожу способ скомпилировать мой код в Eclipse

1 проблема решена

для компиляции вашего кода с GCC в терминале вы должны определить libhid для GCC, добавив "-lhid" к вашей команде: gcc test_libhid.c -lhid

если вы используете eclipse и хотите использовать с ним libhid, вы должны добавить "-lhid" к компоновщику gcc, чтобы gcc мог использовать libhid при компиляции вашего кода выполните шаги:

1) на панели проводника проекта, R-щелкните на свой проект, выберите свойства (последний вариант) или выберите свой проект и нажмите Alt + Enter

2) в левой панели разверните «c / c ++ build» и выберите «настройка»

3) в правой части выберите вкладку «Настройка инструмента»

4) вы должны увидеть компилятор GCC C, компоновщик GCC C и ассемблер GCC. разверните компоновщик GCC C и выберите библиотеки

5) после выбора в правой части вы должны увидеть 2 поля: Библиотеки (-l) и Путь поиска библиотеки (-L) в библиотеках (-l) добавить «спрятано»

note : при выполнении этих действий eclipse использует GCC для компиляции ваших кодов. Eclipse добавляет параметр "-lhid" в gcc, чтобы он мог распознавать libhid.

...