一、libusb 下載
在官網http://libusb.info/可以下載到
二、libusb的安裝
1 解壓
tar -jxvf libusb-1.0.22.tar.bz2
執行命令,你會發現執行報錯,configure: error: udev support requested but libudev header not installed
解決辦法:執行 ./configure 命令,注意該命令可以選擇編譯平台,編譯的庫版本也即運行平台,編譯工具鏈,安裝路徑等,所以不是默認配置的用戶需要在此項自行配置,常見配置選項有:
--build=i686-linux指明軟件的編譯平台
--host=arm-linux 指明軟件的運行平台
--prefix 指明軟件的安裝目錄
所以,如果在本機PC上使用,那么需要進行如下配置:
綜上,命令是: ./configure--build=x86_64-linux --disable-udev
2.make install
三 測試
static libusb_device_handle *dev_handle = NULL;
unsigned char find_dev() { int ret; ret = libusb_init(NULL); if(ret < 0) { fprintf(stderr, "failed to initialise libusb\n"); return 1; } dev_handle = libusb_open_device_with_vid_pid(NULL, 0x1992, 0x0668); if(dev_handle == NULL){ perror("Cannot open device\n"); }else{ printf("Device Opened\n"); } if(libusb_kernel_driver_active(dev_handle, 0) == 1) { printf("Kernel Driver Active\n"); if(libusb_detach_kernel_driver(dev_handle, 0) == 0){ printf("Kernel Driver Detached!\n"); } } ret = libusb_claim_interface(dev_handle, 0); if(ret < 0) { perror("Cannot Claim Interface\n"); return 1; } }
ret = libusb_bulk_transfer(dev_handle,0x02, (unsigned char *)&l_PrepareMeasData, pmsize,&transferred, 0);//發送命令
printf("ret=%d transferred=%d\r\n",ret,transferred);
if(ret==0 && transferred==pmsize)
{
printf("write Successful!\n");
}
else{
printf("write error!\n");
}
ret = libusb_bulk_transfer(dev_handle, 0x86, rcvPreRcv, 6, &transferred, 0);//接收命令
if (ret != 0) {
printf("failed to read \n");
}
編譯:
加上:-I/usr/local/include/libusb-1.0/ -L/usr/local/lib -lusb-1.0 -lrt
-lrt 不加會報錯。