Я читаю ввод с клавиатуры USB (сканер QR-кода), используя usb4java.
Мой фрагмент кода выглядит так:
byte[] data = new byte[16];
UsbPipe usbPipe = usbEndpoint.getUsbPipe();
if (usbPipe != null) {
if (!usbPipe.isOpen()) {
usbPipe.open();
}
if (usbPipe.isOpen()) {
UsbIrp usbIrp = usbPipe.createUsbIrp();
usbIrp.setData(data);
У меня есть два вопроса:
1] При нажатии A данные массива байтов равны 2,0,0,0,0,0,0,0,2,0,4,0,0,0,0,0
При нажатии AB данные байтовых массивов составляют 2,0,0,0,0,0,0,0,2,0,4,0,0,0,0,0,2,0,5,0,0, 0,0,0
Как преобразовать его в символ в Java? то есть получить A или AB после преобразования.
2] В настоящее время я передаю фиксированный размер байтового массива в приведенном выше фрагменте кода. Например, если я ожидаю 1 символ, я передаю 16 как размер байтового массива, для 2 символов 24 как размер и так далее. Есть ли другое элегантное решение для придания ему динамики?
PS: Мой фрагментный преобразователь байтового массива:
StringBuffer sb = new StringBuffer();
for (byte b : data) {
sb.append(b);
sb.append(",");
}
String byteString = sb.toString();
return byteString;
Спасибо за любую помощь
РЕДАКТИРОВАТЬ 1: Полный исходный код здесь: http://tpcg.io/zt3WfM