JavaxパッケージとJavaのUSBユーティリティを使用して、USBハンドヘルドバーコードスキャナーからデータを読み取ろうとしています。デバイスを検出でき、バーコードを読み取ることができます。
ただし、結果は以下の形式のバイト配列です。3 番目のバイト配列位置に必要な元の数よりも 1 つ少ない数を示しています。キャリッジリターンも付けました。(ASCII 標準によると) 13 ではなく、キャリッジ リターンに 40 を返します。
HOneywell ハンドヘルド スキャナー xenon 1900 を使用しています。
何が問題なのか教えてください。
たとえば、必要な出力は 20131503000140300 で、受け取った出力は
[0, 0, 31, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 30, 0, 0, 0, 0, 0]
[0, 0, 32, 0, 0, 0, 0, 0]
[0, 0, 30, 0, 0, 0, 0, 0]
[0, 0, 34, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 32, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 30, 0, 0, 0, 0, 0]
[0, 0, 33, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 32, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 39, 0, 0, 0, 0, 0]
[0, 0, 40, 0, 0, 0, 0, 0]
スキャン済み
使用したサンプルコード
while (running) {
try {
length = usbPipe.syncSubmit(buffer);
} catch (UsbException uE) { }
for (int i = 0; i < length; i++) {
long scannedDigit = UsbUtil.unsignedLong(buffer[i]);
System.out.print(".long." + scannedDigit);
}
}