在Java的應(yīng)用程序中訪問USB設(shè)備_第1頁
在Java的應(yīng)用程序中訪問USB設(shè)備_第2頁
在Java的應(yīng)用程序中訪問USB設(shè)備_第3頁
在Java的應(yīng)用程序中訪問USB設(shè)備_第4頁
在Java的應(yīng)用程序中訪問USB設(shè)備_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、在Java應(yīng)用程序中訪問USB設(shè)備在本文通過提供使 Java應(yīng)用程序可以使用USB設(shè)備的API而使這個(gè)過程變得更容易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ù)傳輸率、使

2、用容易和靈活性,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)在稱為J

3、SR-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è)備交互的。我們還將

4、提供代碼片段以展示如何用這兩個(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ī)范允許 127臺設(shè)備同時(shí)連接到一起,總的通信帶寬限制為12 Mbps。后來,又USB在高速(視頻、圖像、儲存) 它還使各種低速設(shè)備(鍵盤、鼠有三個(gè)成員(Hewlett -P ackard、Luce nt和P hili ps)加入了這個(gè)聯(lián)盟。2

5、000年4月,發(fā)表了 USB 規(guī)范的2.0版本,它支持高達(dá) 480 Mbps的傳輸率。今天, 和全速(音頻、寬帶、麥克風(fēng))數(shù)據(jù)傳輸應(yīng)用中起了關(guān)鍵作用。標(biāo)、游戲外設(shè)、虛擬現(xiàn)實(shí)外設(shè))連接到PC上。只有一個(gè)主設(shè)備,到主計(jì)算機(jī)的USB協(xié)議有嚴(yán)格的層次結(jié)構(gòu)。在所有 USB系統(tǒng)中,的USB接口稱為主控器(host controller)。主控器有兩個(gè)標(biāo)準(zhǔn) ??開放主控器接口 (Compaq的Open Host Con troller In terface,OHCI)和通用主控器接口 (In tel 的 Uni versal Host Con trollerIn terface,UHCI)。這兩個(gè)標(biāo)準(zhǔn)提供了

6、同樣的能力,并可用于所有的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è)備稱為下行(dow nstream)或者輸出(out)傳輸,數(shù)據(jù)從設(shè)備流向主機(jī)稱

7、為上行(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)。USB網(wǎng)絡(luò)中的通信可以使用下面四種數(shù)據(jù)傳輸類型中的任意一種:控制傳輸: 上時(shí)。批量傳輸: 這種傳輸類型。這些是數(shù)量相對大的數(shù)據(jù)包。像掃描儀或者SCSI適配器這樣的設(shè)備使用中斷傳輸:這些是定期輪詢的數(shù)據(jù)包。主控器會以特定的間隔自動發(fā)出一個(gè)中斷。等時(shí)傳輸:備一般使用

8、這種傳輸類型。這些是實(shí)時(shí)的數(shù)據(jù)流,它們對帶寬的要求高于可靠性要求。音頻和視頻設(shè)這些是一些短的數(shù)據(jù)包,用于設(shè)備控制和配置,特別是在設(shè)備附加到主機(jī)像串行端口一樣,計(jì)算機(jī)上每一個(gè) 數(shù)字(端口 ID)。當(dāng)USB設(shè)備附加到 設(shè)備,并且USB控制器會讀取設(shè)備描述符。 及設(shè)備的配置信息。配置定義了一臺 有一個(gè)或者多個(gè)配置,口,它可以視為一個(gè)物理通信渠道; 或者數(shù)據(jù)消費(fèi)者,或者同時(shí)具有這兩種身份。 述。并且- 附加信息。USB端口都由USB控制器指定了一個(gè)惟一的標(biāo)識 USB端口上時(shí),就將這個(gè) 惟一端口 ID分配給這臺 設(shè)備描述符包括適用于該設(shè)備的全局信息、以USB設(shè)備的功能和I/O行為。一臺 USB設(shè)備可以

