java 要访问 usb 设备,通常要自己写c/c++代码,然后再用 java 访问这些组件,以达到控制usb设备的目的。但现在有一个开源组件 libusb 帮我们做好了访问usb设备的封装(包括windows、linux等平台)。我们用 java 访问 usb 设备时,可以通过访问 libusb 组件提供的接口即可。要了解这个组件的 java 部分的 Demo、API等,可以访问这里:http://libusbjava.sourceforge.net/
使用这个组件最重要的意义在于:
- 首先,你不再需要在 win、linux 等平台上写 c/c++ 等 native 组件,甚至,你不需要知道 jni 怎么写;
- 其次,使用这个组件,你可以访问所有的 usb 设备,当然,前提条件是你必须知道 usb 设备的相关指令(我当前就用这个组件,直接发usb能接受的命令,去控制我的指纹仪来工作)
- 最后,如果你的 usb 设备没有驱动程序,比如,你的 usb 设备是自己研制出来的,还没来得及为各种平台写驱动程序,你可以用这个组件提供驱动程序
- 从:http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/ 下载 libusb-win32-bin-1.2.2.0.zip
- 从 http://sourceforge.net/projects/libusbjava/files/libusbjava-snapshots/20090517/ 下载 ch.ntb.usb-0.5.9.jar 和 LibusbJava_dll_0.2.4.0.zip
- 安装 libusb-win32:
1)、解压 libusb-win32-bin-1.2.2.0.zip;
2)、把目录:\bin\x86 下的 libusb0_x86.dll 复制到 windows/system32 目录下,并改名为:libusb0.dll;
3)、把目录:\bin\x86 下的 libusb0.sys 复制到 windows/system32/drivers 目录下
4)、运行 install-filter-win.exe ,从中选择安装你要访问的 usb 设备
5)、运行 testlibusb-win.exe,有正确的提示信息。如下图:
注意:如果你运行第4)步时,出现无法安装libusb0服务、无法找到文件等错误,或者运行第5)步时,界面中“Driver version:”后面的版本号是,-1.-1 -1 ...这些情况,说明你的安装不正常。原因可能是因为你的usb设备是新安装的,且你没有重启计算机。你重启一下计算机,再进行上述步骤,应该就可以了。
- 把 LibusbJava.dll 复制到 windows/system32 目录下
- 这时,到达 ch.ntb.usb-0.5.9.jar 所在的目录,运行: java -jar ch.ntb.usb-0.5.9.jar,这样就会出来一个java swing做的窗口,如下图。
当右键点击倒数第二级的节点的时候,又会弹出新的窗口,在这个弹出窗口里,你可以直接发送一些16进制的代码给 usb 设备。但值得注意的是,这个窗口的代码写得有问题,其对16进制的代码转换为真正要发送的代码时,转换的是错误的代码。这个错误可以自己下载源码,更正即可。错误的类及方法是:
TestApp.java 中的方法:byte[] parseByteArray(String s);更正的代码可以参考如下代码:
byte[] parseByteArray(String s) {
String[] hexs = s.split(" ");
byte[] bytes = new byte[hexs.length];
if(hexs.length > 0){
int i = 0;
for(String hex : hexs){
String s1 = hex.substring(2);
bytes[i] = (byte)(Integer.parseInt(s1, 16));
i++;
}
}
return bytes;
}
重新编译后,替换掉这个类,即可。
分享到:
相关推荐
USB4Java是一个开源Java库,它为开发人员提供了一个接口,可以方便地访问USB设备,无需深入了解底层USB协议的复杂性。这个库是基于libusb库实现的,libusb是一个跨平台的C语言库,提供了对USB设备的低级别访问。在本...
请注意,上述代码可能需要运行在具有适当权限的环境中,比如在支持USB访问的Java应用服务器上,或者在用户已经赋予了USB设备访问权限的系统中。 这个Java程序会列出所有连接的USB设备,并打印出它们的VID和PID。这...
本文将详细讲解如何利用Java访问USB设备,并着重介绍涉及的库文件及其作用。 首先,Java本身并不直接支持对USB设备的原生访问,因此我们需要依赖第三方库来实现这一功能。在提供的文件中,有两个关键的库文件:`...
它包括一个 RMI proxy 和一个 daemon 应用程序,它让 Java 应用程序可以访问远程计算机上的 USB 设备。 usb.util : 这个包提供了一些有用的实用程序,可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 ...
【JAVA USB监听器】是一种基于Java编程语言实现的软件工具,其主要功能是对USB设备进行实时监控,当USB设备插入时,能够自动检测并复制指定类型的文件到预先设定的目录中。这种工具对于需要频繁从USB设备中获取特定...
USB Key是一种基于硬件的安全设备,通常用于存储个人识别信息(PIN)、数字证书和其他敏感数据,以保护用户在进行网络交易或访问受保护资源时的身份安全。USB Key在IT行业中广泛应用于网上银行、电子政务、企业内部...
这通常涉及到Java的USB API,如Java Communications API(JSR 80)或更具体的libusb4java,这是一个Java绑定库,用于访问libusb库,提供跨平台的USB设备访问。通过这些API,我们可以枚举系统中的USB设备,获取设备...
为了解决这一问题,两个项目——JSR-80 和 jUSB 目前正在努力简化 Java 应用程序访问 USB 设备的过程。 #### JSR-80:Java USB API JSR-80 是 Java 规范请求 (Java Specification Request) 的一部分,旨在定义一个...
java 访问的包 ch.ntb.usb-0.5.7.jar libusb0.dll libusbjava.dll libusb-win32-filter-bin.exe-java package visit ch.ntb.usb-0.5.7.jarlibusb0.dlllibusbjava.dlllibusb-win32-filter-bin.exe
它为开发者提供了一种跨平台的方式来访问和控制USB设备,使得Java程序员能够在不依赖于特定操作系统的情况下,利用USB设备的功能。在Java USB API中,主要涉及以下几个核心概念和技术: 1. **Java Access Bridge ...
2. **USB4Java**:这是一个开源项目,提供了Java API来访问USB设备。它基于libusb库,支持Windows、Linux、macOS等多种操作系统。USB4Java提供了一套完整的类和接口,用于枚举USB总线上的设备,打开和关闭设备,读写...
Java本身并不直接支持USB设备的访问,但可以通过第三方库如libusb4java、JUSB或Usb4Java来实现。Usb4Java是一个开源库,它提供了JNI(Java Native Interface)层,允许Java程序直接调用libusb库,从而与USB设备进行...
RXTX是一个开源项目,提供了Java访问串行和并行端口的能力,使得开发者能够方便地在Java程序中与USB设备进行通信。 要开始一个USB串口通信项目,你需要了解以下关键概念: 1. **USB通信基础**:理解USB协议的基本...
jsr80-1.0.1.jar,jsr80_ri-1.0.1.jar,jsr80_linux-1.0.1.jar放到jre/lib/ext/目录下面 libJavaxUsb.so放到jre/lib/...javax.usb.properties放到/jre/lib/目录下 tusb.java为测试程序 注: jre为java虚拟机下的jre目录
接着,文章具体介绍了解决方案——如何使用JNative框架实现在Windows平台上访问USB-HID设备,并通过API完成程序与设备的通信。在Windows系统中,访问HID设备涉及到一系列的API函数,这些函数包含在hid.dll、setupapi...
Java提供了一个名为Java Device Control API(JavaDCP)的接口,允许开发者访问和控制硬件设备,包括摄像头。然而,JavaDCP并不是标准的Java库,因此在实际项目中,我们通常会依赖第三方库,如Java Media Framework ...
总结来说,"windows下java访问hid设备"是一个涉及到Java、JNI、Windows系统编程和USB HID协议的复杂任务。开发者需要具备多方面的技术知识,包括Java编程、C/C++编程、USB设备驱动理解以及JNI的使用。通过这样的方式...
jusb jar包 Java访问USB
7. **同步与多线程**:如果多个线程同时尝试访问USB设备,需要确保操作的同步,防止数据竞争和资源冲突。 8. **设备配置**:根据设备的需要,可能需要设置设备的配置,如选择接口,设置替代设置等。 在实际项目中...