请叫我杨工 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 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块