| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 编程开发 > Java教程 > Java基础教程 > 文章正文 用户登录
利用javascri
[翻译]javasc
Flash javasc
Java和Flash通讯
javascript与
flash8与java
RIA 开发感想(二
Flash & Ajax
Java与flash的TCP
谈谈自己使用flas

在Java应用程序中访问USB设备详解           

在Java应用程序中访问USB设备详解

作者:佚名 来源:赛迪网 更新:2006-8-25 21:05:35 错误报告 我要投稿

USB 网络中的通信可以使用下面 四种数据传输类型中的任意一种 :

控制传输: 这些是一些短的数据包,用于设备控制和配置,特别是在设备附加到主机上时。

批量传输: 这些是 数量相对大的数据包。像扫描仪或者 SCSI 适配器这样的设备使用这种传输类型。

中断传输: 这些是 定期轮询的数据包。主控器会以特 定的间隔自动发出一个中断。

等时传输: 这些是实时的数据流,它们对带宽的要求高于可靠性要求 。音频和视频设备一般使用这种传输 类型。

像串行端口一样,计算机上每一个 USB 端口都由 USB 控制器指定了一个惟一的标识数字(端口 ID) 。当 USB 设备附加到 USB 端口上时 ,就将这个 惟一 端口 ID 分配给这台设备,并且 USB 控制器会读取设备描述符。设备描述符包括适用于该设备的全局 信息、以及设备的配置信息。配置定 义了一台 USB 设备的功能和 I/O 行为。一台 USB 设备可以有一个或者多个配置,这由它们相应的配置描述符所描述。 每一个配置都有一个或者多个接口, 它可以视为 一 个物理通信渠道 ;每一个接口有零个或者多个端点,它可以是数据提供者或者数据消费者,或者同时具 有这两种身份。接口由接口描述符描述 ,端点 由端 点描述符描述。并且一台 USB 设备可能还有字符串描述符以提供像厂商名、设备名或者序列号这样的附 加信息。

正如您所看到的, 像 USB 这样的协议为使用 Java 这种强调平台和硬件无关性的语言的开发人员提出了挑战。现在让我们看两个试图 解决这个问题的项 目 。

jUSB API

jUSB 项目是由 Mojo Jojo 和 David Brownell 于 2000年 6月创立的。其目标是提 供一组免费的、在 Linux 平台上访 问 USB 设备的 Java API。这个 API 是 按照 Lesser GPL (LGPL)条款发表的,这意味着您可以在专有和免费软件项目中使 用它。这个 API 提供了对多个物理 USB 设备的多线程访问,并支持本 机和远程设备。具有多个接口的设备可以同时被多个应用程序(或者设备驱动程序)所访 问,其中每一个应用程序(或者设 备驱动程序)都占据一个不同的接 口 。该 API 支持控制传输、批量传输和中断传输,不支持等时传输,因为等时传输用于媒 体数据(如音频和视频),JMF API 已经在其他标准设备驱动程序 上 对此提供了很好的支持(参阅 参考资料)。当前,该 API 可以在具有 Linux 2.4 核心或者以前 的 2.2.18 核心的 GNU/Linux 版本 上工作。因此可支持大多 数最 新的版本,例如,该 API 可以在没有任何补丁或者升级的 Red Hat 7.2 和 9.0 上工作。

jUSB API 包括以下包 : 

1.usb.core: 这个包是 jUSB API 的核心部分。它使得 Java 应用程序可以从 USB 主机访问 USB 设备。

2.usb.linux: 这个包包含 usb.core.Host 对象的 Linux 实现、bootstrapping 支持和其他可以提升 Linux USB 支持的类。这个实现通过虚拟 USB 文件系统 (usbdevfs)访问 USB 设备。

3.usb.windows: 这个包包含 usb.core.Host 对象的 Windows 实现、bootstrapping 支持和其他可以 提升 Windows USB 支持的类。 这个实现仍然处于非 常初级的阶段。

4.usb.remote: 这个包是 usb.core API 的远程版本。它包括一个 RMI proxy 和一个 daemon 应用程序,它让 Java 应用程序可以访问远程计算机上的 USB 设备。

5.usb.util: 这个包提供了一些有用的实用程序,可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 XML 中、以及将只有 bulk I/O 的 USB 设 备工具转换成一个套接字(socket)。

6.usb.devices: 这个可选包收集了用 jUSB API 访问不同 USB 设备的 Java 代码,包括柯达数码相机和 Rio 500 MP3 播放器。这些 API 经过特别编写以简 化 访问特定 USB 设备的过程,并且不能用于 访问其他设备。这些 API 是在 usb.core API 之上构建的,它们可以工作在所有支持 jUSB 的操作系统上。

7.usb.view: 这个可选包提供了基于 Swing 的 USB 树简单浏览器。它是一个展示 jUSB API 应用的很好的示例程序。

尽管 usb.core.Host 对象的实现对于不同的操作系统是不同的 ,但是 Java 程序员只需要理解 usb.core 包就可以用 jUSB API 开始应用程序的开发。表 1 列出了 usb.core 的接口 和类,Java 程序员应该熟悉它们:

表 1. jUSB 中的接口和类

接口/类 说明
Bus 将一组 USB 设备连接到 Host 上
Host 表示具有一个或者 多个 Bus 的 USB 控制器
Configuration 提供对设备所支持的 USB 配置的访问,以及对与该配置关联的 接口的访问
Descriptor 具有 USB 类型的描述符的实体的基类
Device 提供对 USB 设备的访问
DeviceDescriptor 提供对 USB 设备描述符的访问
EndPoint 提供对 USB 端点描述符的访问、在给定设备配置中构造设备数据输入或者输出
HostFactory 包 含 bootstrapping 方法
Hub 提供对 USB hub 描述 符以及一些 hub 操作的访问
Interface 描述一组端点,并与一个特定设备配置相关联
PortIdentifier 为 USB 设备提供稳定的字符串标识符,以便在操作和故障诊断时使

上一页  [1] [2] [3] [4] 下一页

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。