- 论坛徽章:
- 0
|
前几天在做一个usbkey的linux下静态库访问接口,遇到点很奇怪的问题,一直没能解决,所以发到论坛上问问,欢迎高手指点
写了一个测试程序来测试写好的静态库 gcc -o test_s.bin test.o libMyKEY.a
运行现象:
第一次运行./test_s.bin,工作正常,正常结束,但接着再运行一次,就会阻塞在usb_bulk_read上了,强行拔掉usbkey后,才会返回通讯错误
写操作是这样写的:
TransLength = usb_bulk_write(handle, 0x02, (char*)&HIDSendBuf, sizeof(struct HID_BUFFER), 1000);
读操作是这样写的:
TransLength = usb_bulk_read(handle, 0x81, (char*)&HIDSendBuf, sizeof(struct HID_BUFFER), 0);
在读写操作的前后没有使用usb_claim_interface(handle, 0)和usb_release_interface(handle, 0),因为加上这两句,第一次运行就会阻塞在usb_bulk_read上了,也就是说好象不能使用这两句,不知为什么
枚举和打开设备的相关代码应该没问题:
Enum时:
usb_find_busses();
usb_find_devices();
usbhandle = usb_open(dev);
usb_detach_kernel_driver_np(usbhandle,0);
usb_close(usbhandle);
Open时:
usbhandle = usb_open(dev);
Close时
usb_close(usbhandle); |
|