Usb4java и 64-разрядная ОС Windows 7 Я получаю ошибку USB 8 или 12

Я пытаюсь заставить работать пакет usb4java. Я получаю базовое соединение, но когда я пытаюсь получить продукт, серийный номер или производителя, я получаю ошибку USB 12 или 8. Я думаю, что, возможно, перепутал библиотеки.

Я использую 64-разрядную ОС Win 7 Pro с пакетом обновления 1. Версия Eclipse: Luna Service Release 2 (4.4.2) Идентификатор сборки: 20150219-0600.
У меня есть следующие библиотеки:

Библиотеки, на которые ссылаются:

Код:

` импортировать java.io.; импортировать java.util.; импортировать javax.usb.*;

public class PrettyUSBDeviceLister 
{
    public static void main(String[] args) throws UnsupportedEncodingException,  UsbException
    {
        UsbServices services = UsbHostManager.getUsbServices();
        UsbHub root = services.getRootUsbHub();
        System.out.println(" USB Root Hub: ");
        listDevices(root);
    } // main

    public static void listDevices(UsbHub hub) 

    {
        String prod = "";
        String sn   = "";
        String man  = "";

        List<UsbDevice> devices = hub.getAttachedUsbDevices();
    Iterator<UsbDevice> iterator = devices.iterator();
        while ( iterator.hasNext())
        {
            UsbDevice device = iterator.next();

        if((device.isUsbHub())) 
            {
            System.out.println("HUB: ");
                listDevices((UsbHub)device);            
            }

            try {
                prod = device.getProductString();
            } catch (UnsupportedEncodingException e) {
                prod = "UEE";
            } catch (UsbException e) {
                String ts = e.getLocalizedMessage();
                System.out.println(" USB e L msg = "+ts);
                prod = "UsbException\n " + e.toString();
            } catch (UsbDisconnectedException e) {
                prod = "USBdis";
            }

            System.out.println("Product : "+prod);

            try {
                sn = device.getSerialNumberString();
            --similar to the above--
            }

            System.out.println("Serial #: "+sn);

            try {
                man = device.getManufacturerString();
            --similar to the above--
            }

            System.out.println("Manufact: "+man);
            System.out.println();
        }
        System.out.println(" ... end Hub ....");
    } // static void listdevices(UsbHub root)
} // class PrettyUSBDeviceLister 

` Я включил одну из следующих ошибок. Я получаю ошибку 8, 13 или NULL для всех вызовов для получения продукта, серийного номера или производителя,

Вывод программы:

USB Root Hub: 

USB e L msg = Ошибка USB 12: Не удается открыть устройство Шина 008 Устройство 002: ID 1058:1078: Операция не поддерживается или не реализована на этой платформе Продукт: UsbException Ошибка USB 12 Серийный номер: UsbException Ошибка USB 12 javax.usb.UsbPlatformException : Ошибка USB 12: Не удается открыть устройство. Шина 008. Устройство 002: ID 1058:1078: Операция не поддерживается или не реализована на этой платформе по адресу org.usb4java.javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39) по адресу org.usb4java. javax.AbstractDevice.open(AbstractDevice.java:226) на org.usb4java.javax.AbstractDevice.getLanguages(AbstractDevice.java:538) на org.usb4java.javax.AbstractDevice.getUsbStringDescriptor(AbstractDevice.java:507) на org.usb4java .javax.AbstractDevice.getString(AbstractDevice.java:526) в org.usb4java.javax.AbstractDevice.getManufacturerString(AbstractDevice.java:304) в PrettyUSBDeviceLister.listDevices(PrettyUSBDeviceLister.java:65) в PrettyUSBDeviceLister.main(PrettyUSBDeviceLister.java: 17) Производство t: UsbException Ошибка USB 12

USB e L msg = Ошибка USB 8: невозможно получить языки строковых дескрипторов: переполнение Продукт: UsbException Ошибка USB 8: серийный номер: null javax.usb.UsbPlatformException: ошибка USB 8: невозможно получить языки строковых дескрипторов: переполнение на org.usb4java .javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39) в org.usb4java.javax.AbstractDevice.getLanguages(AbstractDevice.java:544) в org.usb4java.javax.AbstractDevice.getUsbStringDescriptor(AbstractDevice.java:507) в org. usb4java.javax.AbstractDevice.getString(AbstractDevice.java:526) в org.usb4java.javax.AbstractDevice.getManufacturerString(AbstractDevice.java:304) в PrettyUSBDeviceLister.listDevices(PrettyUSBDeviceLister.java:65) в PrettyUSBDeviceLister.main(PrettyUSBDeviceLister.java :17) Изготовление: UsbException Ошибка USB 8:

Как избежать этого и получить прочитанные данные?
Спасибо за помощь, Клифф.


person cliff2310    schedule 01.05.2016    source источник
comment
Я не знаю, есть ли что-то не так с библиотеками, но в качестве примечания: концентраторы на самом деле не самые лучшие вещи для использования с libusb, потому что они строго регулируются ОС. Однажды один неисправный (или не поддерживаемый?) хаб в моей системе сделал libusb непригодным для использования. Мне пришлось удалить его, чтобы libusb снова заработал.   -  person dryman    schedule 04.05.2016
comment
Я думаю, что мои Libs в порядке. Я нашел другой способ сделать это, см. stackoverflow.com/questions/37674969/ Это должно работать, и я все еще хотел бы знать, что изнашивается или почему это не должно работать.   -  person cliff2310    schedule 17.06.2016
comment
Я отследил некоторую информацию об ошибке -8. Кажется, что LibUSB не совместим с HID-устройствами, вам нужно установить специальный драйвер. Я не смог это проверить.   -  person cliff2310    schedule 17.06.2016
comment
Да, в Windows вам нужно установить серверную часть, такую ​​как libusb-win32, libusbK или WinUSB. Я рекомендую Zadig для установки и создания драйверов. Но я все еще не получаю от концентратора того, что вы хотите, потому что я рекомендую вам не устанавливать libusb для концентратора, если это вообще возможно.   -  person dryman    schedule 17.06.2016
comment
@dryman Я скачал Zadig, но не использовал его. На данный момент я просто пытаюсь использовать USBlister, чтобы научиться общаться с USB-устройствами.   -  person cliff2310    schedule 18.06.2016
comment
Если вы хотите узнать, как оригинальное программное обеспечение взаимодействует с устройством, это правильный подход. Только если вы хотите начать общение с устройством самостоятельно, совместимый драйвер является обязательным в Windows.   -  person dryman    schedule 20.06.2016