Получить ошибку java.io.IOException: параметр неверен

Я использую hidapi-jni.dll/hidapi-jni.so и записываю программу на Java для чтения и записи данных на свое устройство. Мое устройство определено как HID-устройство. Мой код очень хорошо работает на Linux (Debian 7.1), и я могу читать и записывать данные с/на устройство. Но в Windows (Windows 7 и XP) я могу читать только данные, а когда пытаюсь написать, я получаю эту ошибку:

java.io.IOException: The parameter is incorrect.

Одна часть метода Write:

try {
 HIDManager hid_mgr = HIDManager.getInstance();
 dev = hid_mgr.openById(VENDOR_ID, PRODUCT_ID, null);
 byte[] by = new byte[4];
 by[0] = (byte) 1;
 by[1] = (byte) 2;
 by[2] = (byte) 3;
 by[3] = (byte) 4;
 dev.write(by);
 } catch (IOException | NullPointerException ne) {
 System.err.println(ne);
 }

Как я могу исправить эту ошибку?

2 ответа

Я нашел решение для своей ошибки. в окнах первый байт будет 0. тогда мой код:

by[0] = 0;

и если я напишу через

dev.write(by);

работайте правильно.


@Hassan Amiri: В основном Linux конвертирует адреса в значения и записывает. Но серьезно делает Windows. Используйте цикл Foreach для массива ur и после этого записывайте данные.

try {
 HIDManager hid_mgr = HIDManager.getInstance();
 dev = hid_mgr.openById(VENDOR_ID, PRODUCT_ID, null);
 byte[] by = new byte[4];
 by[0] = (byte) 1;
 by[1] = (byte) 2;
 by[2] = (byte) 3;
 by[3] = (byte) 4;
 for(byte b : by){ dev.write(b);}}

licensed under cc by-sa 3.0 with attribution.