我使用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);
}
如何解决此错误?
答案 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);}}