将usb标签与usbDevice usb4java相关联

时间:2014-01-19 18:06:23

标签: java usb libusb

我必须知道特定USB设备的产品ID和供应商ID 我可以检索所有USB设备ID,但我不知道如何将它们与自己的标签关联(“F:”)。 这是我找到USB设备ID的代码:

List perepheriques = hub.getAttachedUsbDevices();
Iterator iterator = perepheriques.iterator();
while (iterator.hasNext()) {
  UsbDevice perepherique = (UsbDevice) iterator.next();
  perepherique.getUsbDeviceDescriptor();
  System.out.println(perepherique);  
}

1 个答案:

答案 0 :(得分:0)

您似乎尝试将USB记忆棒连接到Windows操作系统。我建议,迭代所有USB设备并检查,如果" USB类"是一根棍子(大容量存储,8级)(see here)。

您介意向我们提供有关您项目的更多详细信息吗?

代码段

这种代码的和平找到了附加的大容量存储设备。它没有经过充分测试或评论。

import java.util.List;

import javax.usb.UsbConfiguration;
import javax.usb.UsbDevice;
import javax.usb.UsbHostManager;
import javax.usb.UsbHub;
import javax.usb.UsbInterface;
import javax.usb.UsbServices;

public class USBHighLevel {

public static void main(String[] args) throws Exception {
    UsbServices services = UsbHostManager.getUsbServices();
    UsbDevice usbDevice = findDevices(services.getRootUsbHub());
    System.out.println("Device=" + usbDevice);
}

private static UsbDevice findDevices(UsbHub node) {
    for (UsbDevice usbDevice: (List<UsbDevice>) node.getAttachedUsbDevices()) {
        if (usbDevice.isUsbHub()) {
            UsbDevice tmp =  findDevices((UsbHub) usbDevice);
            if(tmp != null) {
                return tmp;
            }
        } else {
            if(matchesUSBClassType(usbDevice, (byte) 8)) {
                return usbDevice;
            }
        }
    }
    return null;
}

private static boolean matchesUSBClassType(UsbDevice usbDevice, byte usbClassType) {
     boolean matchingType = false;

     UsbConfiguration config = usbDevice.getActiveUsbConfiguration();
     for (UsbInterface iface: (List<UsbInterface>) config.getUsbInterfaces()) {
         System.out.println(iface.getUsbInterfaceDescriptor().bInterfaceClass());
        if(iface.getUsbInterfaceDescriptor().bInterfaceClass() == usbClassType) {
            matchingType = true;
            break;
        }
     }

     return matchingType;
}

}

有用的链接

USB4Java HighLevel API
USB4Java LowLevel API
libusb-1.0 Project Homepage
关于Java.net

的精彩概述