Я читаю данные с устройства usb в java с libusb api. Я могу записать данные на устройство, но я не могу читать данные с устройства. Я могу прочитать первую группу данных (размер: 1 байт), но когда я хочу прочитать вторую группу данных (размер: 2 байт), я получаю ошибку тайм-аута (ошибка USB 7: ошибка переноса управления: время ожидания операции).Чтение данных с устройства usb в libusb с помощью java (usb4java)
Мой код такой:
buffer = ByteBuffer.allocateDirect(1);
//03
LibUsb.controlTransfer(handle,(byte) (LibUsb.REQUEST_TYPE_VENDOR | LibUsb.ENDPOINT_IN), (byte) 0xdb, (short) 0, (short) 0, buffer, 0);
//00 04
buffer.rewind();
buffer = ByteBuffer.allocateDirect(2);
transferred = LibUsb.controlTransfer(handle,(byte) (LibUsb.REQUEST_TYPE_VENDOR | LibUsb.ENDPOINT_IN), (byte) 0xf0, (short) 0x1c30, (short) 0, buffer, 0);
if(transferred < 0){
throw new LibUsbException("Control Transfer Failed", transferred);
}
Я достиг этой передачи данных на языке C, но я должен сделать это в java. Пожалуйста, помогите мне.
Редактировать: Я меняю время ожидания, но никаких изменений в моем приложении не происходит.
Редактировать: Я могу читать 1 байт данных. Когда я хочу читать 2 байтовых данных, я получаю ошибку.
просто примечание к сайту, если вы выделили новый буфер, вам не нужно перематывать() старый буфер. Но лучше было бы использовать буфер повторно для повышения производительности. – eckes