Android下libusb的使用,打开设备Android程序直接崩溃了 20C

按照各技术贴的配置方法,已经在libusb中的图片说明图片说明这几个文件做了修改,添加了liusb_open_fd函数。安卓方也做了权限设置图片说明。但是在调用我方提供的openDev函数后,出现了崩溃的现象,经过排查是调用了libusb_open_fd函数后奔溃。openDev中就是图片说明这样写的。请各路大牛能帮我提供问题出现的原因或者解决方法。在此感谢!!!!急!!!

这是解决崩溃后的

```int IBUsbDev:: OpenDevice(int fd)
{
libusb_device **devs; //pointer to pointer of device, used to retrieve a list of devices

int ret = (-1);
int cnt=0;
int configure = 1;
if (libusb_init(&ctx) < 0) //initialize a library session
{
      return (-1);
}
libusb_set_debug(ctx, LIBUSB_LOG_LEVEL_INFO);
cnt=libusb_get_device_list(ctx,&devs); //get the list of devices
if(cnt < 0) {
    perror("Get Device Error\n"); //there was an error
    return 1;
}

ret =  libusb_open_fd(*devs,&udev,fd);
if(ret!=0)
{
  printf("Cannot open device\n");
  libusb_exit(ctx);
    return -2;
}

libusb_free_device_list(devs, 1);
//libusb_detach_kernel_driver(udev,0);
libusb_reset_device(udev);
libusb_get_configuration(udev,&configure);
if(libusb_kernel_driver_active(udev, 0) == 1) { //find out if kernel driver is attached
    cout<<"Kernel Driver Active"<<endl;
    if(libusb_detach_kernel_driver(udev, 0) == 0) //detach it
        cout<<"Kernel Driver Detached!"<<endl;
}
ret = libusb_claim_interface(udev, 0);
if (ret<0)
{
    return (ret);
}
return 0;

}


7个回答

最好先错误信息贴出来

qq_22701117
qq_22701117 并没有错误信息,是直接崩溃了。我只是提供接口,安卓方不归我
2 年多之前 回复

先增加一些日志,看看你的openDev函数跑到了什么位置,然后再定位分析

qq_22701117
qq_22701117 libusb_open_fd在使用这个函数时崩溃了,在问题中也写了
2 年多之前 回复

debug一下,看看是什么原因引起的

qq_22701117
qq_22701117 调用新增加的libusb_open_fd函数时崩溃了
2 年多之前 回复

是由于在打开设备之前没有获取设备列表导致,感谢各位的答复~~就此结贴吧

sky79
sky79 回复长大了想当个宝宝: 你好,问题解决了吗?libusb_get_device_list获取不到设备列表
一年多之前 回复
Royan1
Royan1 楼主你好,有libusb的简单教程么?
2 年多之前 回复
kmoon5
长大了想当个宝宝 回复qq_2270111谢谢楼主!!!!已经能正常打开设备!
2 年多之前 回复
qq_22701117
qq_22701117 回复kmoon5: 贴出来了
2 年多之前 回复
kmoon5
长大了想当个宝宝 你好,楼主,我遇到的问题和你是一样的,但同样添加了设备列表,但仍然崩溃,楼主可以贴一下你获取设备列表后,成功打开设备的代码吗?或者帮我看看我的问题,已经有在评论中评价了。
2 年多之前 回复

崩溃日志是什么。需要足够多是信息才能判读是哪的问题

获取设备列表必须要root权限么?我没有root权限,获取不到设备列表

@活活的,是root的原因吗?我也获取不到设备列表?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问