在 Java 應用程式中訪問USB裝置
Java 平臺一直都以其平臺無關性自豪。雖然這種無關性有許多好處,但是它也使得編寫與硬體互動的 Java 應用程式的過程變得相當複雜。在本文中,研究科學家蔣清野討論了兩個專案,它們透過提供使Java 應用程式可以使用 USB 裝置的 API 而使這個過程變得更容易。雖然這兩個專案仍然處於萌芽狀態,但是它們都顯示了良好的前景,並已經成為一些實用應用程式的基礎。
通用序列匯流排(Universal Serial Bus USB)規範的第一個版本發表於 1996年 1月。因為它的低成本、高資料傳輸率、使用容易和靈活性,USB 在計算機行業裡獲得了廣泛接受。今天,許多周邊裝置和裝置都是透過 USB 介面連線到計算機上的。目前,大多數一般用途的作業系統都提供了對 USB 裝置的支援,並且用 C 或者 C++ 可以相對容易地開發訪問這些外設的應用程式。不過,Java 程式語言在設計上對硬體訪問提供的支援很少,所以編寫與 USB 裝置互動的應用程式是相當困難的。
IBM 的 Dan Streetman 最早開始了在 Java 語言中提供對 USB 裝置的訪問的努力。2001年,他的專案透過 Java 規範請求(Java Specification Request,JSR)過程被接受為 Java 語言的候選擴充套件標準。這個專案現在稱為 JSR-80 並且指定了官方包 javax.usb。同時,在 2000年 6月,Mojo Jojo 和 David Brownell 在 SourceForge 開始了 jUSB 專案。這兩個專案都開發出了 Linux 開發人員可以使用的包,儘管它們都還很不完善。這兩個專案也都開始試圖向其他作業系統上的 Java 應用程式提供對 USB 裝置的訪問,儘管它們都還沒有開發出可以使用的包(參閱 參考資料 中有關本文中討論的這兩個專案及其他專案的資料)。
在本文中,將對 jUSB 和 JSR-80 專案作一個簡要介紹,不過,我們首先要看一下 USB 協議的具體細節,這樣您就可以理解這兩個專案是如何與 USB 裝置互動的。我們還將提供程式碼片段以展示如何用這兩個專案的 API 訪問 USB 裝置。
USB 介紹
1994年,一個由四個行業夥伴(Compaq、Intel、Microsoft 和 NEC)組成的聯盟開始制定 USB 協議。該協議最初的目的是將 PC 與電話相連並提供容易擴充套件和重新配置的 I/O 介面。1996年 1月,發表了 USB 規範的第一個版本,1998年 9月發表了後續版本(版本 1.1)。這個規範允許 127臺裝置同時連線到一起,總的通訊頻寬限制為 12 Mbps。後來,又有三個成員(Hewlett-Packard、Lucent 和 Philips)加入了這個聯盟。2000年 4月,發表了 USB 規範的 2.0版本,它支援高達 480 Mbps 的傳輸率。今天,USB 在高速(影片、影像、儲存)和全速(音訊、寬頻、麥克風)資料傳輸應用中起了關鍵作用。它還使各種低速裝置(鍵盤、滑鼠、遊戲外設、虛擬現實外設)連線到 PC 上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965659/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux應用可通過USB訪問Android裝置-Chrome OS 75版釋出LinuxAndroidChrome
- lsusb命令-在系統中顯示有關USB裝置資訊
- 在vmware的centos(linux)中載入usb裝置CentOSLinux
- Libusb開發教程 USB裝置程式開發
- TWaver在FTTX裝置網管系統中的應用
- 載入usb裝置!
- USB裝置在端點4~7互動資料
- 【VMware】虛擬機器中對映USB裝置虛擬機
- Vector在Java程式設計中的應用 (轉)Java程式設計
- extcon驅動及其在USB驅動中的應用
- 交換技術:反向訪問列表在實際中的應用(轉)
- Java 在Client/Server 中應用JavaclientServer
- 事件溯源在物聯網裝置資料同步中應用案例 - eventstore事件
- Ubuntu中VisualBox無法識別USB裝置Ubuntu
- MVC模式在Java Web應用程式中的實現MVC模式JavaWeb
- ORACLE GOLDENGATE抽取程式在AIX裸裝置環境中無響應OracleGoAI
- 檔案作為塊裝置訪問
- Ubuntu 安裝MTP驅動訪問安卓裝置Ubuntu安卓
- 判斷是否是移動裝置訪問網站程式碼網站
- 堆在java中的應用--PriorityQueueJava
- sqlserver在JAVA中的應用 (轉)SQLServerJava
- Windows10usb裝置正在使用中無法彈出Windows
- 在 Java 應用程式中使用 ElasticsearchJavaElasticsearch
- 使用shell指令碼在Linux中管理Java應用程式指令碼LinuxJava
- 蘋果裝置訪問 Windows 檔案共享教程蘋果Windows
- Laravel- 訪問裝置識別元件-BrowserDetectLaravel元件
- 在Linux中,什麼是裝置驅動程式?如何安裝和解除安裝裝置驅動程式?Linux
- 【Longkin】ASP.NET應用程式跟蹤 --- (三) 在程式碼裡訪問跟蹤資訊ASP.NET
- 判斷ios裝置中是否安裝了某款應用iOS
- win10禁用所有usb儲存裝置方法 win10如何禁止使用usb儲存裝置Win10
- 判斷訪問網頁的是移動裝置還是pc裝置網頁
- Java反射全解析(使用、原理、問題、在Android中的應用)Java反射Android
- 【轉載】WSL 如何連線USB裝置
- USB裝置遠端喚醒RemoteWakeUpREM
- 微軟面向所有Windows 10裝置推出白板應用程式微軟Windows
- 在Java2環境中應用IP地址封裝物件 (轉)Java封裝物件
- 在servlet中如何訪問javabeanServletJavaBean
- 從 VLAN 到 IPVLAN: 聊聊虛擬網路裝置及其在雲原生中的應用