Я пишу код Java с usb4java для связи с измерительным прибором, подключенным через USB, с помощью управляющих передач (Windows). Данные передаются с использованием ByteBuffer, заполненного шестнадцатеричными значениями, ожидаемыми устройством.Можно ли отправить 0xFF в массив байтов с Java на USB-устройство?
Вот соответствующий фрагмент кода:
byte[] query = new byte[]{ 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
ByteBuffer buffer = ByteBuffer.allocateDirect(8);
buffer.put(query);
buffer.rewind();
int transferred = LibUsb.controlTransfer(handle, (byte)0x21, (byte)0x1, (short)0, (short)0, buffer, 1000);
код работает отлично, но всякий раз, когда какое-либо значение в буфере над 0x7F (127), неправильное число передается, и устройство не реагирует должным образом ,
Я явно нажимаю предел подписанного байтового типа, используемого на Java. Но есть ли способ обойти это и получить правильное значение для устройства?
Это были очень тяжелые дни, и, как выяснилось, проблема была решена, я ударил стену с ограничением размера байта. Заранее благодарим за любые предложения!