<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > USB協(xié)議深入分析 字符串描述符

          USB協(xié)議深入分析 字符串描述符

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          上一次說到把配置描述符返回給主控器那里了,現(xiàn)在接著下來,就會(huì)收到主控器發(fā)來字符串描述符。如果在設(shè)備描述符那里指定沒有字符串描述的話,在這里是不會(huì)收到字符串描述符的。由于我在設(shè)備描述符里指定有字符串描述符的偏移地址,因此,就收到主控器發(fā)出請(qǐng)求字符串描述符。收到的數(shù)據(jù)如下:
          80 06 00 03 00 00 FF 00
          bmRequestType是80,表示方向USB設(shè)備發(fā)送給主控器,接收設(shè)備是USB設(shè)備。
          bRequest是06,表示這是獲取描述符。GET_DESCRIPTOR 6
          wValue是00 03。低字節(jié)表示偏移地址00,高字節(jié)表示描述符的類型,如下:
          STRING3
          wIndex是00 00。
          wLength是FF 00。它表示返回描述符的長度。這里是256個(gè)字節(jié)。
          因此,這個(gè)獲取字符串描述符,就是從字符串描述內(nèi)存里,0偏移地址開始的位置讀取第一個(gè)字符串描述符返回給主控器。接著就返回下面的數(shù)據(jù)給主控器:
          04 03 09 04
          上面的數(shù)據(jù)是按字符串描述符來組織的,它的結(jié)構(gòu),我定義結(jié)構(gòu)如下:
          typedefstruct_USB_STRING_DESCRIPTOR{
          BYTEbLength;
          BYTEbDescriptorType;
          WORDbString;
          }USB_STRING_DESCRIPTOR;
          bLength是所有數(shù)據(jù)的長度。在這里是4。
          bDescriptorType是描述類型,這里字符串描述符,所以它是3。
          bString是可變的字符數(shù)組。不超過254個(gè)應(yīng)都可以的,并且它是使用UNICODE編碼的字符串。在這里是09 04,這是美國英語的標(biāo)識(shí),0x0409。如果想輸入中文的標(biāo)識(shí),只要改為0x0804就可以了。
          通過這個(gè)字符串描述符,主控器就知道字符串描述符是使用什么語言說明的了,這樣就可以支持全世界的語言標(biāo)識(shí)。


          關(guān)鍵詞: USB協(xié)議字符串描述

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();