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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > WinCE 5.0下鼠標(biāo)鍵盤驅(qū)動(dòng)分析(上)

          WinCE 5.0下鼠標(biāo)鍵盤驅(qū)動(dòng)分析(上)

          作者: 時(shí)間:2011-02-27 來(lái)源:網(wǎng)絡(luò) 收藏

          本文通過對(duì)WinCE 5.0下的鼠標(biāo)鍵盤驅(qū)動(dòng)分析,對(duì)WinCE驅(qū)動(dòng)程序設(shè)計(jì)進(jìn)行了分析。歡迎大家對(duì)不對(duì)的地方指出。

          硬件

          寫一個(gè)驅(qū)動(dòng)程序的第一件事就是讀硬件的規(guī)范文檔。所以首先必須了解硬件才能寫好驅(qū)動(dòng)。鼠標(biāo)和鍵盤現(xiàn)在已經(jīng)成為現(xiàn)代PC機(jī)上不可缺少的組成部分了。有興趣可以看下他們的發(fā)展歷史:

          鼠標(biāo)歷史推薦鏈接:http:/www.blogchina.com/new/source/200.html

          鍵盤歷史推薦鏈接:http:/www.soft6.com/news/detail.asp?id=11662

          硬件之鍵盤

          目前現(xiàn)在大概有下面3類鍵盤:

          l USB keyboard 被Macintosh 和IBM兼容機(jī)所支持的最新鍵盤。在WinCE下,這種設(shè)備(鍵盤和鼠標(biāo))屬于HID設(shè)備(Human Interface Device).由于涉及到USB驅(qū)動(dòng),所以在本文暫時(shí),準(zhǔn)備在USB驅(qū)動(dòng)中詳細(xì)補(bǔ)充(其中的中斷處理算法和ps/2基本一致,只是接口上發(fā)生變化)。

          l IBM/compatible keyboards 現(xiàn)代PC機(jī)支持的AT Keyboard 和PS/2 keyboard.。本文重點(diǎn)講解WinCE 5.0下PS/2鍵盤驅(qū)動(dòng)。

          l ADB keyboards 老式的蘋果機(jī)上使用,本文不關(guān)注。

          8042和8048

          又有歷史來(lái)了,一開始,IBM首先使用Intel 8048微控制器作為鍵盤的編碼器,使用Intel 8042微控制器作為鍵盤控制器。所以呢,現(xiàn)在這個(gè)標(biāo)準(zhǔn)都被大家所接受了?;旧湘I盤設(shè)備的控制器就這2種了。

          其中,8048是鍵盤上的編碼器,8042是在主機(jī)上的鍵盤控制器(目前,基本上都已經(jīng)被集成到了芯片組里了)。位置就如下圖所示:

          8042的工作模式

          l 依賴于主板的不同鍵盤控制器可以工作于兩個(gè)模式之一AT 兼容模式或PS/2 兼容模式

          l 如果主板支持PS/2 鼠標(biāo)就工作在后一種模式下。在這種情況下8042 的作用是鍵盤控制器和鼠標(biāo)控制器

          l 鍵盤控制器根據(jù)鍵盤端口的連線情況自動(dòng)檢測(cè)它應(yīng)該工作在何種模式下

          PS/2鍵盤

          l Scan code, Make Codes, Break Codes, and Typematic Repeat


          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程




          評(píng)論


          相關(guān)推薦

          技術(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); })();