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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于HID協(xié)議的USB人機交互設備的接口設計

          基于HID協(xié)議的USB人機交互設備的接口設計

          作者: 時間:2010-09-15 來源:網絡 收藏

          目前市場上設備的種類繁多,但是這些設備會有一些共同的特性,根據(jù)這些特性可以把設備劃分為不同的類,如顯示設備、通信設備、音頻設備、大容量存儲設備、人機接口設備()。這里介紹如何實現(xiàn)類設備,以及如何在應用程序中對類設備進行訪問。從Windows98操作系統(tǒng)開始,為HID類設備提供了通用的驅動程序,所以只要按照HID設備類的規(guī)范編寫設備的固件程序,就能夠讓Windows系統(tǒng)自動識別設備,省去了復雜的驅動程序編寫過程。

          本文引用地址:http://www.ex-cimer.com/article/202511.htm

            1 HID簡介

            人機接口設備(HID)主要是指一些人與計算機進行交互的設備,如鍵盤、鼠標、游戲桿等;但是HID設備不一定非要是這些設備,只要符合HID設備級定義規(guī)范要求的都可以認為是HID設備。HID設備有以下主要特點:

           ?、?交換的數(shù)據(jù)存儲在報告的結構內,設備必須支持HID報告格式。

           ?、?每筆事務可以攜帶小量或中量的數(shù)據(jù)。低速設備每筆事務最大為8字節(jié),全速設備每筆最大為64字節(jié),高速設備最大為1 024字節(jié);

            ③ 有最大傳輸速度的限制。低速設備最快10ms一筆事務,最高速度為800 B/s;全速設備最快1 ms一筆事務,最高速度為64 KB/s;高速設備最快125 μs一筆事務,最高速度為24.576 MB/s。

           ?、?沒有傳輸速度的保證。

            當插入設備后,主機會向設備請求各種描述符來識別設備。為了把一個設備識別為HID類別,設備在定義描述符的時候必須遵守HID規(guī)范。圖1顯示了HID各種描述符之間的關系。事實上,每個設備可以有多個接口描述符來實現(xiàn)多接口設備,而且每個接口描述符下應該有多個端點描述符。


          圖1 HID各種描述符之間的關系

            從圖1中可以看出,除了USB標準定義的一些描述符外,HID設備還必須定義HID描述符。另外設備和主機的通信是通過報告的形式來實現(xiàn)的,所以還必須定義報告描述符;而物理描述符不是必需的。還有就是HID描述符是關聯(lián)于接口(而不是端點)的,所以設備不需要為每個端點都提供一個HID描述符。

            USB設備有4種傳輸方式與主機進行通信: 控制方式、中斷方式、批量方式和同步方式。每種方式都有它的應用領域。HID只支持控制和中斷傳輸方式。如圖2所示,HID設備必須要有默認的控制管道和一個中斷輸入端點;中斷輸出端點是可選的。


          圖2 HID類設備使用控制和中斷傳輸方式

            中斷輸出傳輸是USB1.1規(guī)范才有的內容,且必須獲得Windows系統(tǒng)的支持。從Windows98 SE版本開始才支持中斷輸出傳輸方式,所以如果需要中斷輸出傳輸方式的設備應該選擇相應的操作系統(tǒng)。表1列出了傳輸類型和相關情況。

          表1 HID類設備支持的傳輸方式傳輸


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();