0 امتیاز
قبل در برنامه نویسی توسط (102 امتیاز)
ویرایش شده قبل توسط

برنامه ای را به زبان جاوا با استفاده از hidapi-jni برای ارتباط با یک سخت افزار که به صورت HID تعریف شده است نوشتم. با این برنامه در هر دو پلتفرم ویندوز و لینوکس میتوانم به سخت افزار مربوطه به خوبی متصل شده و اطلاعات ارسال شده از سخت افزار به سیستم را دریافت میکنم. مشکل اینجاست که در لینوکس اطلاعات ارسالی از سیستم به سخت افزار توسط سخت افزار دریافت شده و هنگامیکه همان کد در ویندوز اجرا شده و همان اطلاعات فرستاده میشود خطای

java.io.IOException: The parameter is incorrect

را دریافت میکنم.

        try {
            System.err.println("Go to write ...");
            byte[] by = new byte[5];
            by[0] = (byte) 0x01;
            by[1] = (byte) 0x01;
            by[2] = (byte) 0x02;
            by[3] = (byte) 0x03;
            by[4] = (byte) 0x04;
            System.err.println("Try to write ...");
            dev.write(by);
            System.err.println("Write finished ...");
        } catch (IOException | NullPointerException ne) {
            System.err.println(ne);
        }
قبل توسط (1.1هزار امتیاز)
میشه stack strace خطارو هم بزارید یا اینکه بیشتر توضیح بدین که بشه کمکتون کرد. ممنون.

1 پاسخ

+1 امتیاز
قبل توسط (102 امتیاز)
ویرایش شده قبل توسط

با سلام. مشکلم حل شد. این خطا که متاسفانه در فروم های متعددی مطرح شده ولی به آن جوابی داده نشده خوشبختانه با زیر و رو کردن دوباره مستندات libusb و hidapi-jni حل شد. مشکل اینجاست که در ویندوز بایت اول ارسالی به سخت افزار Report ID است و در حالتی که سخت افزار تنها Single report را ساپورت کند(که در مشکل من اینگونه است) باید مقدار بایت اول برابر صفر تنظیم شود. یعنی کد باید به این صورت اصلاح شود:

        try {
            System.err.println("Go to write ...");
            byte[] by = new byte[5];
            by[0] = 0;
            by[1] = 1;
            by[2] = 2;
            by[3] = 3;
            by[4] = 4;
            System.err.println("Try to write ...");
            dev.write(by);
            System.err.println("Write finished ...");
        } catch (IOException | NullPointerException ne) {
            System.err.println(ne);
        }
قبل توسط (102 امتیاز)
سلام جناب زرین فام. نتونستم جوابم رو ویرایش کنم. اگر لطف بفرمایید و جواب را ویرایش نمایید ممنون میشم. (درست کردن حالت کدها منظورمه.)
قبل توسط (1.1هزار امتیاز)
ویرایش شد. راهنمای استفاده از syntax highlight: https://javabyab.com/183

سوالات مشابه

0 امتیاز
0 پاسخ 280 بازدید
+1 امتیاز
1 پاسخ 695 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط SamiraGol (5 امتیاز)
0 امتیاز
0 پاسخ 299 بازدید
+1 امتیاز
1 پاسخ 334 بازدید
0 امتیاز
1 پاسخ 266 بازدید
0 امتیاز
1 پاسخ 225 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...