9、這由它們相應(yīng)的配置描述符所描述。每一個(gè)配置都有一個(gè)或者多個(gè)接每一個(gè)接口有零個(gè)或者多個(gè)端點(diǎn),它可以是數(shù)據(jù)提供者接口由接口描述符描述, 端點(diǎn)由端點(diǎn)描述符描臺USB設(shè)備可能還有字符串描述符以提供像廠商名、設(shè)備名或者序列號這樣的正如您所看到的,像USB這樣的協(xié)議為使用 Java這種強(qiáng)調(diào)平臺和硬件無關(guān)性的語言 的開發(fā)人員提出了挑戰(zhàn)?,F(xiàn)在讓我們看兩個(gè)試圖解決這個(gè)問題的項(xiàng)目。jUSB APIjUSB 項(xiàng)目是由 Mojo Jojo和 David Brown ell于2000年6月創(chuàng)立的。其目標(biāo)是提供 一組免費(fèi)的、在Linux平臺上訪問 USB設(shè)備的 Java API。這個(gè) API是按照 Lesser GPL(

10、LGPL)條款發(fā)表的,這意味著您可以在專有和免費(fèi)軟件項(xiàng)目中使用它。這個(gè)API提供了對多個(gè)物理USB設(shè)備的多線程訪問,并支持本機(jī)和遠(yuǎn)程設(shè)備。具有多個(gè)接口的設(shè)備可以同時(shí)被多個(gè)應(yīng)用程序(或者設(shè)備驅(qū)動程序)所訪問,其中每一個(gè)應(yīng)用程序(或者設(shè)備驅(qū)動程序)都占據(jù)一個(gè)不同的接口。該API支持控制傳輸、批量傳輸和中斷傳輸,不支持等時(shí)傳輸,因?yàn)榈葧r(shí)傳輸用于媒體數(shù)據(jù)(如音頻和視頻),JMF API已經(jīng)在其他標(biāo)準(zhǔn)設(shè)備驅(qū)動程序上對此提供 了很好的支持(參閱 參考資料)。當(dāng)前,該 API可以在具有 Linux 2.4核心或者以前的 2.2.18核心的GNU/Linux版本上工作。因此可支持大多數(shù)最新的版本,例如,該AP

11、I可以在沒有任何補(bǔ)丁或者升級的Red Hat 7.2和9.0上工作。jUSB API包括以下包:Java應(yīng)用程序可以從 USB主機(jī)實(shí)現(xiàn)、bootstrapping支持和其他可 文件系統(tǒng)(usbdevfs)訪問USB設(shè)usb.core:這個(gè)包是jUSB API的核心部分。它使得訪問USB設(shè)備。usb.linux:這個(gè)包包含 usb.core.Host 對象的 Linux 以提升Lin ux USB支持的類。這個(gè)實(shí)現(xiàn)通過虛擬USB備。usb.windows:這個(gè)包包含 usb.core.Host 對象的 Windows 實(shí)現(xiàn)、bootstrapping 支持禾口其他可以提升 Windows USB

12、支持的類。這個(gè)實(shí)現(xiàn)仍然處于非常初級的階段。usb.remote:這個(gè)包是 usb.core API的遠(yuǎn)程版本。它包括一個(gè)RMI proxy 和一個(gè)daemon應(yīng)用程序,它讓Java應(yīng)用程序可以訪問遠(yuǎn)程計(jì)算機(jī)上的USB設(shè)備。usb.util:這個(gè)包提供了一些有用的實(shí)用程序,可以將firmware下載到USB設(shè)備上、將USB系統(tǒng)的內(nèi)容轉(zhuǎn)儲到 XML中、以及將只有 bulk I/O的USB設(shè)備工具轉(zhuǎn)換成一個(gè) 套接字(socket)。訪問不同 USB設(shè)備的Java代碼,包括經(jīng)過特別編寫以簡化訪問特定USB設(shè)備是在usb.core API之上構(gòu)建的,它們可以usb.devices:這個(gè)可選包收集了用 j

13、USB API 柯達(dá)數(shù)碼相機(jī)和 Rio 500 MP3播放器。這些 API 的過程,并且不能用于訪問其他設(shè)備。這些API工作在所有支持jUSB的操作系統(tǒng)上。usb.view:這個(gè)可選包提供了基于Swing的USB樹簡單瀏覽器。它是一個(gè)展示jUSBAPI應(yīng)用的很好的示例程序。盡管usb.core.Host對象的實(shí)現(xiàn)對于不同的操作系統(tǒng)是不同的,但是Java程序員只需要理解 口和類,usb.core包就可以用jUSB API開始應(yīng)用程序的開發(fā)。表1列出了 usb.core的接Java程序員應(yīng)該熟悉它們:1. jUSB中的接口和類接口 /類說明Bus將一組USB設(shè)備連接到Host上Host表示具有一個(gè)

