[问题] 请问我这样取得vid & pid有什么问题

楼主: evilkiss (evilkiss)   2013-08-27 17:05:21
最近需要开机自动执行程式,要去自动辨别哪一个hiddev才是我们操作的装置
所以我用Vid Pid来判别,google了一下,写了下面的测试程式
但结果好像错很大,请问我哪边做错了?
=======================================================
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <linux/hiddev.h> 改成hidraw.h
#include <sys/ioctl.h>
struct hiddev_devinfo device_info; 改成hidraw_devinfo
#define MODEMDEVICE "/dev/hidraw5"
char *HidrawList[6]={"/dev/hidraw0","/dev/hidraw1","/dev/hidraw2",
"/dev/hidraw3","/dev/hidraw4","/dev/hidraw5"};
int main()
{
int id;
for(id=0;id<6;id++)
{
printf("%s is %d\n",HidrawList[id], TestDevice(HidrawList[id]));
}
return 0;
}
int TestDevice(char* name)
{
int fd;
fd = open(name, O_RDWR | O_NOCTTY );
if (fd <0)
{
printf("Open device failed!\n");
return -1;
}
ioctl(fd,HIDIOCGDEVINFO,&device_info); 改成 HIDIOCGRAWINFO
printf("vid = 0x%04hx, pid = 0x%04hx\n",device_info.vendor
,device_info.product);
if(device_info.vendor==0x04d8)
{
close(fd);
return 1;
}
else
{
close(fd);
return -1;
}
}
得到的答案是 :
vid = 0x0000, pid = 0x0000
/dev/hidraw0 is -1
vid = 0x0000, pid = 0x0000
/dev/hidraw1 is -1
vid = 0x0000, pid = 0x0000
/dev/hidraw2 is -1
vid = 0x0000, pid = 0x0000
/dev/hidraw3 is -1
vid = 0x0000, pid = 0x0000
/dev/hidraw4 is -1
vid = 0x0000, pid = 0x0000
/dev/hidraw5 is -1
但lsusb的结果却是 :
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 1bc0:8100
Bus 003 Device 006: ID 413c:3012 Dell Computer Corp. Optical Wheel Mouse
Bus 002 Device 007: ID 1c4f:0016 SiGma Micro
Bus 001 Device 046: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 047: ID 0d8c:0126 C-Media Electronics, Inc.
Bus 001 Device 048: ID 04d8:00df Microchip Technology, Inc.
请问我哪个步骤做错了?
谢谢,大家的帮忙
楼主: evilkiss (evilkiss)   2013-08-27 17:58:00
找到问题了.... 把hiddev相关的换成hidraw

Links booklink

Contact Us: admin [ a t ] ucptt.com