


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、更多企業(yè)學(xué)院:中小企業(yè)管理全能版183套講座+89700份資料總經(jīng)理、高層管理49套講座+16388份資料中層管理學(xué)院46套講座+6020份資料國學(xué)智慧、易經(jīng)46套講座人力資源學(xué)院56套講座+27123份資料各階段員工培訓(xùn)學(xué)院77套講座+324份資料員工管理企業(yè)學(xué)67套講座+8720份資院料工廠生產(chǎn)管理學(xué)院52套講座+13920份資料財(cái)務(wù)管理學(xué)院53套講座+17945份資料銷售經(jīng)理學(xué)院56套講座+14350份資料銷售人員培訓(xùn)學(xué)院72套講座+4879份資料第1章緒論1.1 US瞞介USB是由世界著名計(jì)算機(jī)和通信公司等共同推出的新一代接口標(biāo)準(zhǔn),全稱為UniversalSerialBus(通用申行總
2、線)1,是一種快速、靈活的總線接口。它是為了解決日益增加的PC外設(shè)與有限的主板插槽和端口之間的矛盾而制定的一種申行通信標(biāo)準(zhǔn)。USB應(yīng)用十分廣泛,并具有下述優(yōu)點(diǎn):1、適用丁多種外設(shè),使它不需要為不同的外設(shè)準(zhǔn)備不同的接口和協(xié)議;2、Windows能自動檢測到USBS備的熱插拔,并自動配置;3、PC機(jī)上的接口線非常緊缺,而USB®備并不需要用戶設(shè)置端口故無論從用戶使用方便性,或從對資源的占用方面看,USEO很優(yōu)秀;4、當(dāng)接入一個US瞅備時,全速US成口可達(dá)12Mbit/s??紤]到狀態(tài)、控制和出錯信息,最大理論速度仍可達(dá)到9.6Mbit/s,這是其他申行接口協(xié)議所不能比擬的,且USB也支持1
3、.5Mbit/s的低速傳輸5、USE®口芯片價(jià)格低廉,這也大大促進(jìn)USES備的開發(fā)與應(yīng)用。在USB出現(xiàn)之前,計(jì)算機(jī)典型接口有并行口、申行口、鼠標(biāo)口、鍵盤口、顯示器口,及各種卡式接口等,與這些接口對應(yīng)的有各種不同的電纜,在傳度速度方面,這些接口都存在速度偏低的問題。在技術(shù)方面,這種設(shè)計(jì)容易產(chǎn)生I/O沖突,中斷不夠用,以及對丁每一種新的外設(shè)都必須設(shè)計(jì)新的接口卡等缺點(diǎn)。當(dāng)今的計(jì)算機(jī)外部設(shè)備,都在追求高速度和高通用性。USB接口適應(yīng)了這種要求,并以其速度快、使用方便、成本低等優(yōu)點(diǎn),迅速得到了眾多PC廠商和半導(dǎo)體廠商的大力支持,外設(shè)向USBS度成為必然趨勢。1.2 USES區(qū)動程序的意義如果P
4、C主機(jī)不知道如何與USB外設(shè)通信,那么這個US畛卜設(shè)一點(diǎn)用處都沒有,人機(jī)接口設(shè)備(HID)2類是Windows完全支持的USB®備類型中的一種,應(yīng)用程序可以使用操作系統(tǒng)內(nèi)設(shè)置的驅(qū)動與HID通信,但與HID通信不像打開一個端口,設(shè)定幾個參數(shù),然后就可以讀寫數(shù)據(jù)那么簡單,在應(yīng)用程序能與HID交換數(shù)據(jù)之前,它先要找到設(shè)備,獲取有關(guān)它的報(bào)告信息。為做到這些,應(yīng)用程序必須通過訪問通信API函數(shù),使位丁上層的應(yīng)用程序與位丁下層的設(shè)備驅(qū)動程序進(jìn)行數(shù)據(jù)交換。應(yīng)用程序可以使用任何能訪問API函數(shù)的程序語言,VC+忐一種能訪問API函數(shù)的功能強(qiáng)大的語言,因此,我們應(yīng)用VisualC+6.0環(huán)境下編寫與U
5、S瞅備通信的Windows程序。1.3 VC+欹件的介紹應(yīng)用基丁MFCAppWizard的應(yīng)用程序。MFQMicrosoftFoundationClassLibrary)中的各種類結(jié)合起來構(gòu)成了一個應(yīng)用程序框架,它的目的就是在此基礎(chǔ)上來建立Windows下的應(yīng)用程序,這是一種相對SDK說更為簡單的方法。因?yàn)榭傮w上,MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓。MicrosoftVisualC+提供了相應(yīng)的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用丁幫助直觀地設(shè)計(jì)
6、用戶接口;ClassWizard用來協(xié)助添加代碼到框架文件;最后,編譯,則通過類庫實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。1.4 系統(tǒng)方案設(shè)計(jì)上位機(jī)界面應(yīng)用VC+6.0軟件來編寫,為了簡單適用,在創(chuàng)建工程時采用對話框類型。一個好的應(yīng)用程序首先要有好的用戶界面,看起來賞心悅目,使用起來簡單、方便。顯示界面上的各個元素需要和USB®備上的元件擺放位置相對應(yīng)。把要完成的一系列功能的顯示元素分成不同的模塊來進(jìn)行程序的編寫,每一個模塊分別完成一種功能,這樣既方便檢查程序,也方便在通信發(fā)生錯誤時的對錯誤進(jìn)行分析。為了實(shí)現(xiàn)PC機(jī)對USBK備的識別,上位機(jī)端需要有一個USBS備的驅(qū)動程序來識別和支持USB設(shè)備,否
7、則PC機(jī)將無法識另UUSB設(shè)備。這里選用DriverStudio軟件來編寫,它能生成一個簡單的驅(qū)動程序的框架,根據(jù)需要,可以在此基礎(chǔ)上進(jìn)行更深層的開發(fā)。1.5 預(yù)期結(jié)果通過上位機(jī)軟件和驅(qū)動程序的編寫實(shí)現(xiàn)以下功能:1、完成上位機(jī)軟件的編寫,并可以在設(shè)備沒有連接時顯小連接錯誤。2、完成驅(qū)動程序的編寫,實(shí)現(xiàn)上位機(jī)能發(fā)現(xiàn)USB設(shè)備,并使上位機(jī)能正確配置設(shè)備。同時在顯示界面上顯示出找到設(shè)備。3、實(shí)現(xiàn)雙向傳輸。在上位機(jī)軟件中可以控制USB設(shè)備中的相應(yīng)顯示,同時可以接收到USB設(shè)備傳回的消息,并在顯示界面上顯示。達(dá)到一個PC機(jī)與USBiS備信息的交互,完成通信。4、利用VC編程實(shí)現(xiàn)對計(jì)算機(jī)底層硬件的操作,培
8、養(yǎng)在此方面工程開發(fā)的能力2.1 第2章USBB議USB系統(tǒng)的使用分類及系統(tǒng)的描述USB設(shè)計(jì)的初衷是針對桌面電腦而不是應(yīng)用丁可移動的環(huán)境下的。軟件體系通過對各種主機(jī)控制器提供支持以保證將來對USB的擴(kuò)充3。USB是一種電纜總線,支持在主機(jī)和各式各樣的即插即用的外設(shè)之間進(jìn)行數(shù)據(jù)傳輸。由主機(jī)預(yù)定的標(biāo)準(zhǔn)的協(xié)議使各種設(shè)備分享US耶寬,當(dāng)其它設(shè)備和主機(jī)在運(yùn)行時,總線允許添加、設(shè)置、使用以及拆除外設(shè)。USES統(tǒng)的描述:一個USB系統(tǒng)主要被定義為三個部分:USB勺互連、USB的設(shè)備、USB勺主機(jī)。USB的互連是指USB設(shè)備與主機(jī)之間進(jìn)行連接和通信的操作,主要包括以下幾方面:(1) 總線的拓?fù)浣Y(jié)構(gòu):USB
9、74;備與主機(jī)之間的各種連接方式;(2) 內(nèi)部層次關(guān)系:根據(jù)性能疊置,USB勺任務(wù)被分配到系統(tǒng)的每一個層次;(3) 數(shù)據(jù)流模式:描述了數(shù)據(jù)在系統(tǒng)中通過USB產(chǎn)生方到使用方的流動方式;(4) USB的調(diào)度:US眺供了一個共享的連接。對可以使用的連接進(jìn)行了調(diào)度以支持同步數(shù)據(jù)傳輸,并且避免的優(yōu)先級判別的開銷。USB勺設(shè)備如下所示:(1) 網(wǎng)絡(luò)集線器,向USB供了更多的連接點(diǎn);(2) 功能器件:為系統(tǒng)提供具體功能,如ISDN的連接,數(shù)字的游戲桿或揚(yáng)聲器。USB®備提供的USBB準(zhǔn)接口的主要依據(jù):(1) 對USBB議的運(yùn)用;對標(biāo)準(zhǔn)US硼作的反饋,如設(shè)置和復(fù)位;標(biāo)準(zhǔn)性能的描述性信息;USB專輸方
10、式:USB總線屆一種輪訊方式的總線,主機(jī)控制端口初始化所有的數(shù)據(jù)傳輸。每一總線執(zhí)行動作最多傳送三個數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時,主機(jī)控制器發(fā)送一個描述傳輸運(yùn)作的種類、方向,USB設(shè)備地址和終端號的USB據(jù)包,這個數(shù)據(jù)包通常稱為標(biāo)志包(tokenpacket)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當(dāng)位置取出屆丁自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機(jī)到設(shè)備就是從設(shè)備到主機(jī)。在傳輸開始時,由標(biāo)志包來標(biāo)志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的US吸據(jù)傳輸,在主機(jī)和設(shè)備的端口之間,可視為一個
11、通道。存在兩種類型的通道:流和消息。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒有USBff定義的結(jié)構(gòu),而且通道與數(shù)據(jù)帶寬、傳送服務(wù)類型,端口特性(如方向和緩沖區(qū)大小)有關(guān)。USB中有一個特殊的通道一一缺省控制通道,它屆丁消息通道,當(dāng)設(shè)備一啟動即存在,從而為設(shè)備的設(shè)置、查詢狀況和輸入控制信息提供一個入口。2.2.1 USBW理接口的電器特性USBW理接口USB傳送信號和電源是通過一種四線的電纜,兩根線是用丁發(fā)送信號。存在兩種數(shù)據(jù)傳輸率:(1) 圖2.1USB物理接口USB的高速信號的比特率定為12Mbps低速信號傳送的模式定為1.5Mbps;電纜中包括VBUSGNX條線,向設(shè)備提供電源。VBU皺用+5V電源U
12、SB對電纜長度的要求很寬,最長可為幾米。通過選擇合適的導(dǎo)線長度以匹配指定的IRdrop和其它一些特性,如設(shè)備能源預(yù)算和電纜適應(yīng)度。為了保證足夠的輸入電壓和終端阻抗。重要的終端設(shè)備應(yīng)位丁電纜的尾部。在每個端口都可檢測終端是否連接或分離,并區(qū)分出高速,或低速設(shè)備。2.2.2 電源主要包括兩方面:電源分配:即USB勺設(shè)備如何通過USB配得到由主計(jì)算機(jī)提供的能源。每個usBm元通過電纜只能提供有限的能源。主機(jī)對那種直接相連的USB設(shè)備提供電源供其使用。并且每個USB®備都可能有自己的電源。那些完全依靠電纜提供能源的設(shè)備稱作“總線供能”設(shè)備。相反,那些可選擇能源來源的設(shè)備稱作“自供電”設(shè)備。而
13、且,集線器也可由與之相連的USB殳備提供電源。(1) 電源管理:即通過電源管理系統(tǒng),USB勺系統(tǒng)軟件和設(shè)備如何與主機(jī)協(xié)調(diào)工作。US"機(jī)與USB系統(tǒng)有相互獨(dú)立的電源管理系統(tǒng)。USB勺系統(tǒng)軟件可以與主機(jī)的能源管理系統(tǒng)結(jié)合共同處理各種電子元件如掛起、喚醒,并且有特色的是,USB設(shè)備應(yīng)用特有的電源管理特性,可讓系統(tǒng)軟件和控制其電源管理。2.2.3 總線協(xié)議主機(jī)控制端口初始化所有的數(shù)據(jù)傳輸。每一總線執(zhí)行動作最多傳送三個數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時,主機(jī)控制器發(fā)送一個描述傳輸運(yùn)作的種類、方向,USB設(shè)備地址和終端號的USB數(shù)據(jù)包,這個數(shù)據(jù)包通常稱為標(biāo)志包(tokenpacke
14、t)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當(dāng)位置取出屆丁自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機(jī)到設(shè)備就是從設(shè)備到主機(jī)。在傳輸開始時,由標(biāo)志包來標(biāo)志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的US函據(jù)傳輸,在主機(jī)和設(shè)備的端口之間,可視為一個通道。存在兩種類型的通道:流和消息。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒有USB所定義的結(jié)構(gòu),而且通道與數(shù)據(jù)帶寬、傳送服務(wù)類型,端口特性(如方向和緩沖區(qū)大小)有關(guān)。多數(shù)通道在USB設(shè)備設(shè)置完成后即存在。USB中有一個特殊的通道一一缺省控制通道,它屆丁消息通道,當(dāng)設(shè)備一啟動即存在,從
15、而為設(shè)備的設(shè)置、查詢狀況和輸入控制信息提供一個入口。事務(wù)預(yù)處理允許對一些數(shù)據(jù)流的通道進(jìn)行控制,從而在硬件級上防止了對緩沖區(qū)的高估或低估,通過發(fā)送不確認(rèn)握手信號從而阻塞了數(shù)據(jù)的傳輸速度。當(dāng)不確認(rèn)信號發(fā)過后,若總線有空閑,數(shù)據(jù)傳輸將再做一次。這種流控制機(jī)制允許靈活的任務(wù)安排,可使不同性質(zhì)的流通道同時正常工作,這樣多種流通??稍诓煌g隔進(jìn)行工作,傳送不同大小的數(shù)據(jù)包。1、USB®備的安裝所有的USE®備都是通過端口接在USB上,網(wǎng)絡(luò)集線器知道這些指定的USE®備,集線器有一個狀態(tài)指示器指明在其某個端口上,USBS備是否被安裝或拆除了,主機(jī)將所有的集線器排成隊(duì)列以取回其狀
16、態(tài)指示。在USBKJ備安裝后,主機(jī)通過設(shè)備控制通道激活該端口并以預(yù)設(shè)的地址值給USBS備。主機(jī)對每個設(shè)備指定唯一的USW址。并檢測這種新裝的USB®備是集線器還是功能部件。主機(jī)為US瞅備建立了控制通道,使用指定的USB的地址和零號端口。如果安裝的USB®備是集線器,并且USB®備連在其端口上,上述過程對每個USB設(shè)備的安裝都要做一遍。如果安裝的設(shè)備是功能部件,那么主機(jī)中關(guān)丁該設(shè)備的軟件將因設(shè)備的連接而被引發(fā)。2、USB®備的拆卸當(dāng)USB®備從集線器的端口拆除后,集線器關(guān)閉該端口,并且向主機(jī)報(bào)告該設(shè)備已不存在。USB的系統(tǒng)軟件將準(zhǔn)確進(jìn)行處理,如果
17、去除的USB設(shè)備上集線器,USB勺系統(tǒng)軟件將對集線器反連在其上的所有設(shè)備進(jìn)行處理。3、總線標(biāo)號總線標(biāo)號就是對連接在總線上的設(shè)備指定唯一的地址的一種動作,因?yàn)閁SB允許USES備在任何時刻從USB上安裝或拆卸,所以總線標(biāo)號是USB的系統(tǒng)軟件始終要作的動作,而且總線標(biāo)號還包括對拆除設(shè)備的檢測和處理。4、數(shù)據(jù)流種類數(shù)據(jù)和控制信號在主機(jī)和US瞅備間的交換存在兩種通道:單向和雙向。USB的數(shù)據(jù)傳送是在主機(jī)軟件和一個USB設(shè)備的指定端口之間。這種主機(jī)軟件和USB設(shè)備的端口間的聯(lián)系稱作通道??偟膩碚f,各通道之間的數(shù)據(jù)流動是相互獨(dú)立的。一個指定的US瞅備可有許多通道。例如,一個USB設(shè)備存在一個端口,可建立一
18、個向其它USBiS備的端口,發(fā)送數(shù)據(jù)的通道,它可建立一個從其它USB設(shè)備的端口接收數(shù)據(jù)的通道。USB勺結(jié)構(gòu)包含四種基本的數(shù)據(jù)傳輸類型:(1) 控制數(shù)據(jù)傳送:在設(shè)備連接時用來對設(shè)備進(jìn)行設(shè)置,還可對指定設(shè)備進(jìn)行控制,如通道控制;(2) 批量數(shù)據(jù)傳送:大批量產(chǎn)生并使用的數(shù)據(jù),在傳輸約束下,具有很廣的動態(tài)范圍;中斷數(shù)據(jù)的傳送:用來描述或匹配人的感覺或?qū)μ卣鞣磻?yīng)的回饋。(3) 同步數(shù)據(jù)的傳送:由預(yù)先確定的傳送延遲來填滿預(yù)定的US耶寬。對丁任何對定的設(shè)備進(jìn)行設(shè)置時一種通道只能支持上述一種方式的數(shù)據(jù)傳輸,數(shù)據(jù)流模式的更多細(xì)節(jié)在第四章中詳述。5、控制數(shù)據(jù)傳送當(dāng)USB設(shè)備初次安裝時,USB系統(tǒng)軟件使用控制數(shù)據(jù)對
19、設(shè)備進(jìn)行設(shè)置,設(shè)備驅(qū)動程序通過特定的方式使用控制數(shù)據(jù)來傳送,數(shù)據(jù)傳送是無損性的。6、批量數(shù)據(jù)傳送批量數(shù)據(jù)是由大量的數(shù)據(jù)組成,如使用打印機(jī)和掃描儀時,批量數(shù)據(jù)是連續(xù)的。在硬件級上可使用錯誤檢測可以保證可靠的數(shù)據(jù)傳輸,并在硬件級上引入了數(shù)據(jù)的多次傳送。此外根據(jù)其它一些總線動作,被大量數(shù)據(jù)占用的帶寬可以相應(yīng)的進(jìn)行改變。7、中斷數(shù)據(jù)傳輸中斷數(shù)據(jù)是少量的,且其數(shù)據(jù)延遲時間也是有限范圍的。這種數(shù)據(jù)可由設(shè)備在任何時刻發(fā)送,并且以不慢丁設(shè)備指定的速度在USB上傳送。中斷數(shù)據(jù)一般由事件通告,特征及座標(biāo)號組成,只有一個或幾個字節(jié)。匹配定點(diǎn)設(shè)備的座標(biāo)即為一例,雖然精確指定的傳輸率不必要,但USE®須對交互
20、數(shù)據(jù)提供一個反應(yīng)時間的最低界限。8、同步傳輸同步數(shù)據(jù)的建立、傳送和使用時是連續(xù)且實(shí)時的,同步數(shù)據(jù)是以穩(wěn)定的速率發(fā)送和接收實(shí)時的信息,同步數(shù)據(jù)要使接收者與發(fā)送者保持相同的時間安排,除了傳輸速率,同步數(shù)據(jù)對傳送延遲非常敏感。所以同步通道的帶寬的確定,必須滿足對相關(guān)功能部件的取樣特性。不可避免的信號延遲與每個端口的可用緩沖區(qū)數(shù)有關(guān)。一個典型的同步數(shù)據(jù)的例子是語音,如果數(shù)據(jù)流的傳送率不能保持,數(shù)據(jù)流是否丟失將取決丁緩沖區(qū)的大小和損壞的程度。即使數(shù)據(jù)在USB®件上以合適的速率傳送,軟件造成的傳送延遲將對那些如電話會議等實(shí)時系統(tǒng)的應(yīng)用造成損害。實(shí)時的傳送同步數(shù)據(jù)肯定會發(fā)生潛在瞬時的數(shù)據(jù)流丟失現(xiàn)象
21、,換句話說,即使許多硬件機(jī)制,如重傳的引入也不能避免錯誤的產(chǎn)生。實(shí)際應(yīng)用中,USB的數(shù)據(jù)出錯率小到幾乎可以忽略不計(jì)。從USB勺帶寬中,給USB同步數(shù)據(jù)流分配了專有的一部分以滿足所想得到的傳速率,USB還為同步數(shù)據(jù)的傳送設(shè)計(jì)了最少延遲時間。9、指定US耶寬USB勺帶寬分配給各個通道,當(dāng)一個通道建立后,USEgft分配給它一定的帶寬,USB設(shè)備需要提供一些數(shù)據(jù)緩沖區(qū)。若USB®供了更多帶寬,則需更多的緩沖區(qū)。USB勺體系要保證緩沖引導(dǎo)的硬件的延遲限定在幾毫秒內(nèi)。USB的帶寬容量可以容納多種不同的數(shù)據(jù)流,因此保證USB上可以連接大量設(shè)備,如可以容納從1B+D直到T1速率范圍的電信設(shè)備。同時
22、USB支持在同一時刻不同設(shè)備具有不同比特率,并具有一個動態(tài)變動的范圍。2.2 US吸備USB設(shè)備分為諸如集線器、分配器或文本設(shè)備等種類。集線器類指的是一種提供USES接點(diǎn)的設(shè)備,US瞅備需要提供自檢和屆性設(shè)置的信息,USB設(shè)備必須在任何時刻執(zhí)行與所定義的USB設(shè)備的狀態(tài)相一致的動態(tài)。2.3.1 設(shè)備特性當(dāng)設(shè)備被連接、編號后,該設(shè)備就擁有一個唯一的USBft址。設(shè)備就是通過該USB地址被操作的,每一個USBS備通過一個或多個通道與主機(jī)通訊。所有USBK備必須在零號端口上有一指定的通道,每個USBK備的USB空制通道將與之相連。通過此控制通道,所有的USB設(shè)備都列入一個共同的準(zhǔn)入機(jī)制,以獲得控制操
23、作的信息。在零號端口上,控制通道中的信息應(yīng)完整的描述USB®備、此類信息主要有以下幾類:標(biāo)準(zhǔn)信息:這類信息是對所有USBK備的共同性的定義,包括一些如廠商識別、設(shè)備種類、電源管理等的項(xiàng)目。設(shè)備設(shè)置、接口及終端的描述在此給出。(1) 類別信息:此類信息給出了不同USB的設(shè)備類的定義,主要反映其不同點(diǎn)。(2) USB廠商信息:USB®備的廠商可自由的提供各種有關(guān)信息,其格式不受該規(guī)范制約。此外,每個US瞅備均提供USB的控制和狀態(tài)信息。2.3.2 設(shè)備描述主要分為兩種設(shè)備類:集線器和功能部件。只有集線器可以提供更多的USB勺連接點(diǎn),功能部件為主機(jī)提供了具體的功能。USBS備可被
24、劃分三層:(1) 底層是傳送和接收數(shù)據(jù)包的總線接口;中間層處理總線接口與不同端點(diǎn)之間的數(shù)據(jù)路由端節(jié)點(diǎn)是數(shù)據(jù)的終結(jié)提供處或使用處,它可被看作數(shù)據(jù)源或數(shù)據(jù)接收端(Sink);最上層的功能由申行總線設(shè)備提供,比如鼠標(biāo),或ISDN接口。2.3.3 設(shè)備狀態(tài)USB®備有若干可能的狀態(tài),其中一些對丁USB主機(jī)(host)來說是外置的,而另外一些對USBS備來說是內(nèi)置的。(1) 連接狀態(tài)USE®備可被連接到USBg口上或從接口斷開。(2) 加電狀態(tài)USB®備的電源可來自外部電源,也可從USB接口的集線器而來。電源來自外部電源的USB®備被稱作自給電源式的(self-p
25、owered)。盡管自給電源式的USB®備可能在連接上USBS口以前可能已經(jīng)帶電,但它們直到連線上USB®口后才能被看作是加電狀態(tài)(Poweredstate)。而這時候VBUSB經(jīng)對設(shè)備產(chǎn)生作用了。一個設(shè)備可能有既支持自給電源的,同時也支持總線電源式的配置。有一些支持其中的一種,而另一些設(shè)備配置可能只有在自給電源下才能被使用設(shè)備對電源支持的能力是通過配置描述表(configurationdescriptor)來反映的。當(dāng)前的電源供給形式被作為設(shè)備狀態(tài)的一部分被反映出來。設(shè)備可在任何時候改變它們的供電來源,比如說:從自給式向總線式改變,如果一個配置同時支持兩種模式,那此狀態(tài)的
26、最大電源需求就是指設(shè)備在兩種模式下從VBU睥獲取電能的最大值。設(shè)備必須以此最大電源作為參照,而究竟處丁何狀態(tài)是不考慮的。如果有一配置僅支持一種電源模式,那么電源模式的改變會使得設(shè)備失去當(dāng)前配置與地址,返回加電狀態(tài)。如果一個設(shè)備是自給電源式,并且當(dāng)前配置需要大丁100mA電流,那么如果此設(shè)備轉(zhuǎn)到了總線電源式,它必須返回地址狀態(tài)(Addressstate)。自給電源式集線器使用VBUS來為集線控制器(Hubcontroller)提供電源,因而可以仍然保持配置狀態(tài)(Configuredstate),盡管自給電源停止提供電源。(3) 缺省狀態(tài)設(shè)備加電以后,在它從總線接收到復(fù)位信號之前不應(yīng)對總線傳輸發(fā)生
27、響應(yīng)。在接收到復(fù)位信號之后,設(shè)備才在缺省地址處變得可尋址。(4) 地址狀態(tài)所有的USB®備在加電復(fù)位以后都使用缺省地址。每一設(shè)備在連接或復(fù)位后由主機(jī)分配一個唯一的地址。當(dāng)USB®備處丁掛起狀態(tài)時,它保持這個地址不變。USB設(shè)備只對缺省通道(Pipe)請求發(fā)生響應(yīng),而不管設(shè)備是否已經(jīng)被分配地址或在使用缺省地址。(5) 中止?fàn)顟B(tài)為節(jié)省電源,USB設(shè)備在探測不到總線傳輸時自動進(jìn)入中止?fàn)顟B(tài)。當(dāng)中止時,USBS備保持本身的內(nèi)部狀態(tài),包括它的地址及配置。所有的設(shè)備在一段特定的時間內(nèi)探測不到總線活動時必須進(jìn)入中止態(tài)。不管設(shè)備是被分配了非缺省的地址或者是被配置了,已經(jīng)連接的設(shè)備必須在任何加
28、電的時刻隨時準(zhǔn)備中止??偩€活動的中止可能是因?yàn)橹鳈C(jī)本身進(jìn)入了中止?fàn)顟B(tài)。另外,USB設(shè)備必須在所連接的集線器端口失效時進(jìn)入中止態(tài)。這就是所指的選擇性中止(Selectivesuspend)。USB®備在總線活動來到時結(jié)束中止態(tài)。USB®備也可以遠(yuǎn)程喚醒的電流信號來請求主機(jī)退出中止態(tài)或選擇性中止態(tài)。具體設(shè)備具有的遠(yuǎn)程喚醒的能力是可選的,也就是說,如果一個設(shè)備有遠(yuǎn)程喚醒的能力,此設(shè)備必須能讓主機(jī)控制此能力的有效與否。當(dāng)設(shè)備復(fù)位時,遠(yuǎn)程喚醒能力必須被禁止。2.3 BusEnumeration總線標(biāo)號當(dāng)USB®備接上或從USBK備移開的時候,主機(jī)啟動一個被稱作總線標(biāo)識(bu
29、senumeration)的進(jìn)程,來標(biāo)識并管理設(shè)備狀態(tài)的改變,當(dāng)USBiS備接上一個加電端口時,系統(tǒng)當(dāng)采取以下操作:(1) USB®備所連的集線器通過其通向主機(jī)的狀態(tài)改變通道向主機(jī),匯報(bào)本USB設(shè)備已連接上。此時,USBS備處丁加電狀態(tài),它所連接的端口是無效的。(2) 主機(jī)通過尋問集線器決定此次狀態(tài)改變的確切含義。(3) 主機(jī)一旦得知新設(shè)備已連上以后,它至少等待100ms以使得插入操作的完成以及設(shè)備電源穩(wěn)定工作。然后主機(jī)發(fā)出端口使能及復(fù)位命令給那個端口。(4) 集線器將發(fā)向端口的復(fù)位信號持續(xù)10ms當(dāng)復(fù)位信號撤消后,端口已經(jīng)有效了。這時USB設(shè)備處丁缺省狀態(tài),并且可從VBUS汲取小丁
30、100mA的電能,所有設(shè)備寄存器及狀態(tài)已經(jīng)被復(fù)位,設(shè)備可對缺省地址產(chǎn)生響應(yīng)。(5) 主機(jī)給設(shè)備分配一個唯一的地址,設(shè)備轉(zhuǎn)向編址狀態(tài)。(Addressstate)。在US股備接受設(shè)備地址之前,它的缺省控制通道(DefaultControlPipe)在缺省地址處自然是可尋址的,主機(jī)通過讀取設(shè)備描述表,判決設(shè)備缺省通道的實(shí)際凈數(shù)據(jù)負(fù)載。(6) 主機(jī)從設(shè)備讀取配置信息要從配置0讀到配置n-1,其中n為配置個數(shù),此操作須花費(fèi)幾個毫秒。(7) 基丁從設(shè)備取來的配置信息及設(shè)備如何被使用的信息,主機(jī)給設(shè)備一個配置值,此刻,設(shè)備就處丁配置狀態(tài)(Configuredstate)并此配置有關(guān)的所有端節(jié)點(diǎn),都按照配置
31、各就各位,USE備現(xiàn)在可以從VBUS!到描述中所要求的電量了。從設(shè)備的角度來講,它已經(jīng)準(zhǔn)備就緒了。當(dāng)UBS設(shè)備被取走時,集線器同樣會通知主機(jī),斷開一個設(shè)備連接會使得設(shè)備所連接的端口無效,一收到斷開通知后,主機(jī)就會更新的拓?fù)湫畔ⅰ?.4 通用USBS備操作1、動態(tài)插接與拔開USB設(shè)備必須在任意時刻允許被插接與拔開。提供連接點(diǎn)或端口的集線器應(yīng)當(dāng)負(fù)責(zé)匯報(bào)端口的狀態(tài)改變情況。當(dāng)主機(jī)探測到連接操作后,會使得所連的集線器端口生效,設(shè)備也會因此而復(fù)位,一個被復(fù)位了的USB設(shè)備有如下特性:(1) 對缺省USB地址發(fā)生響應(yīng);沒有被配置;初始狀態(tài)不是掛起。當(dāng)設(shè)備從一個集線器端口移去時,集線器會使得原來連接的端口失
32、效,并且通知主機(jī)設(shè)備已移去。2、地址分配當(dāng)USB®備連接以后,由主機(jī)負(fù)責(zé)給此設(shè)備分配一個唯一的地址,這個操作是在設(shè)備復(fù)位及端口使能操作以后。3、配置USB設(shè)備在正常被使用以前,必須被配置,由主機(jī)負(fù)責(zé)配置設(shè)備。主機(jī)一般會從USB®備獲取配置信息后再準(zhǔn)定此設(shè)備有哪些功能。作為配置操作的一部分,主機(jī)會設(shè)置設(shè)備的配置值,并且,如果必要的話會選擇合適的接口的備選設(shè)置。只須一個簡單配置,一個設(shè)備可能支持多重接口。一個接口是一組端結(jié)點(diǎn)集合,它們代表了設(shè)備向主機(jī)提供的單一的功能或特性,用來與這組相關(guān)端結(jié)點(diǎn)通信的協(xié)議以及接口內(nèi)各端結(jié)點(diǎn)的目的可以作為一個設(shè)備類的一部分或者由廠商制定具體定義。另
33、外,一個配置中的接口可能有備選設(shè)置。這些備選設(shè)置會重定義相關(guān)端結(jié)點(diǎn)的數(shù)目或特性。如果是這樣的話,設(shè)備必須支持GetInterface(接口請求)與SetInterface(接口設(shè)置)請求,來匯報(bào)及選擇指定的接口的設(shè)備選設(shè)置。在每個設(shè)備配置下,每個接口描述表可能包括用來標(biāo)識接口的及備選設(shè)置的域,接口被從0N-1編號。n為配置所支持的能同時使用的接口數(shù)目,類似的設(shè)置的編號也從0開始。當(dāng)設(shè)備初始化配置后,缺省設(shè)置是備選設(shè)置0。了支持通用的設(shè)備驅(qū)動程序管理一組相關(guān)的BUS設(shè)備,設(shè)備與接口描述表中包含了類(Class),子類(Subclass),及協(xié)議(Protocol)域。這些域用來標(biāo)識一個設(shè)備的功能
34、及用丁通信的協(xié)議。一個類值被分配給一組按照特性劃分成US就說明一部分的設(shè)備。一個類的設(shè)備可進(jìn)一步劃分成子類,并且在一個類或子類中,一個協(xié)議代值可定義主機(jī)軟件是怎樣與設(shè)備通信的。4、數(shù)據(jù)傳送數(shù)據(jù)可能以四種方式在USB設(shè)備端結(jié)點(diǎn)與主機(jī)之間傳送。在不同設(shè)置下,一個終端結(jié)點(diǎn)可能被用丁不同的傳輸方式,但一旦設(shè)置選定,傳送方式就選定了。5、復(fù)位/繼續(xù)及恢復(fù)時間當(dāng)一個端口被復(fù)位或從中止態(tài)繼續(xù)的時候,USB系統(tǒng)軟件應(yīng)當(dāng)?shù)却粋€10ms的恢復(fù)時間才能確保端口對數(shù)據(jù)傳輸產(chǎn)生響應(yīng)。一旦恢復(fù)時間段結(jié)束(從reset信號結(jié)束,或resume信號結(jié)尾的EOP結(jié)束開始計(jì)時)設(shè)備必須在任意時刻都能對數(shù)據(jù)傳輸作出響應(yīng)。6、設(shè)置
35、地址的處理在reset/resume恢復(fù)時間段以后,如果設(shè)備收到SetAddress()請求,設(shè)備必須能在50ms內(nèi)完成請求的處理,并完成狀態(tài)的轉(zhuǎn)換,在SetAddress()的請求下,當(dāng)設(shè)備發(fā)出0長度的狀態(tài)數(shù)據(jù)包或設(shè)備收到狀態(tài)數(shù)據(jù)包的響應(yīng)信號ACKM表明狀態(tài)轉(zhuǎn)換結(jié)束了。在狀態(tài)轉(zhuǎn)換結(jié)束后,設(shè)備有2ms的SetAddress()恢復(fù)時間。在這段時間結(jié)束以后,設(shè)備必須能在新地址處接受Setup數(shù)據(jù)包,并且,必須確保此時設(shè)備不對舊地址的信號產(chǎn)生響應(yīng)。7、請求錯誤如果一設(shè)備收到一個請求,它或是在設(shè)備中無定義,或是不適用丁當(dāng)前設(shè)置,或是數(shù)值不對,這時就會產(chǎn)生一個請求錯誤。設(shè)備在下一個數(shù)據(jù)傳輸階段或狀態(tài)交
36、換階段(Statusstage)返回一個表明錯誤的STALLPID信號,一般在下一個數(shù)據(jù)傳輸返回更好,這樣可減少不必要的總線活動。2.5 USB機(jī)USB的互連支持?jǐn)?shù)據(jù)在USB主機(jī)與USBS備之間的流動。為了簡化主機(jī)上的客戶軟件(Softwareclient)與設(shè)備的功能部件(function)之間的通信而必須的主機(jī)接口(hostinterface)。只要USBES備并不感覺到主機(jī)行為的改變,USB主機(jī)完全可以提供一個不同的軟件系統(tǒng)實(shí)現(xiàn)方法。圖2.2展示了USB!信模型之間基本的信息流與互連關(guān)系:圖2.2通信模型層次關(guān)系圖由圖2.2可見,主機(jī)與設(shè)備都被劃分成不同的層次。主機(jī)上垂直的箭頭是實(shí)際的信
37、息流。設(shè)備上對應(yīng)的接口是基丁不同實(shí)現(xiàn)的。在主機(jī)與設(shè)備之間的所有通信最終都是通過USB的電纜進(jìn)行,然而,在上層的水平層之間存在邏輯的主機(jī)一設(shè)備信息流。主機(jī)上的客戶軟件和設(shè)備功能部件之間的通信是基丁實(shí)際的應(yīng)用需求及設(shè)備所能提供的能力??蛻糗浖c功能部件之間的透明通信的要求,決定主機(jī)和設(shè)備下層部件的功能以及它們的界面(interface)。主機(jī)在整個USB系統(tǒng)中是唯一的,它包括USB總線接口、USB系統(tǒng)(USBSystem)、US昭戶(Client)。其中,USB總線接口處理電氣及協(xié)議層的互連。從互連的角度看,USB設(shè)備和USB主機(jī)都提供類似的USB總線接口,如申行接口引擎(SerialInterf
38、aceEngineSIE)。由丁主機(jī)在USB系統(tǒng)中的特殊性,US"機(jī)上的總線接口還必須具備主機(jī)控制器的功能(HostController),主機(jī)控制器具有一個內(nèi)集成的集線器(根集線器)提供與USB電纜的連接。USB系統(tǒng)(USBSystem使用主機(jī)控制器來管理主機(jī)與USB®備的數(shù)據(jù)傳輸。USB系統(tǒng)與主機(jī)控制器之間的界面基丁主機(jī)控制器的硬件特性。USB系統(tǒng)層相對丁主機(jī)控制器而言,處理的是以客戶觀點(diǎn)見到的數(shù)據(jù)傳輸及客戶與設(shè)備的交互。這包括附加的USB信息,比如協(xié)議頭(ProtocolWrappers)。US睦統(tǒng)還必須管理USB勺系統(tǒng)資源,以使得客戶的訪問成為可能。USB系統(tǒng)有三個
39、主要組成部份:主機(jī)控制器驅(qū)動(HostControllerDriver)、US圖區(qū)動(USBDriver)和主機(jī)軟件(hostsoftware)。主機(jī)控制器驅(qū)動的存在,方便地將各種不同的主機(jī)控制器實(shí)現(xiàn)映射到USB系統(tǒng),客戶可以不必知道設(shè)備到底接在哪個主機(jī)控制器上就能同設(shè)備進(jìn)行通信。US田區(qū)動提供了基本的面向客戶的主機(jī)界面。在HCWUSB之間的接口稱為主機(jī)控制器驅(qū)動接口(HostControllerDriverInterfaceHCDI)。這層接口不能被客戶直接訪問,所以也不是由USBM體來完成的。一個典型的HCDI是由支撐各種不同主機(jī)控制器的操作系統(tǒng)來定義的。USB眺供I/O請求包(I/ORe
40、questPackets)形式的數(shù)據(jù)傳輸,以某一特定通道來傳輸數(shù)據(jù)。另外,USB客它的客戶提供一個容易被支配及配置的抽象的設(shè)備。作為這種抽象的一部份,USBtDS有標(biāo)準(zhǔn)通道對設(shè)備進(jìn)行一些標(biāo)準(zhǔn)的控制。這標(biāo)準(zhǔn)通道實(shí)現(xiàn)了USBDDf抽象設(shè)備之間的邏輯通信。在有些操作系統(tǒng)中,提供了額外的非USB系統(tǒng)軟件以支持設(shè)備的配置及設(shè)備驅(qū)動程序的加載。在這樣的操作系統(tǒng)中,設(shè)備驅(qū)動程序應(yīng)使用提供的主機(jī)軟件接口而不是直接訪問USBDI客戶層描述的是直接與USB設(shè)備進(jìn)行交互所需要的軟件包。當(dāng)所有的設(shè)備都已連上系統(tǒng)時,這些客戶就可以直接通設(shè)備進(jìn)行通信。一個客戶不能直接訪問設(shè)備的硬件。主機(jī)可提供如下的功能:(1) 檢測US
41、B®備的連接與斷開;管理主機(jī)與設(shè)備之間的標(biāo)準(zhǔn)控制流;管理主機(jī)與設(shè)備之間的數(shù)據(jù)流;收集狀態(tài)及一些活動的統(tǒng)計(jì)數(shù)字??刂浦鳈C(jī)控制器與USB設(shè)備的電氣接口,包括提供有限的能源。所有的集線器都通過狀態(tài)改變通道報(bào)告它的狀態(tài)的改變,其中包括設(shè)備的連上與斷開等。USBD勺一類特殊客戶即:集線器驅(qū)動器擁有這些狀態(tài)改變通道,接收這些狀態(tài)的改變。對丁像設(shè)備連結(jié)這種狀態(tài)改變,集線器驅(qū)動器將加載設(shè)備的驅(qū)動程序。在有些系統(tǒng)中,這種集線器驅(qū)動程序是操作系統(tǒng)提供的主機(jī)軟件的一部份,它用來管理設(shè)備。2.6 US盼組標(biāo)識USB的分組標(biāo)識(PID)用來標(biāo)識操作的屆性,PID指出了數(shù)據(jù)分組的類型,并可由此推斷出分組格式和改
42、組所用的校驗(yàn)方法。USB的通信結(jié)構(gòu)一般是以PID開始的,后面緊跟著數(shù)據(jù)或控制信息,最后是CRCK驗(yàn)。PID是由一個四位的分組類型碼加上該四位類型碼的反碼組成,其格式如圖2.3所示:2.7 圖2.3PID分組碼格式USB的數(shù)據(jù)流包格式USB勺數(shù)據(jù)流以包的形式進(jìn)行傳輸,根據(jù)PID的不同,將包分為四種,令牌包(TokenPackage),數(shù)據(jù)包(DataPackage),握手包(HandshakePackage),和特殊類型包(SpecialPackage)。2.8.1 令牌包如圖2.4所示為令牌包的格式。它由PID字段,ADDRAddress地址)字段,ENDP(Endpoint,端點(diǎn))字段和CR
43、C(cyclicRedundancyCheck,循環(huán)冗余校驗(yàn)),字段構(gòu)成。PID包指定了包是輸入輸出還是建立類型,對丁輸出和建立事務(wù),地址和端點(diǎn)字段唯一確定了哪個設(shè)備和端點(diǎn)接受數(shù)據(jù)包。對丁輸入事務(wù),這些字段唯一確定了哪個端點(diǎn)應(yīng)該傳輸數(shù)據(jù)包。只有主機(jī)能發(fā)出標(biāo)記包。輸入PID定義了從外設(shè)到主機(jī)的數(shù)據(jù)時務(wù)。格式如圖2.4所示:2.8.2 圖2.4令牌包格式數(shù)據(jù)包數(shù)據(jù)包由PID,大丁或等丁0個字節(jié)的數(shù)據(jù)的數(shù)據(jù)區(qū)和CR物成。有兩種類型的數(shù)據(jù)包,其中PID分別為DATA0ODATA1這兩種數(shù)據(jù)包是為了支持?jǐn)?shù)據(jù)切換同步(DATAToggleSynchronization)而定義的。格式如圖2.5所示:2.8
44、.3 圖2.5數(shù)據(jù)包格式握手包握手包僅由PID構(gòu)成。握手包用來報(bào)告數(shù)據(jù)事務(wù)的狀態(tài),能表示數(shù)據(jù)成功接受,命令的接受或拒絕,流控制和終止條件。如圖2.6所示:2.8.4 圖2.6握手包格式特殊包這個特殊前導(dǎo)(SpecialPreamble)封包擁有獨(dú)自的PID類型名稱PRE僅用丁主機(jī)想要從高速傳輸變成低速傳輸時,主機(jī)在想要送出低速的封包與低速設(shè)備通信之前,先送出的PRt&,其格式如圖2.7所示:2.8 圖2.7握手包格式本章小結(jié)在本章中,重點(diǎn)研究與本文內(nèi)容相關(guān)的USB1.O議以及USBS信傳誦數(shù)據(jù)包內(nèi)容,包括拓?fù)浣Y(jié)構(gòu)、USB!口特性、編碼方式與傳輸出類型、數(shù)據(jù)域及數(shù)據(jù)封包格式以及時數(shù)據(jù)格式
45、等內(nèi)容。它們是開發(fā)US殷備,完成與上位機(jī)軟件通信的必要基礎(chǔ)。3.1 第3章US敬備驅(qū)動程序的開發(fā)USES區(qū)動程序簡介在Window臥境下,不允許用戶在應(yīng)用程序中直接訪問硬件設(shè)備,應(yīng)用程序必須通過一個中間橋梁才能訪問硬件設(shè)備,這個中間橋梁就是設(shè)備驅(qū)動程序。驅(qū)動程序是一個軟件,是連接應(yīng)用程序、硬件以及操作系統(tǒng)的橋梁,裝入后成為操作系統(tǒng)內(nèi)核的一部分4。USE備驅(qū)動程序?yàn)閃D糠型,WDIMI入了功能設(shè)備對象FDCJP物理設(shè)備對象PDOW個新類來描述對象,一個真實(shí)硬件只能有一個PDC但可以有多個FDQ在驅(qū)動程序中直接操作的是硬件的PDCftFDC。WD健通過設(shè)備的全局唯一標(biāo)識符GUID來識別硬件設(shè)備。選
46、取合適的開發(fā)工具后就可以根據(jù)實(shí)際情況編寫USB設(shè)備驅(qū)動程序,然后還要編寫和驅(qū)動程序通信的應(yīng)用程序。US般備與PC機(jī)之間的通信,除了讀寫數(shù)據(jù)外還有很多種類型,但讀寫數(shù)據(jù)是最基本的。所以把主要研究問題放在對USB接口的讀與寫方面。在這里應(yīng)用DriverStudio軟件來編寫驅(qū)動程序,DriverStudio把那些每個驅(qū)動程序都需要的代碼都封裝成類庫。庫代碼自動地處理例行的操作,這極大地簡小了任務(wù)的復(fù)雜度。而且,C+嘶譯器提供了ANSIC所不具備的優(yōu)點(diǎn):包括改進(jìn)的類型安全檢查,內(nèi)連函數(shù)優(yōu)化,以及更好的代碼組織。DriverWizardDriverWorks的代碼向?qū)?,與微軟的VisualC+R密的集
47、成。超過1500行的驅(qū)動程序源代碼框架只需幾次鼠標(biāo)點(diǎn)擊就可完成。這些代碼還包含了詳細(xì)的注釋。另外,DriverWizard還能生成專為特殊設(shè)備定制的代碼,比如:USE®備,PCI設(shè)備,即插即用設(shè)備,ISA設(shè)備,等等。3.2 USES區(qū)動程序的開發(fā)過程卜面為用DriverStudio開發(fā)一個USES區(qū)動程序的過程。寫這個驅(qū)動程序只要用到DriverWorks6首先打開VC+6.0軟件在菜單中選擇DriverStudio選項(xiàng)中的DriverWorks則會出現(xiàn)如圖的對話框(圖3.1)。圖3.1建立新工程選擇其中的StartaNewDriverProject選項(xiàng),創(chuàng)建一個新工程。(圖3.2)
48、圖3.2設(shè)置工程名稱及保存位置在這里,將這個工程稱為:ForUsb,所在的目錄為我的文檔畢業(yè)設(shè)計(jì)driver。然后單擊按鈕“Next”。圖3.3選擇工程類型在(圖3.3)這個對話框中,需要選擇驅(qū)動程序的類型。由丁USB®備驅(qū)動程序是WD啖型的,所以選擇第一項(xiàng),并在下邊選擇DriverworksC+語言框架點(diǎn)擊按鈕“Next”。圖3.4選擇驅(qū)動程序的類型圖3.4對話框?yàn)檫x擇類型,由丁的USBS備驅(qū)動是要控制的硬件設(shè)備的,所以我們選擇第一項(xiàng),單擊“Next”。圖3.5設(shè)置設(shè)備的總線在圖3.5的對話框中,選擇的驅(qū)動程序所操作的總線類型。這里選擇USB在USBVendorID和USBProd
49、uctID中填入U(xiǎn)SB®備的VID和PID。USBS備的VID和PID分別是16進(jìn)制的0471和0677。點(diǎn)擊“Next”。點(diǎn)擊對話框中的,可以選擇電腦中連接的USB®備。在這里可以找到要識別的USB實(shí)驗(yàn)板,可以點(diǎn)擊select來選擇這個硬件。在接下來的對話框中,需要加入Endpoint1和Endpoint2的定義。由丁在USB中規(guī)定Endpoint0是必須存在的,所以不需要對Endpoint0進(jìn)行定義.點(diǎn)“Add'按鈕,彈出一個的對話框,設(shè)置好如圖所示。其中,按照USB勺規(guī)定,對丁端點(diǎn),它的地址是1;按照前面說明的設(shè)備的特點(diǎn),Endpointl的最大的包大小為16
50、字節(jié),因此在“MaxTranserSize”中填入16;EndpointName可以通過“SuggestName”得到。按照這些原則,繼續(xù)設(shè)置其他的配置,接下來繼續(xù)按“Next”按鈕。圖3.6添加輸入與輸出信息圖3.7設(shè)置接口信息在對話框中,因?yàn)椴恍枰o其他的驅(qū)動程序提供接口,也不需要提供Flush功能,所以不需要任何修改,直接按“Next”按鈕。圖3.8設(shè)置對其他設(shè)備的接口如圖3.9所示的對話框中,是給驅(qū)動程序增加一些IOCTL接口。如利用IOCTL來控制US般備的LE由、數(shù)碼管顯示等功能的接口。然后點(diǎn)擊“Next”按鈕。圖3.9設(shè)置驅(qū)動的接口在如圖的對話框中,不需要創(chuàng)建任何注冊表項(xiàng),所以直
51、接按“Next”按鈕。圖3.10創(chuàng)建注冊表選項(xiàng)接下來為電源設(shè)置,由丁US或驗(yàn)板不能自行供電,只能靠USB專輸線供電。所以選擇第1項(xiàng),按“Next”按鈕。圖3.11電源設(shè)置下圖為設(shè)置本驅(qū)動程序的提供商,廠商的名字及設(shè)備描述,服務(wù)描述等。按“Next”按鈕圖3.12驅(qū)動程序的各個信息附加選項(xiàng),直接點(diǎn)“Next”按鈕。圖3.13附加選項(xiàng)圖3.14確認(rèn)框圖最后得到確認(rèn)框圖,確認(rèn)無誤后選擇“Finish”完成了USB®備的驅(qū)動程序的初步設(shè)置。3.3 本章小結(jié)DriverStudio軟件可以快速地產(chǎn)生一個驅(qū)動程序。即使是寫一個比較復(fù)雜的USBS區(qū)動程序,只要專注丁自己的特定應(yīng)用就可以了。所以Wi
52、ndow臥境下開發(fā)USBZ用程序可以歸結(jié)如下:在應(yīng)用程序可以開始與HID交換數(shù)據(jù)前,應(yīng)用程序必須先識別該設(shè)備并且讀取它的報(bào)表信息,這些動作需要調(diào)用一堆API函數(shù)。應(yīng)用程序首先需要尋找連接到系統(tǒng)上的是哪些HID設(shè)備,然后檢驗(yàn)每個信息直到找到所需的屆性。如果是客戶化的設(shè)備,應(yīng)用程序可以尋找特定的廠商與產(chǎn)品ID?;蛘邞?yīng)用程序可以尋找特定類型的設(shè)備。第4章上位機(jī)界面4.1 上位機(jī)顯示界面為了簡單適用,在創(chuàng)建工程時采用基丁對話框的類型。首先打開VisualC+敬件,選擇新建,在彈出的對話框中選擇工程中的MFCAppWizard(exe)工程名為MFCApp找到放置文件的位置后點(diǎn)擊確定按鈕,進(jìn)入MFCAp
53、pWizard在MFCAppWizard應(yīng)用程序向?qū)У?步中,選擇程序類型為對話框類型,之后單擊確定按鈕,彈出新建工程信息窗口,如果檢查完全正確后,單擊確定按鈕生成應(yīng)用程序所需的全部文件。通過上述操作邊生成了基丁對話框的工程MFCApp。首先在對話框中把原來的項(xiàng)目都刪除,右鍵單擊對話框選擇屆性,把標(biāo)題改為USB®驗(yàn)板。在控件欄中,選擇相應(yīng)控件添加到對話框中,對其進(jìn)行編輯代碼,就可以通過對控件的操作來完成對程序的調(diào)用。下面分別介紹各個控件完成的功能,并對控件內(nèi)的代碼進(jìn)行描述與分析。LED流水燈圖4.1LED流水燈1、預(yù)計(jì)完成的功能當(dāng)用鼠標(biāo)點(diǎn)擊LED框內(nèi)的相應(yīng)按鈕時,在USB®
54、驗(yàn)板相應(yīng)位置上的流水燈會有亮滅的交替變化。如:當(dāng)所有的流水燈都為滅的狀態(tài)時,點(diǎn)擊LED0按鈕,流水燈1會變亮,再點(diǎn)擊此按鈕,燈1會變滅。點(diǎn)擊其他按鈕,相應(yīng)的流水燈會有亮與滅的變化。界面顯示如圖4.1。2、完成功能編寫的程序voidCMFCAppDlg:OnLed0()if(led&0x01)led&=0xfe;/led=led&0xfeelseled|=0x01;OnLed();3、完成功能的思想在程序中事先定義了全局字符型變量led,在控件選項(xiàng)中選擇按鈕控件,首先添加8個按鈕控件到到對話框中,把每個控件的屆性名改為規(guī)定的LED0到LED7每個按鈕控件分別控制8位流水燈
55、的亮和滅。然后打開ClassWizard在CMFCAPPDlt中,由丁按鍵的單擊屆丁通告消息,在objectIDs中選擇按鈕的ID號IDC_BUTTON所以選擇BN_CLICKED增加函數(shù)在彈出的對話框中添加OnLedQ編輯代碼。在括號中,添加程序來完成對相應(yīng)按鈕的操作。其他按鈕的內(nèi)容同以上對按鈕LED0的操作。例如,當(dāng)單擊LED0按鈕時,就調(diào)用OnLed0個個函數(shù)的內(nèi)容,這個函數(shù)的功能就是要改變當(dāng)前燈的狀態(tài)。led&0x01的意思是led的值與16進(jìn)制數(shù)0x01按位求與,就是取最后一位的值,這里用到了if語句,如果為1就執(zhí)行l(wèi)ed&=0xfe,為0就執(zhí)行l(wèi)ed|=0x01。l
56、ed&=0xfe的與led=led&0xfe是相等的,意思是把原來led中的值與0xFE按位求與之后再賦給變量led,同理led|=0x01的意思就是把led的值與0x01按位取或之后再賦給led8。所以,當(dāng)led最后一位原來為1,執(zhí)行過這個函數(shù)后最后一位變?yōu)?,當(dāng)led最后一位為0時執(zhí)行過這個函數(shù)最后一位變?yōu)榱?。之后執(zhí)行OnLed()這個函數(shù),OnLed()函數(shù)即為控制USB實(shí)驗(yàn)板上LED流水燈的語句。OnLed0()只對led最后一位進(jìn)行操作,OnLed1()到OnLed7()對其它7位進(jìn)行相應(yīng)的轉(zhuǎn)換。voidCMFCAppDlg:OnLed()charbuff16;ch
57、arbufOutput16;ULONGnOutput;buff0=0x01;buff1=led;if(!DeviceIoControl(hDevice,FORUSB_IOCTL_Write,buff,16,bufOutput,0,&nOutput,NULL)m_Mes="ERROR:DeviceIoControlreturns."UpdateData(FALSE);在OnLed()函數(shù)中,首先創(chuàng)建了2個16位的字符數(shù)組buff16和bufOutput16,前邊的為向USB僉板發(fā)送的數(shù)據(jù),后邊的為從USBS備接受的信息。還有1個無符號的長整型變量nOutput,把向?qū)?/p>
58、驗(yàn)板發(fā)送數(shù)據(jù)的第一位表示為元件的名稱,從第2位開始為具體的傳輸內(nèi)容,控制相應(yīng)的元件完成其功能。這里16位字符數(shù)組的第1位為1,即表示控制LE酬水燈,當(dāng)US或驗(yàn)板接受到這樣的16位字符數(shù)組的時候先檢查第1位的數(shù)字,就知道是要連接到相應(yīng)的設(shè)備來完成響應(yīng)的功能,第2位為變量led即為控制流水燈的程序。來完成流水燈相應(yīng)的功能。否則如果連接不成功,則在狀態(tài)顯示編輯框中顯示ERROR:DeviceloControlreturns。矩陣鍵盤顯示圖4.2矩陣鍵盤1、預(yù)計(jì)完成的功能用鼠標(biāo)點(diǎn)擊矩陣鍵盤中的按鈕,把16個矩陣鍵盤分別定義為16個數(shù),在US或驗(yàn)板數(shù)碼管上會有相應(yīng)的十六進(jìn)制數(shù)顯示。如點(diǎn)SW0按鈕時數(shù)碼管會顯示0,點(diǎn)sw15按鈕數(shù)碼管會顯示F。界面顯示如圖4.2。2、完成功能需要編寫的程序voidCMFCAppDlg:Onsw0()sw=0;Onsw();3、完成功能的思想首先創(chuàng)建16個按鈕控件,分別把各個按鈕的屆性標(biāo)題標(biāo)注為sw0到sw15,然后打開ClassWizard在CMFCAPPD瓚中,按鈕的單擊屆丁通告消息,所以選擇sw0的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2187-2025半徑樣板校準(zhǔn)規(guī)范
- 2025至2030年中國丸鐵輸送機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 統(tǒng)編版三年級語文下冊第八單元達(dá)標(biāo)測試卷(含答案)
- 2025年《義務(wù)教育小學(xué)體育課程標(biāo)準(zhǔn)測試卷2022版》測試題庫及答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)題庫附答案(典型題)
- 2019-2025年消防設(shè)施操作員之消防設(shè)備中級技能過關(guān)檢測試卷A卷附答案
- 2024年遼寧省中考道德與法治試卷(含答案)
- 高等教育自學(xué)考試《00102世界市場行情》模擬試卷一
- 2024年廣東省公務(wù)員《申論(縣鎮(zhèn)級)》試題真題及答案
- 2025年法制宣傳日普法知識競賽題庫及答案(三)
- 配電室高低壓運(yùn)行記錄表
- 美術(shù)課件:審美自律(中國)
- 中國地理4-河流與湖泊-于
- 端子壓接標(biāo)準(zhǔn)
- 中國對蝦養(yǎng)殖技術(shù)操作規(guī)范.docx
- 巡檢記錄表模板
- comsol學(xué)生操作手冊4函數(shù)定義用戶指南
- 出口退稅手冊核銷操作步驟
- 潘通色卡TCX棉布色彩電子版查詢部分
- 第三章社科信息檢索原理與技術(shù)PPT課件
- 《當(dāng)代廣播電視概論》試題A卷及答案
評論
0/150
提交評論