libusb 怎么使用
时间: 2024-02-17 18:31:38 浏览: 180
libusb 是一个用户空间的 USB 库,它可以帮助我们在 Linux、Windows 和 Mac OS X 等操作系统上访问 USB 设备。下面是一个简单的示例程序,演示如何使用 libusb 读取一个 USB 设备的描述符信息。
首先,我们需要安装 libusb 库。在 Ubuntu 上,可以使用以下命令安装:
```
sudo apt-get install libusb-1.0-0-dev
```
接下来,我们编写一个 C 语言程序。程序的主要流程如下:
1. 初始化 libusb 库。
2. 打开 USB 设备。
3. 读取设备描述符信息。
4. 关闭 USB 设备。
5. 释放 libusb 库。
程序代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libusb-1.0/libusb.h>
int main(int argc, char** argv)
{
libusb_device_handle* handle = NULL;
libusb_context* context = NULL;
unsigned char descriptor[1024];
int r;
// 初始化 libusb 库
r = libusb_init(&context);
if (r < 0) {
fprintf(stderr, "libusb_init error %d\n", r);
return 1;
}
// 打开 USB 设备
handle = libusb_open_device_with_vid_pid(NULL, 0x1234, 0x5678);
if (handle == NULL) {
fprintf(stderr, "libusb_open_device_with_vid_pid error\n");
goto exit;
}
// 读取设备描述符信息
r = libusb_get_descriptor(handle, LIBUSB_DT_DEVICE, 0, descriptor, sizeof(descriptor));
if (r < 0) {
fprintf(stderr, "libusb_get_descriptor error %d\n", r);
goto close;
}
// 打印设备描述符信息
printf("Device Descriptor:\n");
for (int i = 0; i < r; i++) {
printf("%02x ", descriptor[i]);
if ((i + 1) % 16 == 0) {
printf("\n");
}
}
printf("\n");
close:
// 关闭 USB 设备
libusb_close(handle);
exit:
// 释放 libusb 库
libusb_exit(context);
return 0;
}
```
在上面的程序中,我们使用 libusb_open_device_with_vid_pid 函数打开 USB 设备,其中的 VID 和 PID 分别是设备的厂商 ID 和产品 ID。我们使用 libusb_get_descriptor 函数读取设备描述符信息。最后,我们使用 libusb_close 函数关闭 USB 设备,使用 libusb_exit 函数释放 libusb 库。
注意:在运行程序之前,请将 VID 和 PID 替换为你自己的设备的厂商 ID 和产品 ID。
阅读全文