请叫我杨工 2018-04-04 04:02 采纳率: 0%
浏览 2536
已结题

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

按照各技术贴的配置方法,已经在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条回答 默认 最新

  • TheNewWorldIsComing 2018-04-04 04:40
    关注

    最好先错误信息贴出来

    评论

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题