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);更正的代码可以参考如下代码:
      1. byte[] parseByteArray(String s) {
      2. String[] hexs = s.split(" ");
      3. byte[] bytes = new byte[hexs.length];
      4. if(hexs.length > 0){
      5. int i = 0;
      6. for(String hex : hexs){
      7. String s1 = hex.substring(2);
      8. bytes[i] = (byte)(Integer.parseInt(s1, 16));
      9. i++;
      10. }
      11. }
      12. return bytes;
      13. }
      1. byte[] parseByteArray(String s) {
      2. String[] hexs = s.split(" ");
      3. byte[] bytes = new byte[hexs.length];
      4. if(hexs.length > 0){
      5. int i = 0;
      6. for(String hex : hexs){
      7. String s1 = hex.substring(2);
      8. bytes[i] = (byte)(Integer.parseInt(s1, 16));
      9. i++;
      10. }
      11. }
      12. return bytes;
      13. }

      重新编译后,替换掉这个类,即可。

java 访问 usb的更多相关文章

  1. Java访问USB设备

    最近在用Java访问RDing设备,使用的是Java HID API.使用过程中发现一个问题,由于是嵌入式小白,不知道如何向USB设备发送report.于是想到可以看看自带的软件如何访问USB的.找到 ...

  2. java访问修饰符

    了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...

  3. [THINKING IN JAVA]访问权限控制

    6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中 ...

  4. C# 访问USB(HID)设备

    原文:C# 访问USB(HID)设备 二话不说,直接给代码,如果您真想做这方面的东西,还是稍微研究下,没有现成的好类用,就需要自己了解其原理 //引用空间 using System; using Sy ...

  5. java访问权限的问题

    java访问权限的问题 java 访问权限 修饰符 背景: 关于java中的四种访问修饰符,public ,default ,protected ,private的作用范围本以为很熟悉了,但碰到了这样 ...

  6. Hadoop(五)搭建Hadoop与Java访问HDFS集群

    前言 上一篇详细介绍了HDFS集群,还有操作HDFS集群的一些命令,常用的命令: hdfs dfs -ls xxx hdfs dfs -mkdir -p /xxx/xxx hdfs dfs -cat ...

  7. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

  8. MinerQueue.java 访问队列

    MinerQueue.java 访问队列 package com.iteye.injavawetrust.miner; import java.util.HashSet; import java.ut ...

  9. 论Java访问权限控制的重要性

    人在什么面前最容易失去抵抗力? 美色,算是一个,比如说西施的贡献薄就是忍辱负重.以身报国.助越灭吴:金钱,算是另外一个,我们古人常说“钱乃身外之物,生不带来死不带去”,但我们又都知道“有钱能使鬼推磨” ...

随机推荐

  1. git rebase简介(高级篇)

    原文:http://gitbook.liuhui998.com/4_3.html 一.基本   对于git rebase,你亦可以选择进行交互式的rebase.这种方法通常用于在向别处推送提交之前对它 ...

  2. javascript中apply、call和bind的区别,容量理解,值得转!

    a)  javascript中apply.call和bind的区别:http://www.cnblogs.com/cosiray/p/4512969.html b)  深入浅出 妙用Javascrip ...

  3. 【转】WebMagic-总体流程源码分析

    转自:http://m.blog.csdn.net/article/details?id=51943601 写在前面 前一段时间开发[知了]用到了很多技术(可以看我前面的博文http://blog.c ...

  4. wxpython 基本的控件 (文本)

    wxPython 工具包提供了多种不同的窗口部件,包括了本章所提到的基本控件.我们涉及静态文本.可编辑的文本.按钮.微调.滑块.复选框.单选按钮.选择器.列表框.组合框和标尺.对于每种窗口部件,我们将 ...

  5. mysql创建用户

    mysql创建用户 创建用于localhost连接的用户并指定密码 mysql> create user 'pcom'@'localhost' identified by 'aaa7B2249' ...

  6. centos7安装docker并设置开机启动

    版本要求:查看内核版本,需大于3.10 [root@localhost ~]# uname -r -.el7.x86_64 更新内核:如果是生产机器务必慎重更新内核,避免出现不必要的问题. sudo ...

  7. linux日常小坑

    一.权限 1.文件权限 改动文件权限和所有权的命令有如下两个: chmod -更改权限 chown -更改所有权 不过,只有用户是当前所有者或者根用户,才能实际更改文件的权限或所有权,这一点大家要注意 ...

  8. 数据库SQL语句

    增删改查 --增加 create INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) --删除 delete DELETE FROM 表名 ...

  9. centos搭建svn服务器并在windows实验

    安装步骤如下: 1.yum install subversion   2.输入rpm -ql subversion查看安装位置,如下图:   我们知道svn在bin目录下生成了几个二进制文件. 输入 ...

  10. Match:Seek the Name, Seek the Fame(POJ 2752)

    追名逐利 题目大意:给定一个字符串S,要你找到S的所有前缀后缀数组 还是Kmp的Next数组的简单应用,但是这一题有一个BUG,那就是必须输出字符串的长度(不输出就WA),然而事实上对于abcbab, ...