- 论坛徽章:
- 0
|
我使用evtest.c读取/dev/input/event5,event5是我自定义的usb hid设备的设备文件,可是每次读取该文件,读取的bytes总是小于实际设备上传的bytes.哪位高手能帮我解决一下吗,谢谢了.
以下是代码:
int main (int argc, char **argv)
{
int fd, rd, i, j, k;
struct input_event ev[64];
struct timeval lasttime;
int version;
unsigned short id[4];
unsigned long bit[EV_MAX][NBITS(KEY_MAX)];
char name[256] = "Unknown";
int abs[5];
if ((fd = open("/dev/input/event5", O_RDONLY)) < 0)
{
perror("evtest");
return 1;
}
if (ioctl(fd, EVIOCGVERSION, &version))
{
perror("evtest: can't get version");
return 1;
}
printf("Input driver version is %d.%d.%d\n",
version >> 16, (version >> 8) & 0xff, version & 0xff);
ioctl(fd, EVIOCGID, id);
printf("Input device ID: bus 0x%x vendor 0x%x product 0x%x version 0x%x\n",
id[ID_BUS], id[ID_VENDOR], id[ID_PRODUCT], id[ID_VERSION]);
ioctl(fd, EVIOCGNAME(sizeof(name)), name);
printf("Input device name: \"%s\"\n", name);
memset(bit, 0, sizeof(bit));
ioctl(fd, EVIOCGBIT(0, EV_MAX), bit[0]);
printf("Testing ... (interrupt to exit)\n");
while (1)
{
rd = read(fd, ev, sizeof(struct input_event) * 64);
if (rd < (int) sizeof(struct input_event))
{
printf("yyy\n");
perror("\n evtest: error reading");
return 1;
}
}
close(fd);
}
[ 本帖最后由 dreamice 于 2008-12-26 20:38 编辑 ] |
|