获取错误java.io.IOException:参数不正确

时间:2013-10-06 15:44:51

标签: java

我使用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 :(得分:0)

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

by[0] = 0;

如果我通过

dev.write(by);

正常工作。

答案 1 :(得分:-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);}}