libusb win32學習筆記(二)

2021-07-02 01:15:17 字數 1869 閱讀 6848

當完成配置工作後,就可以進行**的編寫(需要了解一些基本的usb協議的知識)。對於乙個庫的使用,其幫助文件是非常重要的,可以去找libusb-win32開發

文件 (

接下來分析一下使用bulk

進行資料傳輸的**。

編寫**時,首先要確定

idvendor

和idproduct

,接著要確定

bulk

端點的輸入輸出的埠ep_in和ep_out(pc端與usb裝置是相反的):

#define idvendor        0x1122

#define idproduct 0x3344

#define ep_out 0x04

#define ep_in 0x83

#define my_config  0x01

#define my_int 0x00

#define buffer_size 64

接著是初始化,以及查詢自己的裝置:

struct usb_bus *bus; struct usb_device *dev; struct usb_dev_handle *hdev; int ret = 0; char buffer2[buffer_size] = "usbkey by libusb-win32";

usb_init();

usb_find_busses();

usb_find_devices();

for(bus = usb_get_busses(); bus; bus = bus->next)}}

通過idvendor和idproduct找到自己的裝置之後就可以開啟裝置,得到乙個裝置的控制代碼hdev

,通過該控制代碼就可以進行傳輸控制等操作了:

hdev =usb_open(dev);

if(hdev ==null)

要進行資料的傳輸,必須先呼叫下面兩個函式,進行配置和註冊(可以檢視幫助文件了解到):

if (usb_set_configuration(hdev, my_config) < 0

) if (usb_claim_inte***ce(hdev, my_int) < 0

)

其中my_config和my_int分別由descriptor 中的 bconfigurationvalue欄位和 

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...