国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

在Java應(yīng)用程序中訪問USB設(shè)備(1)

2019-11-18 16:00:47
字體:
供稿:網(wǎng)友

java 平臺一直都以其平臺無關(guān)性自豪。雖然這種無關(guān)性有許多好處,但是它也使得編寫與硬件交互的 Java 應(yīng)用程序的過程變得相當(dāng)復(fù)雜。在本文中,研究科學(xué)家蔣清野討論了兩個(gè)項(xiàng)目,它們通過提供使Java 應(yīng)用程序可以使用 USB 設(shè)備的 API 而使這個(gè)過程變得更輕易。雖然這兩個(gè)項(xiàng)目仍然處于萌芽狀態(tài),但是它們都顯示了良好的前景,并已經(jīng)成為一些實(shí)用應(yīng)用程序的基礎(chǔ)。

通用串行總線(Universal Serial Bus USB)規(guī)范的第一個(gè)版本發(fā)表于 1996年 1月。因?yàn)樗牡统杀?、高?shù)據(jù)傳輸率、使用輕易和靈活性,USB 在計(jì)算機(jī)行業(yè)里獲得了廣泛接受。今天,許多周邊設(shè)備和裝置都是通過 USB 接口連接到計(jì)算機(jī)上的。目前,大多數(shù)一般用途的操作系統(tǒng)都提供了對 USB 設(shè)備的支持,并且用 C 或者 C++ 可以相對輕易地開發(fā)訪問這些外設(shè)的應(yīng)用程序。不過,Java 編程語言在設(shè)計(jì)上對硬件訪問提供的支持很少,所以編寫與 USB 設(shè)備交互的應(yīng)用程序是相當(dāng)困難的。

IBM 的 Dan Streetman 最早開始了在 Java 語言中提供對 USB 設(shè)備的訪問的努力。2001年,他的項(xiàng)目通過 Java 規(guī)范請求(Java Specification Request,JSR)過程被接受為 Java 語言的候選擴(kuò)展標(biāo)準(zhǔn)。這個(gè)項(xiàng)目現(xiàn)在稱為 JSR-80 并且指定了官方包 javax.usb。同時(shí),在 2000年 6月,Mojo Jojo 和 David Brownell 在 SourceForge 開始了 jUSB 項(xiàng)目。這兩個(gè)項(xiàng)目都開發(fā)出了 linux 開發(fā)人員可以使用的包,盡管它們都還很不完善。這兩個(gè)項(xiàng)目也都開始試圖向其他操作系統(tǒng)上的 Java 應(yīng)用程序提供對 USB 設(shè)備的訪問,盡管它們都還沒有開發(fā)出可以使用的包(參閱 參考資料 中有關(guān)本文中討論的這兩個(gè)項(xiàng)目及其他項(xiàng)目的資料)。

在本文中,將對 jUSB 和 JSR-80 項(xiàng)目作一個(gè)簡要介紹,不過,我們首先要看一下 USB 協(xié)議的具體細(xì)節(jié),這樣您就可以理解這兩個(gè)項(xiàng)目是如何與 USB 設(shè)備交互的。我們還將提供代碼片段以展示如何用這兩個(gè)項(xiàng)目的 API 訪問 USB 設(shè)備。

USB 介紹

1994年,一個(gè)由四個(gè)行業(yè)伙伴(Compaq、Intel、Microsoft 和 NEC)組成的聯(lián)盟開始制定 USB 協(xié)議。該協(xié)議最初的目的是將 PC 與電話相連并提供輕易擴(kuò)展和重新配置的 I/O 接口。1996年 1月,發(fā)表了 USB 規(guī)范的第一個(gè)版本,1998年 9月發(fā)表了后續(xù)版本(版本 1.1)。這個(gè)規(guī)范答應(yīng) 127臺設(shè)備同時(shí)連接到一起,總的通信帶寬限制為 12 Mbps。后來,又有三個(gè)成員(Hewlett-Packard、LUCent 和 Philips)加入了這個(gè)聯(lián)盟。2000年 4月,發(fā)表了 USB 規(guī)范的 2.0版本,它支持高達(dá) 480 Mbps 的傳輸率。今天,USB 在高速(視頻、圖像、儲存)和全速(音頻、寬帶、麥克風(fēng))數(shù)據(jù)傳輸應(yīng)用中起了要害作用。它還使各種低速設(shè)備(鍵盤、鼠標(biāo)、游戲外設(shè)、虛擬現(xiàn)實(shí)外設(shè))連接到 PC 上。

USB 協(xié)議有嚴(yán)格的層次結(jié)構(gòu)。在所有 USB 系統(tǒng)中,只有一個(gè)主設(shè)備,到主計(jì)算機(jī)的的 USB 接口稱為主控器(host controller)。主控器有兩個(gè)標(biāo)準(zhǔn)??開放主控器接口(Compaq 的 Open Host Controller Interface,OHCI)和通用主控器接口(Intel 的 Universal Host Controller Interface,UHCI)。這兩個(gè)標(biāo)準(zhǔn)提供了同樣的能力,并可用于所有的 USB 設(shè)備,UHCI 的硬件實(shí)現(xiàn)更簡單一些,但是需要更復(fù)雜的設(shè)備驅(qū)動程序(因而 CPU 的負(fù)荷更大一些)。

