[SETUP] 2D 00 10
[OUT] E1 01 E8
/home/wangxj/tool_tar/libusb-1.0.20
或者
/home/wangxj/tool_tar/libusb-1.0.9
都可以
移植libusb
make
make install
拷贝到/usr/local/libusb_arm/lib
参考
https://code.csdn.net/snippets/470559
arm-linux-g++ usbtrans.c -o usbtrans `PKG_CONFIG_PATH=/usr/local/libusb_arm/lib/pkgconfig/ pkg-config --cflags --libs libusb-1.0`
修改dev_handle = libusb_open_device_with_vid_pid(ctx, 0xc1ca, 0x005); //vid pid
编译usbtrans
将libusb-1.0.so libusb-1.0.so.0 libusb-1.0.so.0.1.0 拷贝到/usr/lib
运行
[root@me bin]# ./usbtrans
Device Opened
Claimed Interface
Released Interface
[root@me bin]#
libusb_control_transfer(dev_handle, 0x80, LIBUSB_REQUEST_GET_DESCRIPTOR, 0x0100, 0, open_data, 0x0040, 5000)
返回-9 /** Pipe error */
LIBUSB_ERROR_PIPE = -9,
但是高清摄像头,就可以到读到数据
调用libusb_reset_device(dev_handle);可以读到设备描述符
//设备描述符,18个字段
12 01 0101 02 00 00 08 cac1 0500 0000 00 00
bLength bDecriptorType bcdUSB bDeviceClass bDeviceSubClass bDevicePortocol bMaxPacketSize0 idVendor idProduct bcdDevice iManufacturer iProduct
01:设备描述符 02:通信类
00 01
iSerialNumber bNumConfigurations
可能的配置描述符数目
//配置描述符, 9个字段
09 02 4300 02 01 04 40 00
bDescriptorType wTotalLength bNumInterfaces
bCongfigurationValue iConfiguration bmAttributes
MaxPower
两个接口 自给电源 总线电源消耗
//接口描述符-0
09 04 00 00 01 02 02 01 05
bInterfaceNumber bAlternateSetting
bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
接口号 端点数量 CDC控制类 描述此接口的字串描述表的索引值。
以下数据不懂
//05 24 00 10 01
//05 24 01 00 01
//04 24 02 00
//05 24 06 00 01
//端点描述符---端点1
//07 05 81 03 2000 02
设备到主机 中断传输 端点最大数据包 时间间隙
端点1
//接口描述符-1
//09 04 01 00 02 0a 00 00 06
bInterfaceNumber bAlternateSetting
bNumEndpoints bInterfaceClass bInterfaceSubClass bInterfaceProtocol iInterface
接口号 端点数量 CDC控制类 描述此接口的字串描述表的索引值。
//端点描述符---端点2
//07 05 82 02 2000 00
设备到主机 批量传输 端点最大数据包
端点2
//端点描述符---端点3
//07 05 03 02 2000 00 00 00
主机到设备 批量传输 端点最大数据包
端点3
从以上信息可以知道:
批量输出端点: 0x03
批量输入端点: 0x82
通过libusb_bulk_transfer(dev_handle,0x03,dataout,18,&size,100); 发送数据
通过libusb_bulk_transfer(dev_handle,0x82,datain,sizeof(datain),&size,200);接收数据
:)) 终于走通
2016.05.19
改写usbtrans 直接调用upslibso
发现,如果用comtest先测试一下usb口的收发,然后再用usbtrans测试,就可以收到数据,但是接收数据需要等待1000ms,
而且接收数据不稳定。