C 为什么我从libusb批量传输的usb输出接收0字节的数据?

C 为什么我从libusb批量传输的usb输出接收0字节的数据?,c,image,usb,raspberry-pi,libusb,C,Image,Usb,Raspberry Pi,Libusb,我用5伏的脉冲给USB摄像机脉冲,它就会拍照。脉冲相机然后发送一个USB信号回树莓pi。我正在写一个程序来收集通过USB发送的图像。下面是我的代码,用于在触发后开始从相机获取输入 void opendevice() { libusb_device_handle* dev; struct libusb_device_descriptor* desc; int r; int err; int transfered; libusb_init(NULL); dev = libusb_op

我用5伏的脉冲给USB摄像机脉冲,它就会拍照。脉冲相机然后发送一个USB信号回树莓pi。我正在写一个程序来收集通过USB发送的图像。下面是我的代码,用于在触发后开始从相机获取输入

void opendevice()
{

libusb_device_handle* dev;
struct libusb_device_descriptor* desc;
int r;
int err;
int transfered;

   libusb_init(NULL);
   dev = libusb_open_device_with_vid_pid( NULL, 0x2a0b, 0x00f8);

      if (dev == NULL)
      {
          printf("device not found\n");
      }

      if(libusb_kernel_driver_active(dev, 0) == 1)
      {
           printf("Driver active\n");

       if(libusb_detach_kernel_driver(dev, 0) == 0)
        {

         printf("Kernel Driver Detached\n");
        }
      }

      libusb_set_configuration(dev,1);

     err = libusb_claim_interface(dev, 0);


    if(err != 0)
    {
       printf("cannot claim interface\n");
    }
     unsigned char usb_data[4];
     int size = sizeof(unsigned int) *1280 *960;
     unsigned *data;
     data = (unsigned int *)malloc(size);

    r = libusb_bulk_transfer(dev, LIBUSB_ENDPOINT_IN | 0x83, usb_data, sizeof(data), &transfered, 0); 

 if(r == 0)
  {
       printf("data has been transfered\n");
   } 
   else{ 
    printf("error code %d\n", r);
    printf("bytes transfered %d\n", transfered); 

  }
}

我找到设备分离检查,看看内核是否在使用它,然后如果是,我分离它。分离它之后,我声明接口,然后等待在批量传输内部发生传输。但是,我从未从传输中接收数据。即使从usb端口拔下相机,r也会返回值-1,并且我的传输大小为0。有人能告诉我这里缺少什么吗


如果你需要更多的信息,请告诉我

您的代码存在缓冲区溢出:

     unsigned char usb_data[4]; // <---
     int size = sizeof(unsigned int) *1280 *960;
     unsigned *data;  // <-- not used!
     data = (unsigned int *)malloc(size);

    r = libusb_bulk_transfer(dev, LIBUSB_ENDPOINT_IN | 0x83, usb_data //<
    ,sizeof(data), &transfered, 0)
无符号字符usb_数据[4]//