我尝试从USB扫描仪接收数据。为此,我使用bulkTransfer。这是我的代码:
byte[] receivedTag = connector.receive(312);
String tag = null;
if (receivedTag != null) {
long tagValue = ByteBuffer.wrap(receivedTag).getLong();
tag = Long.toHexString(tagValue);
if (tag.contains("DAAD046F62ADA900")) {
Toast.makeText(getContext(), "Koniec skanowania" + tag, Toast.LENGTH_SHORT).show();
} else if (!tag.contains("DAAD046F62ADA900")) {
String tag2 = bytesToHex(receivedTag);
String[]times = tag2.split("da ad 0a 6f 73");
Log.e(TAG, "onClick: " + times[0]);
Toast.makeText(getContext(), "" + tag2, Toast.LENGTH_SHORT).show();
}
它有效,但我只获得部分数据。例如 - 设备发送如下字节数组:
String workTime =
"da ad 0a 6f 73 00 00 00 00 00 00 44 a4 " +
"da ad 0a 6f 73 01 00 00 00 00 00 45 75 " +
"da ad 0a 6f 73 02 00 00 00 00 00 45 46 " +
"da ad 0a 6f 73 03 00 00 00 00 00 44 97 " +
"da ad 0a 6f 73 04 00 00 00 00 00 45 20 " +
"da ad 0a 6f 73 05 00 00 00 00 00 44 f1 " +
"da ad 0a 6f 73 06 00 00 00 00 00 44 c2 " +
"da ad 0a 6f 73 07 00 00 00 00 00 45 13 " +
"da ad 0a 6f 73 08 00 00 00 00 00 45 ec " +
"da ad 0a 6f 73 09 00 00 00 00 00 44 3d " +
"da ad 0a 6f 73 0a 00 00 00 00 00 44 0e " +
"da ad 0a 6f 73 0b 00 00 00 00 00 45 df " +
"da ad 0a 6f 73 0c 00 00 00 00 00 44 68 " +
"da ad 0a 6f 73 0d 00 00 00 00 00 45 b9 " +
"da ad 0a 6f 73 0e 00 00 00 00 00 45 8a" +
"da ad 0a 6f 73 0f 00 00 00 00 00 44 5b" +
"da ad 0a 6f 73 10 00 00 00 00 00 46 34" +
"da ad 0a 6f 73 11 00 00 00 00 00 47 e5" +
"da ad 0a 6f 73 12 00 00 00 00 00 47 d6" +
"da ad 0a 6f 73 13 00 00 00 00 00 46 07" +
"da ad 0a 6f 73 14 00 00 00 00 00 47 b0" +
"da ad 0a 6f 73 15 00 00 00 00 00 46 61" +
"da ad 0a 6f 73 16 00 00 00 00 00 46 52" +
"da ad 0a 6f 73 17 00 00 00 00 00 47 83 "
;
但我这样收到:
String workTime =
"da ad 0a 6f 73 00 00 00 00 00 00 44 a4 " +
"da ad 0a 6f 73 01 00 00 00 00 00 45 75 " +
"da ad 0a 6f 73 02 00 00 00 00 00 45 46 " +
"da ad 0a 6f 73 03 00 00 00 00 00 44 97 " +
"da ad 0a 6f 73 04 00 00 00 00 00 45 20 " +
"da ad 0a 6f 73 05 00 00 00 00 00 44 f1 " +
"da ad 0a 6f 73 06 00 00 00 00 00 44 c2 " +
"da ad 0a 6f 73 07 00 00 00 00 00 45 13 " +
"da ad 0a 6f 73 08 00 00 00 00 00 45 ec " +
"da ad 0a 6f 73 09 00 00 00 00 00 44 3d " +
"da ad 0a 6f 73 0a 00 00 00 00 00 44 0e " +
"da ad 0a 6f 73 0b 00 00 00 00 00 45 df " +
"da ad 0a 6f 73 0c 00 00 00 00 00 44 68 " +
"da ad 0a 6f 73 0d 00 00 00 00 00 45 b9 " +
"da ad 0a 6f 73 0e 00 00 00 00 00 45 8a" +
"da ad 0a 6f 73 0f 00 00 00 00 00 44 5b" +
"da ad 0a 6f 73 10 00 00 00 00 00 46 34" +
"da ad 0a 6f 73 11 00 00 00 00 00 47 e5" +
"da ad 0a 6f 73 12 00 00 00 00 00 47 d6" +
"da ad 0a 6f 73 13 00 00 00 00 00 00 00" +
"00 00 00 00 00 00 00 00 00 00 00 00 00" +
"00 00 00 00 00 00 00 00 00 00 00 00 00" +
"00 00 00 00 00 00 00 00 00 00 00 00 00" +
"00 00 00 00 00 00 00 00 00 00 00 00 00 "
;
如您所见,最后一个字节是00。你知道为什么吗 ?缓冲区出了什么问题?