14、或者多個(gè) Bus的USB控制器Configuration提供對設(shè)備所支持的 USB配置的訪問,以及對與該配置關(guān)聯(lián)的接口的訪問Descri ptor具有USB類型的描述符的實(shí)體的基類Device提供對USB設(shè)備的訪問DeviceDescri ptor提供對USB設(shè)備描述符的訪問End Point提供對USB端點(diǎn)描述符的訪問、在給定設(shè)備配置中構(gòu)造設(shè)備數(shù)據(jù)輸入或者輸出HostFactory包含 bootstra pping方法Hub提供對USB hub描述符以及一些hub操作的訪問Interface描述一組端點(diǎn),并與一個(gè)特定設(shè)備配置相關(guān)聯(lián)P ortldentifier為USB設(shè)備提供穩(wěn)定的字符串標(biāo)識

15、符,以便在操作和故障診斷時(shí)使用用jUSB API訪問一臺 USB設(shè)備的正常過程如下:進(jìn)行 Bootstrap。通過從 HostFactory 得到 USB Host從Host訪問USB Bus,然后從這個(gè)Bus 訪問 USB root hub(即 USB Device)。得到hub上可用的USB端口數(shù)量,遍歷所有端口以找到正確的Device。訪問附加到特定端口上的USB Device??梢杂靡慌_Device 的 PortIdentifier 直接從Host訪問它,也可以通過從root hub開始遍歷 USB Bus找到它。用 ControlMessage與該 Device直接交互,或者從該 中

16、要求一個(gè)In terface,并與該In terface上可用的 Endpoint進(jìn)行I/O 。Device 的當(dāng)前 Configuration清單1展示了如何用jUSB API獲得USB系統(tǒng)中的內(nèi)容。這個(gè)程序編寫為只是查看 root hub上可用的 USB設(shè)備,但是很容易將它改為遍歷整個(gè)USB樹。這里的邏輯對應(yīng)于上述步驟1到步驟4。清單1.用jUSB API獲得USB系統(tǒng)的內(nèi)容import usb.core.*;p ublic class ListUSBp ublic static void main( Stri ng args)try/ Bootstra p by gett ing the

