當完成配置工作後,就可以進行**的編寫(需要了解一些基本的usb協議的知識)。對於乙個庫的使用,其幫助文件是非常重要的,可以去找libusb-win32開發
文件 (
接下來分析一下使用bulk
進行資料傳輸的**。
編寫**時,首先要確定
idvendor
和idproduct
,接著要確定
bulk
端點的輸入輸出的埠ep_in和ep_out(pc端與usb裝置是相反的):
#define idvendor 0x1122接著是初始化,以及查詢自己的裝置: struct usb_bus *bus; struct usb_device *dev; struct usb_dev_handle *hdev; int ret = 0; char buffer2[buffer_size] = "usbkey by libusb-win32";#define idproduct 0x3344
#define ep_out 0x04
#define ep_in 0x83
#define my_config 0x01
#define my_int 0x00
#define buffer_size 64
usb_init();通過idvendor和idproduct找到自己的裝置之後就可以開啟裝置,得到乙個裝置的控制代碼hdevusb_find_busses();
usb_find_devices();
for(bus = usb_get_busses(); bus; bus = bus->next)}}
,通過該控制代碼就可以進行傳輸控制等操作了:
hdev =usb_open(dev);要進行資料的傳輸,必須先呼叫下面兩個函式,進行配置和註冊(可以檢視幫助文件了解到):if(hdev ==null)
if (usb_set_configuration(hdev, my_config) < 0其中my_config和my_int分別由descriptor 中的 bconfigurationvalue欄位和) if (usb_claim_inte***ce(hdev, my_int) < 0
)
descriptor 中的binte***cenumber(關於這兩個欄位在usb協議中有介紹)。
接著就可以使用函式進行bulk端點讀寫操作:
ret = usb_bulk_write(hdev,ep_out,buffer2,buffer_size,1000讀寫結束後關閉裝置:);if(ret < 0
)else
ret = usb_bulk_read(hdev,ep_in,buffer2,buffer_size,1000
);if(ret < 0
)else
ret = usb_bulk_read(hdev,ep_in,buffer2,buffer_size,1000
);if(ret < 0
)else
usb_close(hdev);usb硬體裝置的部分**:
unsigned char程式執行結果:buffer[buffer_size];
usb_init();
while(1
)
libusb win32 編譯配置
編譯配置 修改工程libwdi 中config.h 的原工程的路徑 ifndef libusb0 dir define libusb0 dir z packages libusb win32 define libusb0 dir e code libusb win32 bin 1.2.6.0 end...
關於libusb win32開發的經驗
作為裝置開發者,一般需要讓裝置與上位機pc通訊,我們往往考慮採用以下幾種介面 rs232,usb,ethernet.現在在pc機上已經很難見到rs232的介面,而ethernet也需要做特殊的配置,usb大多成為我們的首選.對於資料偏少的應用,我們可以利用usb虛擬串列埠的方式來完成這樣的任務,虛擬...
c 記錄 編譯libusb win32過程
參考 wdk編譯libwdi libwdi 編譯安裝 libusb win32 在windows7上使用vs2010編譯過程 libusb win32 win7 vs2010編譯配置過程.doc 建立libusb win32編譯環境,及快速除錯方法 已結帖 用vs開啟安裝目錄 project lib...