• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            USB開發(fā)基礎(chǔ)--USB命令(請(qǐng)求)和USB描述符

            一、USB命令

              在USB規(guī)范里,對(duì)命令一詞提供的單詞為“Request”,但這里為了更好的理解主機(jī)與設(shè)備之間的主從關(guān)系,將它定義成“命令”。

              所有的USB設(shè)備都要求對(duì)主機(jī)發(fā)給自己的控制命令作出響應(yīng),USB規(guī)范定義了11個(gè)標(biāo)準(zhǔn)命令,它們分別是:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、Set_Address、Set_Configuration、Set_Descriptor、Set_Interface、Set_Feature、Synch_Frame。所有USB設(shè)備都必須支持這些命令(個(gè)別命令除外,如Set_Descriptor、Synch_Frame)。

              不同的命令雖然有不同的數(shù)據(jù)和使用目的,但所有的USB命令結(jié)構(gòu)是一樣的。下表所示為USB命令的結(jié)構(gòu): 

            表1、USB命令的結(jié)構(gòu)
            偏移量  長度(字節(jié)) 描述
            0 bmRequestType 1 位圖 請(qǐng)求特征:
            D7:傳輸方向 
            0=主機(jī)至設(shè)備 
            1=設(shè)備至主機(jī) 
            D6..5:種類 
            0=標(biāo)準(zhǔn) 
            1=類 
            2=廠商 
            3=保留 
            D4..0:接受者 
            0=設(shè)備 
            1=接口 
            2=端點(diǎn) 
            3=其他 
            4..31 保留
            1 bRequest 1 命令類型編碼值(見表3)
            2 wValue 2 根據(jù)不同的命令,含義也不同
            4 wIndex 2 索引或偏移 根據(jù)不同的命令,含義也不同,主要用于傳送索引或偏 移
            6 wLength 2   如有數(shù)據(jù)傳送階段,此為數(shù)據(jù)字節(jié)數(shù)。

             

            下表列出了USB的11種標(biāo)準(zhǔn)命令

             

            表2、USB的11種標(biāo)準(zhǔn)命令
            命令

            bmRequestType

            bRequest

            wValue

            wIndex

            wLength

            Data

            Clear_Feature

            00000000B
            00000001B
            00000010B

            CLEAR_FEATURE

            特性選擇符

            零 
            接口號(hào) 
            端點(diǎn)號(hào)

            Get_Configuration

            10000000B

            GET_CONFIGURATION

            配置值

            Get_Descriptor

            10000000B

            GET_DESCRIPTOR

            描述表種類(高字節(jié),見表5)和索引(低字節(jié))

            零或語言標(biāo)志

            描述表長

            描述表

            Get_Interface

            10000001B

            GET_INTERFACE

            接口號(hào)

            可選設(shè)置

            Get_Status

            10000000B
            10000001B
            10000010B

            GET_STATUS

            零(返回設(shè)備狀態(tài))
            接口號(hào)(對(duì)像時(shí)接口時(shí))
            端點(diǎn)號(hào)(對(duì)象是端點(diǎn)時(shí))

            設(shè)備,
            接口 ,或 
            端點(diǎn)狀態(tài)

            Set_Address

            00000000B

            SET_ADDRESS

            設(shè)備地址

            Set_Configuration

            00000000B

            SET_CONFIGURATION

            配置值(高字節(jié)為0,低字節(jié)表示要設(shè)置的配置值)

            Set_Descriptor

            00000000B

            SET_DESCRIPTOR

            描述表種類(高字節(jié),見表5)和索引(低字節(jié))

            零或語言標(biāo)志

            描述表長

            描述表

            Set_Feature

            00000000B
            00000001B
            00000010B

            SET_FEATURE

            特性選擇符(1表示設(shè)備,0表示端點(diǎn))

            零 
            接口號(hào) 
            端點(diǎn)號(hào)

            Set_Interface

            00000001B

            SET_INTERFACE

            可選設(shè)置

            接口號(hào)

            Synch_Frame

            100000010B

            SYNCH_FRAME

            端點(diǎn)號(hào)

            幀號(hào)

             

            其中bRequest為命令編碼值,含意見表3:

             

            表3、USB標(biāo)準(zhǔn)命令的編碼值

            bRequest

            Value

            GET_STATUS

            0

            CLEAR_FEATURE

            1

            為將來保留

            2

            SET_FEATURE

            3

            為將來保留

            4

            SET_ADDRESS

            5

            GET_DESCRIPTOR

            6

            SET_DESCRIPTOR

            7

            GET_CONFIGURATION

            8

            SET_CONFIGURATION

            9

            GET_INTERFACE

            10

            SET_INTERFACE

            11

            SYNCH_FRAME

            12

             

             

            二、USB描述符

              USB協(xié)議為USB設(shè)備定義了一套描述設(shè)備功能和屬性的有固定結(jié)構(gòu)的描述符,包括標(biāo)準(zhǔn)的描述符即設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符和字符串描述符,還有百標(biāo)準(zhǔn)描述符,如類描述符。USB設(shè)備通過這些描述符向USB主機(jī)匯報(bào)設(shè)備的各種各樣屬性,主機(jī)通過對(duì)這些描述符的訪問對(duì)設(shè)備進(jìn)行類型識(shí)別、配置并為其提供相應(yīng)的客戶端驅(qū)動(dòng)程序。

              USB設(shè)備通過描述符反映自己的設(shè)備特性。USB描述符是由特定格式排列的一組數(shù)據(jù)結(jié)構(gòu)組成。

              在USB設(shè)備枚舉過程中,主機(jī)端的協(xié)義軟件需要解析從USB設(shè)備讀取的所有描述符信息。在USB主向設(shè)備發(fā)送讀取描述符的請(qǐng)求后,USB設(shè)備將所有的描述符以連續(xù)的數(shù)據(jù)流方式傳輸給USB主機(jī)。主機(jī)從第一個(gè)讀到的字符開始,根據(jù)雙方規(guī)定好的數(shù)據(jù)格式,順序地解析讀到的數(shù)據(jù)流。

              USB描述符包含標(biāo)準(zhǔn)描述符、類描述符和廠商特定描述3種形式。任何一種設(shè)備必須USB標(biāo)準(zhǔn)描述符(隊(duì)字符串描述符可選外)。

              在USB1.X中,規(guī)定了5種標(biāo)準(zhǔn)描述符:設(shè)備描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)、端點(diǎn)描述符(Endpoint Descriptor)和字符串描述符(String Descriptor)。

              每個(gè)USB設(shè)備只有一個(gè)設(shè)備描述符,而一個(gè)設(shè)備中可包含一個(gè)或多個(gè)配置描述符,即USB設(shè)備可以有多種配置。設(shè)備的每一個(gè)配置中又可以包含一個(gè)或多個(gè)接口描述符,即USB設(shè)備可以支持多種功能(接口),接口的特性通過描述符提供。

              在USB主機(jī)訪問USB設(shè)備的描述符時(shí),USB設(shè)備依照設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符順序?qū)⑺忻枋龇麄鹘o主機(jī)。一設(shè)備至少要包含設(shè)備描述符、配置描述符和接口描述符,如果USB設(shè)備沒有端點(diǎn)描述符,則它僅僅用默認(rèn)管道與主機(jī)進(jìn)行數(shù)據(jù)傳輸。

            1、設(shè)備描述符

              設(shè)備描述符給出了USB設(shè)備的一般信息,包括對(duì)設(shè)備及在設(shè)備配置中起全程作用的信息,包括制造商標(biāo)識(shí)號(hào)ID、產(chǎn)品序列號(hào)、所屬設(shè)備類號(hào)、默認(rèn)端點(diǎn)的最大包長度和配置描述符的個(gè)數(shù)等。一個(gè)USB設(shè)備必須有且僅有一個(gè)設(shè)備描述符。設(shè)備描述符是設(shè)備連接到總線上時(shí)USB主機(jī)所讀取的第一個(gè)描述符,它包含了14個(gè)字段,結(jié)構(gòu)如下:

             

            表4、USB設(shè)備描述符的結(jié)構(gòu)

            偏移量

            大小

            描述

            0

            bLength

            1

            數(shù)字

            此描述表的字節(jié)數(shù)

            1

            bDecriptorType

            1

            常量

            描述符的類型(此處應(yīng)為0x01,即設(shè)備描述符)

            2

            bcdUSB

            2

            BCD碼

            此設(shè)備與描述表兼容的USB設(shè)備說明版本號(hào)(BCD 碼)

            4

            bDeviceClass

            1

            設(shè)備類碼:
            如果此域的值為0則一個(gè)設(shè)置下每個(gè)接口指出它自己的類,各個(gè)接口各自獨(dú)立工作。 
            如果此域的值處于1~FEH之間,則設(shè)備在不同的接口上支持不同的類。并這些接口可能不能獨(dú)立工作。此值指出了這些接口集體的類定義。 
            如果此域設(shè)為FFH,則此設(shè)備的類由廠商定義。

            5

            bDeviceSubClass

            1

            子類

            子類挖碼 
            這些碼值的具體含義根據(jù)bDeviceClass 域來看。 
            如bDeviceClass 域?yàn)榱悖擞蛞岔殲榱?nbsp;
            如bDeviceClass 域?yàn)镕FH,此域的所有值保留。

            6

            bDevicePortocol

            1

            協(xié)議

            協(xié)議碼 
            這些碼的值視bDeviceClass 和 bDeviceSubClass 的值而定。 
            如果設(shè)備支持設(shè)備類相關(guān)的協(xié)議,此碼標(biāo)志了設(shè)備類的值。如果此域的值為零,則此設(shè)備不支持設(shè)備類相關(guān)的協(xié)議,然而,可能它的接口支持設(shè)備類相關(guān)的協(xié)議。如果此域的值為FFH,此設(shè)備使用廠商定義的協(xié)議。

            7

            bMaxPacketSize0

            1

            數(shù)字

            端點(diǎn)0的最大包大?。▋H8,16,32,64
            為合法值)

            8

            idVendor

            2

            ID

            廠商標(biāo)志(由USB-IF組織賦值)

            10

            idProduct

            2

            ID

            產(chǎn)品標(biāo)志(由廠商賦值)

            12

            bcdDevice

            2

            BCD 碼

            設(shè)備發(fā)行號(hào)(BCD 碼)

            14

            iManufacturer

            1

            索引

            描述廠商信息的字符串描述符的索引值。

            15

            iProduct

            1

            索引

            描述產(chǎn)品信息的字串描述符的索引值。

            16

            iSerialNumber

            1

            索引

            描述設(shè)備序列號(hào)信息的字串描述符的索引值。

            17

            bNumConfigurations

            1

            數(shù)字

            可能的配置描述符數(shù)目

             

            其中bDescriptorType為描述符的類型,其含義可查下表(此表也適用于標(biāo)準(zhǔn)命令Get_Descriptor中wValue域高字節(jié)的取值含義):

             

            表5、USB描述符的類型值
            類型 描述符 描述符值
            標(biāo)準(zhǔn)描述符 設(shè)備描述符(Device Descriptor) 0x01
            配置描述符(Configuration Descriptor) 0x02
            字符串描述符(String Descriptor) 0x03
            接口描述符(Interface Descriptor) 0x04
            端點(diǎn)描述符(EndPont Descriptor) 0x05
            類描述符 集線器類描述符(Hub Descriptor) 0x29
            人機(jī)接口類描述符(HID) 0x21
            廠商定義的描述符   0xFF

             

            設(shè)備類代碼bDeviceClass可查下表:

             

            表6、設(shè)備的類別(bDeviceClass)
            值(十進(jìn)制)
            值(十六進(jìn)制)
            說明
            0
            0x00
            接口描述符中提供類的值
            2
            0x02
            通信類
            9
            0x09
            集線器類
            220
            0xDC
            用于診斷用途的設(shè)備類
            224
            0xE0
            無線通信設(shè)備類
            255
            0xFF
            廠商定義的設(shè)備類

             

            下表列出了一個(gè)USB鼠標(biāo)的設(shè)備描述符的例子,供大家分析一下:

             

            表7、一種鼠標(biāo)的設(shè)備描述符示例
            字段 描述符值(十六制)

            bLength

            0x12

            bDecriptorType

            0x01

            bcdUSB

            x0110

            bDeviceClass

            0x00

            bDeviceSubClass

            0x00

            bDevicePortocol

            0x00

            bMaxPacketSize0

            0x08

            idVendor

            0x045E(Microsoft Corporation)

            idProduct

            0x0047

            bcdDevice

            0x300

            iManufacturer

            0x01

            iProduct

            0x03

            iSerialNumber

            0x00

            bNumConfigurations

            0x01

             

            2、配置描述符

              配置描述符中包括了描述符的長度(屬于此描述符的所有接口描述符和端點(diǎn)描述符的長度的和)、供電方式(自供電/總線供電)、最大耗電量等。主果主機(jī)發(fā)出USB標(biāo)準(zhǔn)命令Get_Descriptor要求得到設(shè)備的某個(gè)配置描述符,那么除了此配置描述符以外,此配置包含的所有接口描述符與端點(diǎn)描述符都將提供給USB主機(jī)。

             

            表8、USB配置描述符的結(jié)構(gòu)

               偏移量

                 域

             大小

               值

               描述

                  0

            bLength

            1

               數(shù)字

            此描述表的字節(jié)數(shù)長度。

                  1

            bDescriptorType

            1

               常量

            配置描述表類型(此處為0x02)

                  2

            wTotalLength

            2

               數(shù)字

            此配置信息的總長(包括配置,接口,端點(diǎn)和設(shè)備類及廠商定義的描述符)

                  4

            bNumInterfaces

            1

               數(shù)字

            此配置所支持的接口個(gè)數(shù)

                  5

            bCongfigurationValue

            1

               數(shù)字

            在SetConfiguration()請(qǐng)求中用作參數(shù)來選定此配置。

                  6

            iConfiguration

            1

               索引

            描述此配置的字串描述表索引

                  7

            bmAttributes

            1

               位圖

            配置特性: 
            D7: 保留(設(shè)為一) 
            D6: 自給電源 
            D5: 遠(yuǎn)程喚醒 
            D4..0:保留(設(shè)為一) 
            一個(gè)既用總線電源又有自給電源的設(shè)備會(huì)在MaxPower域指出需要從總線取的電量。并設(shè)置D6為一。運(yùn)行時(shí)期的實(shí)際電源模式可由GetStatus(DEVICE) 請(qǐng)求得到。

                  8

            MaxPower

            1

                mA

            在此配置下的總線電源耗費(fèi)量。以 2mA 為一個(gè)單位。

             

            下面是一種硬盤的配置描述符示例:

             

            表9、一種硬盤的配置描述符示例
            字段 描述符值(十六進(jìn)制)

            bLength

            0x09

            bDescriptorType

            0x02

            wTotalLength

            0x01F

            bNumInterfaces

            0x01

            bCongfigurationValue

            0x01

            iConfiguration

            0x00

            bmAttributes

            0x0C

            MaxPower

            0x32

             

            3、接口描述符

              配置描述符中包含了一個(gè)或多個(gè)接口描述符,這里的“接口”并不是指物理存在的接口,在這里把它稱之為“功能”更易理解些,例如一個(gè)設(shè)備既有錄音的功能又有揚(yáng)聲器的功能,則這個(gè)設(shè)備至少就有兩個(gè)“接口”。

              如果一個(gè)配置描述符不止支持一個(gè)接口描述符,并且每個(gè)接口描述符都有一個(gè)或多個(gè)端點(diǎn)描述符,那么在響應(yīng)USB主機(jī)的配置描述符命令時(shí),USB設(shè)備的端點(diǎn)描述符總是緊跟著相關(guān)的接口描述符后面,作為配置描述符的一部分被返回。接口描述符不可直接用Set_Descriptor和Get_Descriptor來存取。

              如果一個(gè)接口僅使用端點(diǎn)0,則接口描述符以后就不再返回端點(diǎn)描述符,并且此接口表現(xiàn)的是一個(gè)控制接口的特性,它使用與端點(diǎn)0相關(guān)聯(lián)的默認(rèn)管道進(jìn)行數(shù)據(jù)傳輸。在這種情況下bNumberEndpoints域應(yīng)被設(shè)置成0。接口描述符在說明端點(diǎn)個(gè)數(shù)并不把端點(diǎn)0計(jì)算在內(nèi)。

             

            表10、USB接口描述符的結(jié)構(gòu)

            偏移量

            大小

            說明

                   0

            bLength

            1

            數(shù)字

            此表的字節(jié)數(shù)

                   1

            bDescriptorType

            1

            常量

            接口描述表類(此處應(yīng)為0x04)

                   2

            bInterfaceNumber

            1

            數(shù)字

            接口號(hào),當(dāng)前配置支持的接口數(shù)組索引(從零開始)。

                   3

            bAlternateSetting

            1

            數(shù)字

            可選設(shè)置的索引值。

                   4

            bNumEndpoints

            1

            數(shù)字

            此接口用的端點(diǎn)數(shù)量,如果是零則說明此接口只用缺省控制管道。

                   5

            bInterfaceClass

                    1

            接口所屬的類值: 
            零值為將來的標(biāo)準(zhǔn)保留。 
            如果此域的值設(shè)為FFH,則此接口類由廠商說明。 
            所有其它的值由USB 說明保留。

                   6

            bInterfaceSubClass

                    1

            子類

            子類碼 
            這些值的定義視bInterfaceClass域而定。
            如果bInterfaceClass域的值為零則此域的值必須為零。 
            bInterfaceClass域不為FFH則所有值由USB 所保留。

                   7

            bInterfaceProtocol

                    1

            協(xié)議

            協(xié)議碼:bInterfaceClass 和bInterfaceSubClass 域的值而定.如果一個(gè)接口支持設(shè)備類相關(guān)的請(qǐng)求此域的值指出了設(shè)備類說明中所定義的協(xié)議.

                   8

            iInterface

                    1

            索引

            描述此接口的字串描述表的索引值。

             

            對(duì)于bInterfaceClass字段,表示接口所屬的類別,USB協(xié)議根據(jù)功能將不同的接口劃分成不的類,其具體含義如下表所示:

             

            表11、USB協(xié)議定義的接口類別(bInterfaceClass)
            值(十六進(jìn)制) 類別
            0x01 音頻類
            0x02 CDC控制類
            0x03 人機(jī)接口類(HID)
            0x05 物理類
            0x06 圖像類
            0x07 打印機(jī)類
            0x08 大數(shù)據(jù)存儲(chǔ)類
            0x09 集線器類
            0x0A CDC數(shù)據(jù)類
            0x0B 智能卡類
            0x0D 安全類
            0xDC 診斷設(shè)備類
            0xE0 無線控制器類
            0xFE 特定應(yīng)用類(包括紅外的橋接器等)
            0xFF 廠商定義的設(shè)備

             

            4、端點(diǎn)描述符

              端點(diǎn)是設(shè)備與主機(jī)之間進(jìn)行數(shù)據(jù)傳輸?shù)倪壿嫿涌?,除配置使用的端點(diǎn)0(控制端點(diǎn),一般一個(gè)設(shè)備只有一個(gè)控制端點(diǎn))為雙向端口外,其它均為單向。端點(diǎn)描述符描述了數(shù)據(jù)的傳輸類型、傳輸方向、數(shù)據(jù)包大小和端點(diǎn)號(hào)(也可稱為端點(diǎn)地址)等。

              除了描述符中描述的端點(diǎn)外,每個(gè)設(shè)備必須要有一個(gè)默認(rèn)的控制型端點(diǎn),地址為0,它的數(shù)據(jù)傳輸為雙向,而且沒有專門的描述符,只是在設(shè)備描述符中定義了它的最大包長度。主機(jī)通過此端點(diǎn)向設(shè)備發(fā)送命令,獲得設(shè)備的各種描述符的信息,并通過它來配置設(shè)備。

             

            表12、USB端點(diǎn)描述符的結(jié)構(gòu)

            偏移量

            大小

            說明

            0

            bLength

            1

            數(shù)字

            此描述表的字節(jié)數(shù)長度

            1

            bDescriptorType

            1

            常量

            端點(diǎn)描述表類(此處應(yīng)為0x05)

            2

            bEndpointAddress

            1

            端點(diǎn)

            此描述表所描述的端點(diǎn)的地址、方向: 
            Bit 3..0 : 端點(diǎn)號(hào).
            Bit 6..4 : 保留,為零 
            Bit 7:    方向,如果控制端點(diǎn)則略。 
            0:輸出端點(diǎn)(主機(jī)到設(shè)備) 
            1:輸入端點(diǎn)(設(shè)備到主機(jī))

            3

            bmAttributes

            1

            位圖

            此域的值描述的是在bConfigurationValue域所指的配置下端點(diǎn)的特性。 
            Bit 1..0 :傳送類型 
            00=控制傳送 
            01=同步傳送 
            10=批傳送 
            11=中斷傳送 
            所有其它的位都保留。

            4

            wMaxPacketSize

            2

            數(shù)字

            當(dāng)前配置下此端點(diǎn)能夠接收或發(fā)送的最大數(shù)據(jù)包的大小。 
            對(duì)于實(shí)進(jìn)傳輸,此值用于為每幀的數(shù)據(jù)凈負(fù)荷預(yù)留時(shí)間。在實(shí)際運(yùn)行時(shí),管道可能不完全需要預(yù)留的帶寬,實(shí)際帶寬可由設(shè)備通過一種非USB定義的機(jī)制匯報(bào)給主機(jī)。對(duì)于中斷傳輸,批量傳輸和控制傳輸,端點(diǎn)可能發(fā)送比之短的數(shù)據(jù)包
             

            6

            bInterval

            1

            數(shù)字

            周期數(shù)據(jù)傳輸端點(diǎn)的時(shí)間間隙。 
            此域的值對(duì)于批傳送的端點(diǎn)及控制傳送的端點(diǎn)無意義。對(duì)于同步傳送的端點(diǎn)此域必需為1,表示周期為1ms。對(duì)于中斷傳送的端點(diǎn)此域值的范圍為1ms到255ms。

             

            下表是一種鼠標(biāo)的端點(diǎn)描述符的示例,該端點(diǎn)是一個(gè)中斷端點(diǎn):

             

            表13、一種鼠標(biāo)的端點(diǎn)描述符示例
            值(十六進(jìn)制)

            bLength

            0x07

            bDescriptorType

            0x05

            bEndpointAddress

            0x81

            bmAttributes

            0x03

            wMaxPacketSize

            0x04

            bInterval

            0x0A

             

            5、字符串描述符

              字符串描述符是一種可選的USB標(biāo)準(zhǔn)描述符,描述了如制商、設(shè)備名稱或序列號(hào)等信息。如果一個(gè)設(shè)備無字符串描述符,則其它描述符中與字符串有關(guān)的索引值都必須為0。字符串使用的是Unicode編碼。

              主機(jī)請(qǐng)示得到某個(gè)字符串描述符時(shí)一般分成兩步:首先主機(jī)向設(shè)備發(fā)出USB標(biāo)準(zhǔn)命令Get_Descriptor,其中所使用的字符串的索引值為0,設(shè)備返回一個(gè)字符串描述符,此描述符的結(jié)構(gòu)如下:

             

            表14、USB字符串描述符(響應(yīng)主機(jī)請(qǐng)求時(shí)返回的表示語言ID的字符串描述符)

            偏移量

            大小

                 描述

            0

            bLength

            1

            N+2

            此描述表的字節(jié)數(shù)

            1

            bDescriptorType

            1

            常量

            字串描述表類型(此處應(yīng)為0x03)

            2

            wLANGID[0]

            2

            數(shù)字

            語言標(biāo)識(shí)(LANGID) 
            碼0

                  

            N

            wLANGID[x]

            2

            數(shù)字

            語言標(biāo)識(shí)(LANGID) 
            碼X

             

            該字符串描述符雙字節(jié)的語言ID的數(shù)組,wLANGID[0]~wLANGID[x]指明了設(shè)備支持的語言,具體含義可查看USB_LANGIDs.pdf。

              主機(jī)根據(jù)自己需要的語言,再次向設(shè)備發(fā)出USB標(biāo)準(zhǔn)命令Get_Descriptor,指明所要求得到的字符串的索引值和語言。這次設(shè)備所返回的是Unicode編號(hào)的字符串描述符,其結(jié)構(gòu)如下:

             

            表15、Unicode字符串描述符(響應(yīng)主機(jī)請(qǐng)求時(shí)真正表示字符串編碼的字符串描述符)

            偏移量

            大小

            描述

            0

            bLength

            1

            數(shù)字

            此描述表的字節(jié)數(shù)(bString域的數(shù)值N+2)

            1

            bDescriptorType

            1

            常量

            字串描述表類型(此處應(yīng)為0x03)

            2

            bString

            N

            數(shù)字

            UNICODE 編碼的字串

             

            bString域?yàn)樵O(shè)備實(shí)際返回的以UNICODE編碼的字符串流,我們?cè)诰帉懺O(shè)備端硬件驅(qū)動(dòng)的時(shí)候需要將字符串轉(zhuǎn)換為UNICODE編碼,您可以通過一些UNICODE轉(zhuǎn)換工具進(jìn)行轉(zhuǎn)換。這里推薦由百合電子工作室開發(fā)的一款USB描述符生成工具“USB Unicode 字符串描述符生成器”,它專門為編寫設(shè)備端驅(qū)動(dòng)程序的需要而定制,可以非常方便將您需要的字符串轉(zhuǎn)換成UNICODE格式,進(jìn)而導(dǎo)入您的C或匯編程序代碼中,以下是它的界面:

            USB Unicode 字符串描述符生成器-生成C語言格式

            USB Unicode 字符串描述符生成器-生成匯編格式

            溫馨提示:

              百合電子工作室有一個(gè)關(guān)于USB開發(fā)方面的開源項(xiàng)目-Easy USB 51 Programer,整個(gè)開發(fā)過程寫得非常詳細(xì),不防參考一下,您還可以進(jìn)入她的論壇參與此項(xiàng)目的討論。

            注:本篇文章部分內(nèi)容摘自《USB協(xié)議》和《USB技術(shù)及應(yīng)用設(shè)計(jì)》

             原文地址 http://www.baiheee.com/Documents/090518/090518112619.htm

            posted on 2010-11-24 14:39 wrh 閱讀(1031) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            <2010年11月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            統(tǒng)計(jì)

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            一本久久久久久久| 久久久WWW成人| 久久久久久毛片免费播放| 综合久久一区二区三区| 欧美噜噜久久久XXX| 99久久国产综合精品五月天喷水| 国产成人99久久亚洲综合精品| 久久夜色精品国产| 久久久久亚洲精品天堂| 狠狠精品久久久无码中文字幕 | 综合久久给合久久狠狠狠97色| 久久这里只有精品首页| 99热成人精品热久久669| 午夜精品久久久久9999高清| 精品无码久久久久久午夜| 久久99久久无码毛片一区二区 | 亚洲欧美伊人久久综合一区二区| 欧美一区二区三区久久综| 久久久久久毛片免费看| 国产欧美久久一区二区| 亚洲欧美成人久久综合中文网| 久久99国产精品一区二区| 2021国内精品久久久久久影院| 一级做a爰片久久毛片16| 97久久久久人妻精品专区 | 99久久精品国产免看国产一区| 久久有码中文字幕| 国产99久久久国产精免费| 久久精品成人免费网站| 久久久无码精品亚洲日韩按摩 | 久久美女人爽女人爽| 久久精品国产亚洲av影院| 精品一二三区久久aaa片| 久久天天躁狠狠躁夜夜2020一 | 亚洲精品国产自在久久| 久久精品18| 欧美精品福利视频一区二区三区久久久精品 | 国产美女久久精品香蕉69| 无码人妻久久一区二区三区免费| 欧美久久久久久| 一本久道久久综合狠狠爱|