17、 USB Host from the HostFactory.Host host = HostFactory.getHostO;/ Obta in a list of the USB buses available on the Host.Bus bus = host.getBussesO;int total_bus = bus .len gth;/ Traverse through all the USB buses.for (int i=0; i<>/ Access the root hub on the USB bus and obta in the/ nu mber of

18、USB p orts available on the root hub.Device root = busi.getRootHub();int total_ port = root.getNu mP orts();/ Traverse through all the USB p orts available on the/ root hub. It should be men ti oned that the nu mberi ng/ starts from 1, not 0.for (int j=1; j<=total_ po rt; j+)/ Obta in the Device

19、conn ected to the port.Device device = root.getChild(j);if (device != nu II)/ USB device available, do someth ing here. catch (Exce pti on e)System.out. prin tl n( e.getMessage();清單EndPoint步驟5。2展示了在應(yīng)用程序成功地找到了Device的條件下,如何與 In terface和清單2.用jUSB API執(zhí)行批量I/O進(jìn)行批量I/O。這個(gè)代碼段也可以修改為執(zhí)行控制或者中斷I/O。它對應(yīng)于上述if (devic

20、e != nu II)/ Obta in the curre nt Con figuratio n of the device and the nu mber of /In terfaces available un der the curre nt Con figurati on.Con figurati on config = device.getC on figurati on();int total_ in terface = con fig.getNu mln terfaces();/ Traverse through the In terfaces for (int k=0; k&

21、lt;>/ Access the curre ntly In terface and obtai n the nu mber of / endpoints available on the In terface.In terface itf = con fig.get In teface(k, 0);int total_e p = itf.getNumE ndpoin ts();/ Traverse through all the endpoints.for (int l=0; l<>/ Access the endpoint, and obta in its I/O typ

22、e.Endpoint ep = itf.getE ndpoin t(l);String io_t ype = ep. getT yp e();boolea n input = ep .is Inpu t();/ If the endpoint is an input endpoint, obta in its/Inpu tStream and read in data.if (input)Inpu tStream in;in = ep. get Inpu tStream();/ Read in data herein .close();/ If the Endpoint is and out

23、put Endpoint, obta in its/ Outpu tStream and write out data.elseOutpu tStream out;out = ep .getOut putStream();/ Write out data here.out.close();jUSB項(xiàng)目在2000年6月到2001年2月期間非?;钴S。該 API的最新的版本 044發(fā) 表于2001年2月14日。從那以后只提出了很少的改進(jìn),原因可能是IBM小組成功地成為了 Java語言的候選擴(kuò)展標(biāo)準(zhǔn)。不過,基于jUSB已經(jīng)開發(fā)出一些第三方應(yīng)用程序, 包括JPhoto項(xiàng)目(這是一個(gè)用jUSB連接到數(shù)碼照

24、相機(jī)的應(yīng)用程序)和jSyncManager項(xiàng)目(這是一個(gè)用jUSB與使用Palm操作系統(tǒng)的 PDA同步的應(yīng)用程序)。JSR-80 API (javax.usb)正如前面提到的,JSR-80項(xiàng)目是由IBM 的Dan Streetman于1999年創(chuàng)立的。2001 年,這個(gè)項(xiàng)目通過 Java規(guī)范請求(JSR)過程被接受為 Java語言的候選擴(kuò)展標(biāo)準(zhǔn)。這個(gè)項(xiàng)目現(xiàn)在稱為 JSR-80并且被正式分派了Java包javax.usb。這個(gè)項(xiàng)目使用 Common PublicLicense的許可證形式,并通過Java Community Process進(jìn)行開發(fā)。這個(gè)項(xiàng)目的目標(biāo)是為Java平臺開發(fā)一個(gè) USB接

25、口,可以從任何 Java應(yīng)用程序中完全訪問USB系統(tǒng)。JSR-80API支持USB規(guī)范所定義的全部四種傳輸類型。目前,該API的Linux實(shí)現(xiàn)可以在支Red Hat 7.2 和 9.0。持2.4核心的大多數(shù)最新 GNU/Linux版本上工作,如JSR-80項(xiàng)目包括三個(gè)包:javax-usb (javax.usb API)、javax-usb-ri (操作系統(tǒng)無關(guān)的基準(zhǔn) 實(shí)現(xiàn)的公共部分)以及javax-usb-ri-linux (Linux平臺的基準(zhǔn)實(shí)現(xiàn),它將公共基準(zhǔn)實(shí)現(xiàn)鏈接到Linux USB堆棧)。所有這三個(gè)部分都是構(gòu)成Linux平臺上java.usb API完整功能所必需的。在該項(xiàng)目的電子

26、郵件列表中可以看到有人正在致力于將這個(gè)API移植到其他操作系統(tǒng)上(主要是 Microsoft Windows),但是還沒有可以工作的版本發(fā)表。盡管JSR-80 API的操作系統(tǒng)無關(guān)的實(shí)現(xiàn)在不同的操作系統(tǒng)上是不同的,但是Java程序員只需要理解 javax.usb包就可以開始開發(fā)應(yīng)用程序了。表2列出了 javax.usb中的接口和類,Java程序員應(yīng)該熟悉它們:表2. JSR-80 API中的接口和類說明接口 /類UsbConfiguration1表示USB設(shè)備的配置UsbConfigurationDescri ptorUSB配置描述符的接口UsbDevice USB設(shè)備的接口UsbDevice

27、Descri ptor USB設(shè)備描述符的接口UsbEnd point USB端點(diǎn)的接口UsbEnd po intDescri ptor USB端點(diǎn)描述符的接口UsbHubUSB hub 的接口UsbInterfaceUSB接口的接口UsbInterfaceDescri ptorUSB接口描述符的接口Usb Pipe USB管道的接口Usb Port USB端口的接口UsbServicesjavax.usb 實(shí)現(xiàn)的接口UsbHostManagerjavax.usb 的入口點(diǎn)用JSR-80 API訪問USB設(shè)備的正常過程如下:通過從 UsbHostManager 得到相應(yīng)的 UsbService

28、s 進(jìn)行 Bootstrap。通過 UsbServices訪問root hub。在應(yīng)用程序中root hub就是一個(gè) UsbHub。獲得連接到root hub的UsbDevices清單。遍歷所有低級hub以找到正確的UsbDevice 。用控制消息UsbC on figurati on 行 I/O。(UsbControlirp)與 UsbDevice 直接交互,或者從 中要求一個(gè) Usblnterface 并與該 UsblnterfaceUsbDevice的相應(yīng)上可用的 UsbEndpoint進(jìn)UsbPipe可以同步或者異步提交上行數(shù)據(jù)(從 機(jī)到USB設(shè)備)。Usb Pipe。通過這個(gè)如果一個(gè)

29、UsbEndpoint用于進(jìn)行I/O,那么打開與它關(guān)聯(lián)的USB設(shè)備到主計(jì)算機(jī))和下行數(shù)據(jù)(從主計(jì)算當(dāng)應(yīng)用程序不再需要訪問該UsbDevice時(shí),關(guān)閉這個(gè) UsbPipe并釋放相應(yīng)的Usbln terface。在清單3中,我們用JSR-80 API獲得系統(tǒng)上的所有 USB hub并找出連接到主機(jī)計(jì)算機(jī)上的所有 述步驟1到步驟3。USB系統(tǒng)的內(nèi)容。這個(gè)程序遞歸地遍歷USBUSB設(shè)備。這段代碼對應(yīng)于上清單3.用JSR-80 API獲得USB系統(tǒng)的內(nèi)容import javax.usb.*;import java.util.List;p ublic class TraverseUSBp ublic st

30、atic void main( Stri ng argv)try/ Access the system USB services, and access to the root/ hub. Then traverse through the root hub.UsbServices services = UsbHostMa nager.getUsbServices();UsbHub rootHub = services.getRootUsbHub();traverse(rootHub); catch (Exce pti on e) p ublic static void traverse(Us

31、bDevice device)if (device.isUsbHubO)/ This is a USB Hub, traverse through the hub.List attachedDevices = (UsbHub) device).getAttachedUsbDevices();for (int i=0; i<>traverse(UsbDevice) attachedDevices.get(i);else/ This is a USB fun ctio n, not a hub./ Do someth ing.清單4展示了在應(yīng)用程序成功地找到Device后,如何與In

32、terface和EndPoint進(jìn)行I/O。這段代碼還可以修改為進(jìn)行所有四種數(shù)據(jù)傳輸類型的I/O。它對應(yīng)于上述步驟4到步驟6。清單4.用JSR-80 API進(jìn)行I/Op ublic static void testlO(UsbDevice device)try/ Access to the active con figurati on of the USB device, obta in/ all the in terfaces available in that con figurati on.UsbC on figurati on config = device.getActiveUsbC

33、 on figurati on();List totalI nterfaces = con fig.getUsb In terfaces();/ Traverse through all the in terfaces, and access the endpoints/ available to that in terface for I/O.for (int i=0; i<>Usbln terface in terf = (Usb In terface) totall nteifaces.get(i);in terf.claim();List totalE ndpoints =

34、 in terf.getUsbE ndpoin ts();for (int j=0; j<>/ Access the p articular endpoint, determ ine the directi on/ of its data flow, and type of data tran sfer, and open the/ data pip e for I/O.UsbE ndpoint ep = (UsbE ndpoint) totalE ndpoin ts.get(i);int directio n = ep. getDirect ion();int type = ep

35、. getT yp e();UsbPipe pipe = ep .getUsb Pip e();pipe.open();/ Perform I/O through the USB pipe here.pip e.close();in terf.release(); catch (Exce pti on e) JSR-80項(xiàng)目從一開始就非?;钴S。0.10.0版本??雌饋磉@一版本會提交給2003 年 2 月發(fā)表了 javax.usb API、RI 和 RI 的JSR-80委員會做最終批準(zhǔn)。預(yù)計(jì)正式成為 Java語言的擴(kuò)展標(biāo)準(zhǔn)后,其他操作系統(tǒng)上的實(shí)現(xiàn)會很快出現(xiàn)。Linux開發(fā)者團(tuán)體看來對JSR-80項(xiàng)目的興趣比jUSB項(xiàng)目更大,使用Linux平臺的javax.usb API的項(xiàng)目數(shù)量在不斷地增加。結(jié)束語Linux操作系統(tǒng)的計(jì)算機(jī)中訪更多的功能,很有可能成為 Java語jUSB 和JSR-80 API的功能。不過,Java開發(fā)人員應(yīng)該在不久就可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論