Android usb bulkTransfer - 设备无法接收整个数据

时间:2016-08-29 09:07:21

标签: android usb

我尝试从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。你知道为什么吗 ?缓冲区出了什么问题?

0 个答案:

没有答案