`
lqixv
  • 浏览: 218780 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 访问 usb (一)

    博客分类:
  • java
阅读更多

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 设备是自己研制出来的,还没来得及为各种平台写驱动程序,你可以用这个组件提供驱动程序

 

  1. 从:http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/ 下载 libusb-win32-bin-1.2.2.0.zip
  2. 从 http://sourceforge.net/projects/libusbjava/files/libusbjava-snapshots/20090517/ 下载 ch.ntb.usb-0.5.9.jar 和 LibusbJava_dll_0.2.4.0.zip
  3. 安装 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设备是新安装的,且你没有重启计算机。你重启一下计算机,再进行上述步骤,应该就可以了。
  4. 把 LibusbJava.dll 复制到 windows/system32 目录下
  5. 这时,到达 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;
    	}
    
     重新编译后,替换掉这个类,即可。
分享到:
评论
10 楼 147yanling 2011-03-18  
请问楼主ch.ntb.usb-0.5.9的源码如何获取啊 ?
9 楼 coreymylife 2010-12-25  
xgj1988 写道
我以为是楼主自己写的一个JAVA直接 调用USB接口呢,原来还是要用NATIVE.,

你真2~
8 楼 yunchow 2010-12-25  
先记下,说不定以后用的上的
7 楼 hellostory 2010-12-24  
这个不知道能不能用来控制使用USB接口的外部设备上,比如读卡器等,条码扫描仪??
如果可以的话,还是很有用的,接收下了,呵呵
6 楼 txlaijava 2010-12-24  
对USBkey开发应该有帮助吧.!
5 楼 xgj1988 2010-12-24  
我以为是楼主自己写的一个JAVA直接 调用USB接口呢,原来还是要用NATIVE.,
4 楼 mercyblitz 2010-12-24  
还是Native实现哦!
3 楼 wdpyyxal 2010-12-24  
加密狗是不是就这样实现的
2 楼 whaosoft 2010-12-24  
呵呵 东西挺好玩 至少我写不出来
1 楼 dcgood 2010-12-24  
不知道这个东西有什么意义

相关推荐

    usb4java-javax-1.3.0.tar_usb4java包_usb4java1.3.0_usb4java版本_

    USB4Java是一个开源Java库,它为开发人员提供了一个接口,可以方便地访问USB设备,无需深入了解底层USB协议的复杂性。这个库是基于libusb库实现的,libusb是一个跨平台的C语言库,提供了对USB设备的低级别访问。在本...

    java 获取USB外接设备信息demo

    请注意,上述代码可能需要运行在具有适当权限的环境中,比如在支持USB访问的Java应用服务器上,或者在用户已经赋予了USB设备访问权限的系统中。 这个Java程序会列出所有连接的USB设备,并打印出它们的VID和PID。这...

    Windows下的Java访问USB库文件

    本文将详细讲解如何利用Java访问USB设备,并着重介绍涉及的库文件及其作用。 首先,Java本身并不直接支持对USB设备的原生访问,因此我们需要依赖第三方库来实现这一功能。在提供的文件中,有两个关键的库文件:`...

    jsr80 java 访问 usb

    它包括一个 RMI proxy 和一个 daemon 应用程序,它让 Java 应用程序可以访问远程计算机上的 USB 设备。 usb.util : 这个包提供了一些有用的实用程序,可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 ...

    JAVA USB监听器

    【JAVA USB监听器】是一种基于Java编程语言实现的软件工具,其主要功能是对USB设备进行实时监控,当USB设备插入时,能够自动检测并复制指定类型的文件到预先设定的目录中。这种工具对于需要频繁从USB设备中获取特定...

    USB-Key.rar_USB KEY_java usb_java usb key_usb key开发_usbkey

    USB Key是一种基于硬件的安全设备,通常用于存储个人识别信息(PIN)、数字证书和其他敏感数据,以保护用户在进行网络交易或访问受保护资源时的身份安全。USB Key在IT行业中广泛应用于网上银行、电子政务、企业内部...

    Java自动监视usb设备,

    这通常涉及到Java的USB API,如Java Communications API(JSR 80)或更具体的libusb4java,这是一个Java绑定库,用于访问libusb库,提供跨平台的USB设备访问。通过这些API,我们可以枚举系统中的USB设备,获取设备...

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

    为了解决这一问题,两个项目——JSR-80 和 jUSB 目前正在努力简化 Java 应用程序访问 USB 设备的过程。 #### JSR-80:Java USB API JSR-80 是 Java 规范请求 (Java Specification Request) 的一部分,旨在定义一个...

    java访问usb的包

    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

    java_USB_API

    它为开发者提供了一种跨平台的方式来访问和控制USB设备,使得Java程序员能够在不依赖于特定操作系统的情况下,利用USB设备的功能。在Java USB API中,主要涉及以下几个核心概念和技术: 1. **Java Access Bridge ...

    java操作usb

    2. **USB4Java**:这是一个开源项目,提供了Java API来访问USB设备。它基于libusb库,支持Windows、Linux、macOS等多种操作系统。USB4Java提供了一套完整的类和接口,用于枚举USB总线上的设备,打开和关闭设备,读写...

    java usb扫码枪数据

    Java本身并不直接支持USB设备的访问,但可以通过第三方库如libusb4java、JUSB或Usb4Java来实现。Usb4Java是一个开源库,它提供了JNI(Java Native Interface)层,允许Java程序直接调用libusb库,从而与USB设备进行...

    JAVA usb串口通讯(可用)

    RXTX是一个开源项目,提供了Java访问串行和并行端口的能力,使得开发者能够方便地在Java程序中与USB设备进行通信。 要开始一个USB串口通信项目,你需要了解以下关键概念: 1. **USB通信基础**:理解USB协议的基本...

    java访问usb设备(LINUX)

    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目录

    基于Java的USB-HID设备通信设计与实现.pdf

    接着,文章具体介绍了解决方案——如何使用JNative框架实现在Windows平台上访问USB-HID设备,并通过API完成程序与设备的通信。在Windows系统中,访问HID设备涉及到一系列的API函数,这些函数包含在hid.dll、setupapi...

    USB摄像头java实现

    Java提供了一个名为Java Device Control API(JavaDCP)的接口,允许开发者访问和控制硬件设备,包括摄像头。然而,JavaDCP并不是标准的Java库,因此在实际项目中,我们通常会依赖第三方库,如Java Media Framework ...

    windows下java访问hid设备

    总结来说,"windows下java访问hid设备"是一个涉及到Java、JNI、Windows系统编程和USB HID协议的复杂任务。开发者需要具备多方面的技术知识,包括Java编程、C/C++编程、USB设备驱动理解以及JNI的使用。通过这样的方式...

    jusb jar包 Java访问USB

    jusb jar包 Java访问USB

    JAVA-USB.rar_USB JAVA_UsbHostManagerJNI_java usb_java 实现USBHID_j

    7. **同步与多线程**:如果多个线程同时尝试访问USB设备,需要确保操作的同步,防止数据竞争和资源冲突。 8. **设备配置**:根据设备的需要,可能需要设置设备的配置,如选择接口,设置替代设置等。 在实际项目中...

Global site tag (gtag.js) - Google Analytics