0

Java でプログラムを使用hidapi-jni.dll/hidapi-jni.soおよび作成して、デバイスのデータを読み書きします。私のデバイスは 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は正しい.. ur配列に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 に答える