博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java访问USB设备
阅读量:6418 次
发布时间:2019-06-23

本文共 4909 字,大约阅读时间需要 16 分钟。

  hot3.png

编者注

由于需要对某usb设备获取的数值进行转发和广播,则选择最熟悉的java作为切入语言解决。历经辛苦,测试成功。

JSR-80

通过查看Java的标准协会在制定标准的时候是具有JSR-80的制定的。API为javax.usb。但是通过当前(JDK 8作为默认),无论是J2ME、J2SE、J2EE都没有对JSR进行实现。

API

Simple

问题

通过阅读,能够得知没有Windows实现,或者Windows实现有问题,则需要其他方式。我们通过usb4java库的实现,在通过usb4java-javax的连接实现javax.usb

usb4java

通过快速开始了解到usb4java的两种api,底层API是针对libusb的,高层API是针对javax.usb
注意:必须添加javax.usb.properties

实施

开发环境为Windows

引用库

以下是Gradle的链式引用

compile group: 'javax.usb', name: 'usb-api', version: '1.0.2'	compile group: 'org.usb4java', name: 'usb4java', version: '1.2.0'	compile group: 'org.usb4java', name: 'usb4java-javax', version: '1.2.0'

配置文件

在Java项目下添加配置文件,路径为src\resources\javax.usb.properties

# src\resources\javax.usb.propertiesjavax.usb.services = org.usb4java.javax.Services

测试代码

package org.acifve.previz.broadcastserver.hid;import org.apache.commons.lang3.builder.ReflectionToStringBuilder;import org.junit.Test;import javax.usb.*;import java.util.ArrayList;import java.util.List;import static org.junit.Assert.*;public class UsbHIDSenderTest {    @Test    public void getUsbs() throws UsbException {        UsbServices usbServices = UsbHostManager.getUsbServices();        UsbHub usbHub = usbServices.getRootUsbHub();        List
usbDevices = getAllUsbDevices(usbHub); for (UsbDevice usbDevice : usbDevices) { System.out.println(ReflectionToStringBuilder.toString(usbDevice)); } } public static List getAllUsbDevices(UsbDevice usbDevice) { List list = new ArrayList(); list.add(usbDevice); /* this is just normal recursion. Nothing special. */ if (usbDevice.isUsbHub()) { List devices = ((UsbHub)usbDevice).getAttachedUsbDevices(); for (int i=0; i

输出

org.usb4java.javax.RootHub@7dc36524[configurations=[org.usb4java.javax.RootHubConfiguration@3cb5cdba],descriptor=Device Descriptor:  bLength                 18  bDescriptorType          1  bcdUSB                1.01  bDeviceClass             9 Hub  bDeviceSubClass          0  bDeviceProtocol          0  bMaxPacketSize0          8  idVendor            0xffff  idProduct           0xffff  bcdDevice             0.00  iManufacturer            1  iProduct                 2  iSerial                  3  bNumConfigurations       1,listeners=org.usb4java.javax.DeviceListenerList@d041cf,rootPorts=org.usb4java.javax.Ports@129a8472]org.usb4java.javax.NonHub@1b0375b3[manager=org.usb4java.javax.DeviceManager@2752f6e2,id=Bus 001 Device 005: ID 138a:0090,parentId=Bus 001 Device 001: ID 8086:9d2f,speed=2,configurations=[USB configuration 01],configMapping={1=USB configuration 01},listeners=org.usb4java.javax.DeviceListenerList@1cd072a9,handle=
,activeConfigurationNumber=1,claimedInterfaceNumbers=[],port=org.usb4java.javax.Port@7c75222b,queue=org.usb4java.javax.ControlIrpQueue@4c203ea1,detachedKernelDriver=false]org.usb4java.javax.NonHub@27f674d[manager=org.usb4java.javax.DeviceManager@2752f6e2,id=Bus 001 Device 002: ID 17ef:6039,parentId=Bus 001 Device 001: ID 8086:9d2f,speed=2,configurations=[USB configuration 01],configMapping={1=USB configuration 01},listeners=org.usb4java.javax.DeviceListenerList@48140564,handle=
,activeConfigurationNumber=1,claimedInterfaceNumbers=[],port=org.usb4java.javax.Port@58ceff1,queue=org.usb4java.javax.ControlIrpQueue@7c30a502,detachedKernelDriver=false]org.usb4java.javax.NonHub@49e4cb85[manager=org.usb4java.javax.DeviceManager@2752f6e2,id=Bus 001 Device 004: ID 04f2:b5c1,parentId=Bus 001 Device 001: ID 8086:9d2f,speed=3,configurations=[USB configuration 01],configMapping={1=USB configuration 01},listeners=org.usb4java.javax.DeviceListenerList@43a25848,handle=
,activeConfigurationNumber=1,claimedInterfaceNumbers=[],port=org.usb4java.javax.Port@3ac3fd8b,queue=org.usb4java.javax.ControlIrpQueue@5594a1b5,detachedKernelDriver=false]org.usb4java.javax.NonHub@6a5fc7f7[manager=org.usb4java.javax.DeviceManager@2752f6e2,id=Bus 001 Device 003: ID 8087:0a2b,parentId=Bus 001 Device 001: ID 8086:9d2f,speed=2,configurations=[USB configuration 01],configMapping={1=USB configuration 01},listeners=org.usb4java.javax.DeviceListenerList@1e643faf,handle=
,activeConfigurationNumber=1,claimedInterfaceNumbers=[],port=org.usb4java.javax.Port@6e8dacdf,queue=org.usb4java.javax.ControlIrpQueue@7a79be86,detachedKernelDriver=false]org.usb4java.javax.NonHub@34ce8af7[manager=org.usb4java.javax.DeviceManager@2752f6e2,id=Bus 001 Device 009: ID 28de:2022,parentId=Bus 001 Device 001: ID 8086:9d2f,speed=2,configurations=[USB configuration 01],configMapping={1=USB configuration 01},listeners=org.usb4java.javax.DeviceListenerList@880ec60,handle=
,activeConfigurationNumber=1,claimedInterfaceNumbers=[],port=org.usb4java.javax.Port@3f3afe78,queue=org.usb4java.javax.ControlIrpQueue@7f63425a,detachedKernelDriver=false]

附录

转载于:https://my.oschina.net/hava/blog/1577447

你可能感兴趣的文章
邻居子系统
查看>>
【转】一个程序员眼中的价值
查看>>
Python删除指定目录下的过期文件
查看>>
Linux Mint下Kindle Fire调试android程序
查看>>
自定义Background
查看>>
git笔记
查看>>
Android开源中国客户端学习 配置文件读写 以及其他一些工具类 <13>
查看>>
国外的opencv识别文档
查看>>
java获取指定字符串的下一个
查看>>
多行数据提交到Struts的ActionForm的List属性中
查看>>
理解RESTful架构
查看>>
Linux自动压缩备份目录文件与恢复
查看>>
Android 图片相关整理
查看>>
Spring实战 (二) Spring2.5/3.0新特性及XML配置文件命名空间介绍
查看>>
创建一个Hello World(React),组件的作用
查看>>
java中的context
查看>>
Spring源码阅读——3
查看>>
使用ZXing生成可供手机识别的二维码
查看>>
【原创】modb 开发之需求和总体设计
查看>>
mysql explain type连接类型示例
查看>>