驱动Linux Hidraw驱动:深入了解如何利用它(linuxhidraw)

继计算机发展的几十年 后,从外部输入设备到桌面计算机的一个重要连接,是一个兼容计算机的专用输入设备,被称为HID(Human Interface Device),简单来说,HID设备是用户可以与计算机进行直接交互的设备,它可以帮助用户控制计算机,其中包括鼠标,键盘,游戏控制台,手柄,触摸板等。

HID接口有两种主要实现,一种是USB HID,另一种是Linux上的HIDRAW。 Linux HIDRAW驱动可以为使用Linux内核的系统提供驱动功能,模拟HID设备,以便用户可以与系统进行交互。 由于HIDRAW驱动功能的重要性,访问和驱动HIDRAW设备在Linux开发中变得非常重要。

使用HIDRAW驱动的最常见方法需要以下几个步骤:

首先,我们需要枚举当前系统中可用的HIDRAW设备。 在Linux系统中,我们可以使用以下代码来实现:

#include 
#include
int opened_hidraw_devices = 0;

for (int i = 0; i
{ // Enumarate up to 16 hidraw devices
char device_name[65] = { 0 };
sprintf(device_name, "/dev/hidraw%d", i);
int fd = open(device_name, O_RDWR);
if (fd
opened_hidraw_devices++;
close(fd);
}

其次,当我们检测到某个HIDRAW设备时,我们需要获取其信息,以便可以得知我们想要使用的设备的详细信息及其支持特性。 我们可以使用以下函数进行获取:

int hidraw_get_info(int fd, struct hidraw_info *info)
{
int res;
memset(info, 0, sizeof(*info));

res = ioctl(fd, HIDIOCGRAWINFO, info);
if (res
{
perror("HIDIOCGRAWINFO");
return -1;
}
return 0;
}

最后,我们可以使用该设备的HIDRAW驱动进行通信,来实现与设备的交互:

int hidraw_send_data(int fd, uint8_t* data, size_t len)
{
int res;
// Write data to the HIDRAW device
res = write(fd, data, len);
if (res
{
perror("write");
return -1;
}

return 0;
}
int hidraw_read_data(int fd, uint8_t* data, size_t len)
{
int res;
// Read data from the HIDRAW device
res = read(fd, data, len);
if (res
{
perror("read");
return -1;
}

return 0;

综上所述,利用Linux HIDRAW驱动可以使用Linux内核作为HID设备,以便用户可以与计算机进行交互。 HIDRAW驱动的使用步骤是枚举当前可用的HIDRAW设备,获取设备的信息并建立通信,以驱动HIDRAW设备。


数据运维技术 » 驱动Linux Hidraw驱动:深入了解如何利用它(linuxhidraw)