libusb_init() error -99: other
时间: 2024-06-07 13:06:14 浏览: 15
这个错误通常表示 libusb 在初始化过程中遇到了未知的问题。其中可能包括权限问题、驱动程序问题、USB 设备问题等。
以下是一些可能的解决方案:
1. 确保您的程序有足够的权限以访问 USB 设备。您可以检查当前用户是否属于 dialout 组,如果不是,则将其添加到该组中。
2. 检查您正在使用的 USB 设备是否被正确地识别和加载了驱动程序。您可以尝试在终端中运行“lsusb”命令来查看 USB 设备是否被识别。
3. 如果您正在使用的是虚拟机,请确保将 USB 设备正确地传递给虚拟机,以便您的程序可以访问它。
4. 确保您的 libusb 版本是最新的。您可以尝试在终端中运行“sudo apt-get update && sudo apt-get upgrade libusb”命令来更新 libusb。
如果以上解决方案都无法解决问题,您可以在 libusb 的官方网站上查找更多的信息,或者尝试在 libusb 的邮件列表或论坛上寻求帮助。
相关问题
libusb_init函数体
libusb_init函数是libusb库中的一个函数,它用于初始化libusb库。函数体如下所示:
```
int LIBUSB_CALL libusb_init(libusb_context **context)
{
int r = 0;
struct libusb_context *ctx;
/* allocate a new context */
ctx = calloc(1, sizeof(struct libusb_context));
if (!ctx)
return LIBUSB_ERROR_NO_MEM;
r = usbi_backend.init(ctx);
if (r < 0) {
free(ctx);
return r;
}
/* set default log handler */
libusb_set_log_cb(ctx, NULL, LIBUSB_LOG_LEVEL_WARNING);
/* set default debug handler, can be overridden by user */
libusb_set_debug(ctx, LIBUSB_LOG_LEVEL_NONE);
*context = ctx;
return 0;
}
```
该函数首先分配一个新的libusb_context结构体,然后调用usbi_backend.init函数进行底层初始化。如果初始化成功,该函数会设置默认的日志处理程序和调试处理程序,并将分配的libusb_context结构体指针赋值给传递给函数的context指针。如果初始化失败,则会释放分配的内存并返回错误码。
libusb_open_device_with_pid_vid以后调用libusb_control_transfer返回-7
libusb_control_transfer返回-7通常表示操作超时。这通常是由于以下几个原因之一引起的:
1. USB设备未正确连接或未正确驱动:请确保USB设备已正确连接到计算机并已安装正确的驱动程序。你可以尝试在其他计算机上进行测试,以查看是否存在硬件问题。
2. 权限问题:在Linux系统中,未授予适当的权限可能会导致访问USB设备失败。你可以尝试使用sudo命令以root身份运行你的程序,或者将你的用户添加到dialout或plugdev组中。
3. USB设备繁忙:如果USB设备正在进行其他操作,可能会导致传输超时。请等待其他操作完成后再次尝试。
4. 传输长度或数据类型不正确:请确保传输长度和数据类型与你的设备规格相匹配。
如果你仍然无法解决问题,你可以尝试使用libusb_get_strerror函数来获取更多的错误信息,或者查看libusb的文档和示例以获取更多帮助。