0

我使用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);
     }

我该如何解决这个错误?

4

2 回答 2

0

我找到了我的错误的解决方案。在 Windows 中,第一个字节将为 0。那么我的代码是:

by[0] = 0;

如果我写通过

dev.write(by);

正常工作。

于 2013-10-06T17:15:59.403 回答
-2

@Hassan Amiri:基本上Linux将地址转换为值并写入但严重的是windows确实正确..对你的数组使用Foreach循环,然后写入数据。

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);}}
于 2013-10-06T16:24:09.617 回答