16,549
社区成员




这个usb是个复合设备,需要跟下面的指定端点通讯,代码类似如下:
// 初始化libusb
r = libusb_init(&ctx);
if (r < 0) {
fprintf(stderr, "Initialization error\n");
return 1;
}
// 打开设备
handle = libusb_open_device_with_vid_pid(ctx, VENDOR_ID, PRODUCT_ID);
if (handle == NULL) {
fprintf(stderr, "Cannot open device\n");
libusb_exit(ctx);
return 1;
}
// 声明接口0(通常情况下)
r = libusb_claim_interface(handle, 0);
if (r < 0) {
fprintf(stderr, "Cannot claim interface 0\n");
libusb_close(handle);
libusb_exit(ctx);
return 1;
}
// 发送数据
r = libusb_bulk_transfer(handle, ENDPOINT_OUT, data, sizeof(data), &actual_length, 0);
if (r == 0 && actual_length == sizeof(data)) {
printf("Data sent successfully\n");
} else {
fprintf(stderr, "Error in bulk write: %d\n", r);
}
另外,用bus hound发送是正常的,说明驱动应该没问题
你用bus hound分别抓包比对一下数据,看看是否有什么差异?