libusb-win32的使用方法
之前一直找不到適合WIN7下的Tiny6410的USB下載軟件,正好這幾天開(kāi)始學(xué)習(xí)USB,所以打算自己寫(xiě)一個(gè)專門(mén)用于Tiny6410的WIN7下的USB下載軟件。
發(fā)現(xiàn)了libusb這個(gè)庫(kù)可以用作無(wú)驅(qū)USB開(kāi)發(fā),就是說(shuō)根本不需要了解Window驅(qū)動(dòng)開(kāi)發(fā)的知識(shí)就可以開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng),只需要了解一下USB的相關(guān)協(xié)議即可。Windows下我?guī)缀醪挥肰S來(lái)寫(xiě)程序,或者說(shuō)我不懂MFC吧,呵呵,所示我用Qt來(lái)做界面。好了,進(jìn)入正題。首先下載libusb-win32,下載地址:http://sourceforge.net/projects/libusb-win32/files/,注意選擇下載的文件是libusb-win32-bin-1.2.6.0.zip,這不是源碼,而是一些已經(jīng)編譯好的庫(kù)。解壓之,里面有這么一些文件(夾):下面簡(jiǎn)單介紹一下里面的東西是怎么用的。
(1)bin文件夾。里面最重要的是inf-wizard.exe這個(gè)程序,當(dāng)你的USB設(shè)備插到電腦上而沒(méi)有找到驅(qū)動(dòng)程序時(shí)就可以通過(guò)這個(gè)程序來(lái)安裝通用的USB驅(qū)動(dòng)。雙擊它,下一步,在里面找到你的USB設(shè)備,選中后下一步,最后會(huì)彈出一個(gè)對(duì)話框讓你保存它生成驅(qū)動(dòng)程序。這樣就有了驅(qū)動(dòng)程序,但還沒(méi)有安裝,可以通過(guò)設(shè)備管理器來(lái)安裝,安裝成功后就可以通過(guò)libusb來(lái)編寫(xiě)程序來(lái)訪問(wèn)你的USB設(shè)備了。
(2)examples文件夾。里面有兩個(gè)例程,一個(gè)簡(jiǎn)單的,一個(gè)復(fù)雜的,參考里面的bulk.c例程就好了。
(3)include文件夾。編寫(xiě)程序時(shí)需要用到,一般放在你的工程目錄下。
(4)lib文件夾。里面是一些已經(jīng)編譯好的庫(kù),有borland版本的,有VC++版本的,有x64位版本的,最重要的是還有g(shù)cc版本,這里用到的就是gcc版本的,該版本可以在Qt上使用。
下面開(kāi)始介紹怎么在Qt下使用該庫(kù)。新建一個(gè)Qt工程
把gcc版本的庫(kù)文件libusb.a復(fù)制到工程目錄下(可以放在其他目錄),在.pro文件中追加如下一行(路徑根據(jù)自己的情況修改):
LIBS+=“F:/Qt/pratise/libusb-test/libusb/libusb.a”
這樣就可以在鏈接時(shí)找到所需的函數(shù)。
把上面所說(shuō)的include文件夾下lusb0_usb.h文件復(fù)制到工程目錄下。
編寫(xiě)一個(gè)測(cè)試文件,我這里寫(xiě)的比較簡(jiǎn)單,程序的功能是只列出我的USB設(shè)備,如下:
復(fù)制代碼
1 #include “testlibusb.h”
2 #include “l(fā)usb0_usb.h”
3
4 USB::USB()
5 {
6 //usb_set_debug(250);
7 usb_init(); /* initialize the library /
8 usb_find_busses(); / find all busses /
9 usb_find_devices(); / find all connected devices */
10
11 my_usb_get_device_list();
12
13 resize(320, 240);
14 }
15
16
17 void USB::my_usb_get_device_list(void)
18 {
19 struct usb_bus *bus;
20 struct usb_device dev;
21
22 for (bus = usb_get_busses(); bus; bus = bus->next) {
23 for (dev = bus->devices; dev; dev = dev->next) {
24 / for specified device
25 if (dev->descriptor.idVendor == MY_VID
26 && dev->descriptor.idProduct == MY_PID)
27 {
28 return usb_open(dev);
29 }
30 */
31
32 qDebug(“VID:VID = %x:%x\n”, dev->descriptor.idVendor, dev->descriptor.idProduct);
33
34 }
35 }
36
37 }
復(fù)制代碼
好了,運(yùn)行程序,效果:
最后一行打印出來(lái)的正是Tiny6410的USB設(shè)備號(hào)。
注意:
這只能列出安裝了inf-wizard.exe生成的驅(qū)動(dòng)程序的USB設(shè)備。一開(kāi)始的時(shí)候我沒(méi)接上Tiny6410,程序沒(méi)輸出,插上一個(gè)U盤(pán),還是沒(méi)輸出,以為是程序或者這個(gè)庫(kù)有問(wèn)題,糾結(jié)了一會(huì),后來(lái)靈光一閃,插上開(kāi)發(fā)板試試吧,果然成功了,程序運(yùn)行結(jié)果就如上面所示。繼續(xù)學(xué)習(xí)USB,過(guò)2天USB開(kāi)發(fā)板到了就開(kāi)始實(shí)戰(zhàn)。之前一直找不到適合WIN7下的Tiny6410的USB下載軟件,正好這幾天開(kāi)始學(xué)習(xí)USB,所以打算自己寫(xiě)一個(gè)專門(mén)用于Tiny6410的WIN7下的USB下載軟件。
發(fā)現(xiàn)了libusb這個(gè)庫(kù)可以用作無(wú)驅(qū)USB開(kāi)發(fā),就是說(shuō)根本不需要了解Window驅(qū)動(dòng)開(kāi)發(fā)的知識(shí)就可以開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng),只需要了解一下USB的相關(guān)協(xié)議即可。Windows下我?guī)缀醪挥肰S來(lái)寫(xiě)程序,或者說(shuō)我不懂MFC吧,呵呵,所示我用Qt來(lái)做界面。好了,進(jìn)入正題。首先下載libusb-win32,下載地址:http://sourceforge.net/projects/libusb-win32/files/,注意選擇下載的文件是libusb-win32-bin-1.2.6.0.zip,這不是源碼,而是一些已經(jīng)編譯好的庫(kù)。解壓之,里面有這么一些文件(夾):下面簡(jiǎn)單介紹一下里面的東西是怎么用的。
(1)bin文件夾。里面最重要的是inf-wizard.exe這個(gè)程序,當(dāng)你的USB設(shè)備插到電腦上而沒(méi)有找到驅(qū)動(dòng)程序時(shí)就可以通過(guò)這個(gè)程序來(lái)安裝通用的USB驅(qū)動(dòng)。雙擊它,下一步,在里面找到你的USB設(shè)備,選中后下一步,最后會(huì)彈出一個(gè)對(duì)話框讓你保存它生成驅(qū)動(dòng)程序。這樣就有了驅(qū)動(dòng)程序,但還沒(méi)有安裝,可以通過(guò)設(shè)備管理器來(lái)安裝,安裝成功后就可以通過(guò)libusb來(lái)編寫(xiě)程序來(lái)訪問(wèn)你的USB設(shè)備了。
(2)examples文件夾。里面有兩個(gè)例程,一個(gè)簡(jiǎn)單的,一個(gè)復(fù)雜的,參考里面的bulk.c例程就好了。
(3)include文件夾。編寫(xiě)程序時(shí)需要用到,一般放在你的工程目錄下。
(4)lib文件夾。里面是一些已經(jīng)編譯好的庫(kù),有borland版本的,有VC++版本的,有x64位版本的,最重要的是還有g(shù)cc版本,這里用到的就是gcc版本的,該版本可以在Qt上使用。
下面開(kāi)始介紹怎么在Qt下使用該庫(kù)。新建一個(gè)Qt工程
把gcc版本的庫(kù)文件libusb.a復(fù)制到工程目錄下(可以放在其他目錄),在.pro文件中追加如下一行(路徑根據(jù)自己的情況修改):
LIBS+=“F:/Qt/pratise/libusb-test/libusb/libusb.a”
這樣就可以在鏈接時(shí)找到所需的函數(shù)。
把上面所說(shuō)的include文件夾下lusb0_usb.h文件復(fù)制到工程目錄下。
編寫(xiě)一個(gè)測(cè)試文件,我這里寫(xiě)的比較簡(jiǎn)單,程序的功能是只列出我的USB設(shè)備,如下:
復(fù)制代碼
1 #include “testlibusb.h”
2 #include “l(fā)usb0_usb.h”
3
4 USB::USB()
5 {
6 //usb_set_debug(250);
7 usb_init(); /* initialize the library /
8 usb_find_busses(); / find all busses /
9 usb_find_devices(); / find all connected devices */
10
11 my_usb_get_device_list();
12
13 resize(320, 240);
14 }
15
16
17 void USB::my_usb_get_device_list(void)
18 {
19 struct usb_bus *bus;
20 struct usb_device dev;
21
22 for (bus = usb_get_busses(); bus; bus = bus->next) {
23 for (dev = bus->devices; dev; dev = dev->next) {
24 / for specified device
25 if (dev->descriptor.idVendor == MY_VID
26 && dev->descriptor.idProduct == MY_PID)
27 {
28 return usb_open(dev);
29 }
30 */
31
32 qDebug(“VID:VID = %x:%x\n”, dev->descriptor.idVendor, dev->descriptor.idProduct);
33
34 }
35 }
36
37 }
復(fù)制代碼
好了,運(yùn)行程序,效果:
最后一行打印出來(lái)的正是Tiny6410的USB設(shè)備號(hào)。
注意:
這只能列出安裝了inf-wizard.exe生成的驅(qū)動(dòng)程序的USB設(shè)備。一開(kāi)始的時(shí)候我沒(méi)接上Tiny6410,程序沒(méi)輸出,插上一個(gè)U盤(pán),還是沒(méi)輸出,以為是程序或者這個(gè)庫(kù)有問(wèn)題,糾結(jié)了一會(huì),后來(lái)靈光一閃,插上開(kāi)發(fā)板試試吧,果然成功了,程序運(yùn)行結(jié)果就如上面所示。繼續(xù)學(xué)習(xí)USB,過(guò)2天USB開(kāi)發(fā)板到了就開(kāi)始實(shí)戰(zhàn)。之前一直找不到適合WIN7下的Tiny6410的USB下載軟件,正好這幾天開(kāi)始學(xué)習(xí)USB,所以打算自己寫(xiě)一個(gè)專門(mén)用于Tiny6410的WIN7下的USB下載軟件。
發(fā)現(xiàn)了libusb這個(gè)庫(kù)可以用作無(wú)驅(qū)USB開(kāi)發(fā),就是說(shuō)根本不需要了解Window驅(qū)動(dòng)開(kāi)發(fā)的知識(shí)就可以開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng),只需要了解一下USB的相關(guān)協(xié)議即可。Windows下我?guī)缀醪挥肰S來(lái)寫(xiě)程序,或者說(shuō)我不懂MFC吧,呵呵,所示我用Qt來(lái)做界面。好了,進(jìn)入正題。首先下載libusb-win32,下載地址:http://sourceforge.net/projects/libusb-win32/files/,注意選擇下載的文件是libusb-win32-bin-1.2.6.0.zip,這不是源碼,而是一些已經(jīng)編譯好的庫(kù)。解壓之,里面有這么一些文件(夾):下面簡(jiǎn)單介紹一下里面的東西是怎么用的。
(1)bin文件夾。里面最重要的是inf-wizard.exe這個(gè)程序,當(dāng)你的USB設(shè)備插到電腦上而沒(méi)有找到驅(qū)動(dòng)程序時(shí)就可以通過(guò)這個(gè)程序來(lái)安裝通用的USB驅(qū)動(dòng)。雙擊它,下一步,在里面找到你的USB設(shè)備,選中后下一步,最后會(huì)彈出一個(gè)對(duì)話框讓你保存它生成驅(qū)動(dòng)程序。這樣就有了驅(qū)動(dòng)程序,但還沒(méi)有安裝,可以通過(guò)設(shè)備管理器來(lái)安裝,安裝成功后就可以通過(guò)libusb來(lái)編寫(xiě)程序來(lái)訪問(wèn)你的USB設(shè)備了。
(2)examples文件夾。里面有兩個(gè)例程,一個(gè)簡(jiǎn)單的,一個(gè)復(fù)雜的,參考里面的bulk.c例程就好了。
(3)include文件夾。編寫(xiě)程序時(shí)需要用到,一般放在你的工程目錄下。
(4)lib文件夾。里面是一些已經(jīng)編譯好的庫(kù),有borland版本的,有VC++版本的,有x64位版本的,最重要的是還有g(shù)cc版本,這里用到的就是gcc版本的,該版本可以在Qt上使用。
下面開(kāi)始介紹怎么在Qt下使用該庫(kù)。新建一個(gè)Qt工程
把gcc版本的庫(kù)文件libusb.a復(fù)制到工程目錄下(可以放在其他目錄),在.pro文件中追加如下一行(路徑根據(jù)自己的情況修改):
LIBS+=“F:/Qt/pratise/libusb-test/libusb/libusb.a”
這樣就可以在鏈接時(shí)找到所需的函數(shù)。
把上面所說(shuō)的include文件夾下lusb0_usb.h文件復(fù)制到工程目錄下。
編寫(xiě)一個(gè)測(cè)試文件,我這里寫(xiě)的比較簡(jiǎn)單,程序的功能是只列出我的USB設(shè)備,如下:
復(fù)制代碼
1 #include “testlibusb.h”
2 #include “l(fā)usb0_usb.h”
3
4 USB::USB()
5 {
6 //usb_set_debug(250);
7 usb_init(); /* initialize the library /
8 usb_find_busses(); / find all busses /
9 usb_find_devices(); / find all connected devices */
10
11 my_usb_get_device_list();
12
13 resize(320, 240);
14 }
15
16
17 void USB::my_usb_get_device_list(void)
18 {
19 struct usb_bus *bus;
20 struct usb_device dev;
21
22 for (bus = usb_get_busses(); bus; bus = bus->next) {
23 for (dev = bus->devices; dev; dev = dev->next) {
24 / for specified device
25 if (dev->descriptor.idVendor == MY_VID
26 && dev->descriptor.idProduct == MY_PID)
27 {
28 return usb_open(dev);
29 }
30 */
31
32 qDebug(“VID:VID = %x:%x\n”, dev->descriptor.idVendor, dev->descriptor.idProduct);
33
34 }
35 }
36
37 }
復(fù)制代碼
好了,運(yùn)行程序,效果:
最后一行打印出來(lái)的正是Tiny6410的USB設(shè)備號(hào)。
注意:
這只能列出安裝了inf-wizard.exe生成的驅(qū)動(dòng)程序的USB設(shè)備。一開(kāi)始的時(shí)候我沒(méi)接上Tiny6410,程序沒(méi)輸出,插上一個(gè)U盤(pán),還是沒(méi)輸出,以為是程序或者這個(gè)庫(kù)有問(wèn)題,糾結(jié)了一會(huì),后來(lái)靈光一閃,插上開(kāi)發(fā)板試試吧,果然成功了,程序運(yùn)行結(jié)果就如上面所示。繼續(xù)學(xué)習(xí)USB,過(guò)2天USB開(kāi)發(fā)板到了就開(kāi)始實(shí)戰(zhàn)。之前一直找不到適合WIN7下的Tiny6410的USB下載軟件,正好這幾天開(kāi)始學(xué)習(xí)USB,所以打算自己寫(xiě)一個(gè)專門(mén)用于Tiny6410的WIN7下的USB下載軟件。
發(fā)現(xiàn)了libusb這個(gè)庫(kù)可以用作無(wú)驅(qū)USB開(kāi)發(fā),就是說(shuō)根本不需要了解Window驅(qū)動(dòng)開(kāi)發(fā)的知識(shí)就可以開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng),只需要了解一下USB的相關(guān)協(xié)議即可。Windows下我?guī)缀醪挥肰S來(lái)寫(xiě)程序,或者說(shuō)我不懂MFC吧,呵呵,所示我用Qt來(lái)做界面。好了,進(jìn)入正題。首先下載libusb-win32,下載地址:http://sourceforge.net/projects/libusb-win32/files/,注意選擇下載的文件是libusb-win32-bin-1.2.6.0.zip,這不是源碼,而是一些已經(jīng)編譯好的庫(kù)。解壓之,里面有這么一些文件(夾):下面簡(jiǎn)單介紹一下里面的東西是怎么用的。
(1)bin文件夾。里面最重要的是inf-wizard.exe這個(gè)程序,當(dāng)你的USB設(shè)備插到電腦上而沒(méi)有找到驅(qū)動(dòng)程序時(shí)就可以通過(guò)這個(gè)程序來(lái)安裝通用的USB驅(qū)動(dòng)。雙擊它,下一步,在里面找到你的USB設(shè)備,選中后下一步,最后會(huì)彈出一個(gè)對(duì)話框讓你保存它生成驅(qū)動(dòng)程序。這樣就有了驅(qū)動(dòng)程序,但還沒(méi)有安裝,可以通過(guò)設(shè)備管理器來(lái)安裝,安裝成功后就可以通過(guò)libusb來(lái)編寫(xiě)程序來(lái)訪問(wèn)你的USB設(shè)備了。
(2)examples文件夾。里面有兩個(gè)例程,一個(gè)簡(jiǎn)單的,一個(gè)復(fù)雜的,參考里面的bulk.c例程就好了。
(3)include文件夾。編寫(xiě)程序時(shí)需要用到,一般放在你的工程目錄下。
(4)lib文件夾。里面是一些已經(jīng)編譯好的庫(kù),有borland版本的,有VC++版本的,有x64位版本的,最重要的是還有g(shù)cc版本,這里用到的就是gcc版本的,該版本可以在Qt上使用。
下面開(kāi)始介紹怎么在Qt下使用該庫(kù)。新建一個(gè)Qt工程
把gcc版本的庫(kù)文件libusb.a復(fù)制到工程目錄下(可以放在其他目錄),在.pro文件中追加如下一行(路徑根據(jù)自己的情況修改):
LIBS+=“F:/Qt/pratise/libusb-test/libusb/libusb.a”
這樣就可以在鏈接時(shí)找到所需的函數(shù)。
把上面所說(shuō)的include文件夾下lusb0_usb.h文件復(fù)制到工程目錄下。
編寫(xiě)一個(gè)測(cè)試文件,我這里寫(xiě)的比較簡(jiǎn)單,程序的功能是只列出我的USB設(shè)備,如下:
復(fù)制代碼
1 #include “testlibusb.h”
2 #include “l(fā)usb0_usb.h”
3
4 USB::USB()
5 {
6 //usb_set_debug(250);
7 usb_init(); /* initialize the library /
8 usb_find_busses(); / find all busses /
9 usb_find_devices(); / find all connected devices */
10
11 my_usb_get_device_list();
12
13 resize(320, 240);
14 }
15
16
17 void USB::my_usb_get_device_list(void)
18 {
19 struct usb_bus *bus;
20 struct usb_device dev;
21
22 for (bus = usb_get_busses(); bus; bus = bus->next) {
23 for (dev = bus->devices; dev; dev = dev->next) {
24 / for specified device
25 if (dev->descriptor.idVendor == MY_VID
26 && dev->descriptor.idProduct == MY_PID)
27 {
28 return usb_open(dev);
29 }
30 */
31
32 qDebug(“VID:VID = %x:%x\n”, dev->descriptor.idVendor, dev->descriptor.idProduct);
33
34 }
35 }
36
37 }
復(fù)制代碼
好了,運(yùn)行程序,效果:
最后一行打印出來(lái)的正是Tiny6410的USB設(shè)備號(hào)。
注意:
這只能列出安裝了inf-wizard.exe生成的驅(qū)動(dòng)程序的USB設(shè)備。一開(kāi)始的時(shí)候我沒(méi)接上Tiny6410,程序沒(méi)輸出,插上一個(gè)U盤(pán),還是沒(méi)輸出,以為是程序或者這個(gè)庫(kù)有問(wèn)題,糾結(jié)了一會(huì),后來(lái)靈光一閃,插上開(kāi)發(fā)板試試吧,果然成功了,程序運(yùn)行結(jié)果就如上面所示。繼續(xù)學(xué)習(xí)USB,過(guò)2天USB開(kāi)發(fā)板到了就開(kāi)始實(shí)戰(zhàn)。總結(jié)
以上是生活随笔為你收集整理的libusb-win32的使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Processing-对象(class)
- 下一篇: xp如何查看计算机配置文件,Window