USB 物理互連是分層的星形拓樸,最多有七層。一個(gè) hub 是每個(gè)星形的中心,USB 主機(jī)被認(rèn)為是 root hub。每一段連線都是 hub 與 USB 設(shè)備的點(diǎn)對點(diǎn)連接,后者可以是為系統(tǒng)提供更多附加點(diǎn)的另一個(gè) hub,也可以是一個(gè)提供功能的某種設(shè)備。主機(jī)使用主/從協(xié)議與 USB 設(shè)備通信。這種方式解決了包沖突的問題,但是同時(shí)也阻止了附加的設(shè)備彼此建立直接通信。

所有傳輸?shù)臄?shù)據(jù)都是由主控器發(fā)起的。數(shù)據(jù)從主機(jī)流向設(shè)備稱為下行(downstream)或者輸出(out)傳輸,數(shù)據(jù)從設(shè)備流向主機(jī)稱為上 行(upstream)或者輸入(in)傳輸。數(shù)據(jù)傳輸發(fā)生在主機(jī)和 USB 設(shè)備上特定的端點(diǎn)(endpoint) 之間,主機(jī)與端點(diǎn)之間的數(shù)據(jù)鏈接稱為管道(pipe)。 一個(gè)給定的 USB 設(shè)備可以有許多個(gè)端點(diǎn),主機(jī)與設(shè)備之間數(shù)據(jù)管道的數(shù)量與該設(shè)備上端點(diǎn)的數(shù)量相同。一個(gè)管道可以是單向或者是雙向的,一個(gè)管道中的數(shù)據(jù)流與所有其他管道中的數(shù)據(jù)流無關(guān)。

Java 平臺一直都以其平臺無關(guān)性自豪。雖然這種無關(guān)性有許多好處,但是它也使得編寫與硬件交互的 Java 應(yīng)用程序的過程變得相當(dāng)復(fù)雜。在本文中,研究科學(xué)家蔣清野討論了兩個(gè)項(xiàng)目,它們通過提供使Java 應(yīng)用程序可以使用 USB 設(shè)備的 API 而使這個(gè)過程變得更輕易。雖然這兩個(gè)項(xiàng)目仍然處于萌芽狀態(tài),但是它們都顯示了良好的前景,并已經(jīng)成為一些實(shí)用應(yīng)用程序的基礎(chǔ)。

通用串行總線(Universal Serial Bus USB)規(guī)范的第一個(gè)版本發(fā)表于 1996年 1月。因?yàn)樗牡统杀?、高?shù)據(jù)傳輸率、使用輕易和靈活性,USB 在計(jì)算機(jī)行業(yè)里獲得了廣泛接受。今天,許多周邊設(shè)備和裝置都是通過 USB 接口連接到計(jì)算機(jī)上的。目前,大多數(shù)一般用途的操作系統(tǒng)都提供了對 USB 設(shè)備的支持,并且用 C 或者 C++ 可以相對輕易地開發(fā)訪問這些外設(shè)的應(yīng)用程序。不過,Java 編程語言在設(shè)計(jì)上對硬件訪問提供的支持很少,所以編寫與 USB 設(shè)備交互的應(yīng)用程序是相當(dāng)困難的。

IBM 的 Dan Streetman 最早開始了在 Java 語言中提供對 USB 設(shè)備的訪問的努力。2001年,他的項(xiàng)目通過 Java 規(guī)范請求(Java Specification Request,JSR)過程被接受為 Java 語言的候選擴(kuò)展標(biāo)準(zhǔn)。這個(gè)項(xiàng)目現(xiàn)在稱為 JSR-80 并且指定了官方包 javax.usb。同時(shí),在 2000年 6月,Mojo Jojo 和 David Brownell 在 SourceForge 開始了 jUSB 項(xiàng)目。這兩個(gè)項(xiàng)目都開發(fā)出了 Linux 開發(fā)人員可以使用的包,盡管它們都還很不完善。這兩個(gè)項(xiàng)目也都開始試圖向其他操作系統(tǒng)上的 Java 應(yīng)用程序提供對 USB 設(shè)備的訪問,盡管它們都還沒有開發(fā)出可以使用的包(參閱 參考資料 中有關(guān)本文中討論的這兩個(gè)項(xiàng)目及其他項(xiàng)目的資料)。

在本文中,將對 jUSB 和 JSR-80 項(xiàng)目作一個(gè)簡要介紹,不過,我們首先要看一下 USB 協(xié)議的具體細(xì)節(jié),這樣您就可以理解這兩個(gè)項(xiàng)目是如何與 USB 設(shè)備交互的。我們還將提供代碼片段以展示如何用這兩個(gè)項(xiàng)目的 API 訪問 USB 設(shè)備。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赣州市| 扶绥县| 乾安县| 太谷县| 临夏县| 麻城市| 通城县| 磐石市| 文山县| 平阳县| 九江县| 神木县| 镇原县| 玉田县| 伊吾县| 静宁县| 井冈山市| 洪泽县| 孝昌县| 彩票| 上林县| 榆社县| 宜章县| 凤台县| 威信县| 浑源县| 临澧县| 酒泉市| 渭源县| 白朗县| 莎车县| 合作市| 富顺县| 衡山县| 宁陕县| 扎赉特旗| 临泽县| 寻乌县| 荆州市| 兴宁市| 寻甸|