Почему метод чтения Bluetooth делит данные на части? - PullRequest
0 голосов
/ 06 января 2020

Я реализую этот метод получения данных по Bluetooth по этой ссылке здесь , в частности, в классе Serial Socket у нас есть метод:


   void write(byte[] data) throws IOException {
       if (!connected)
           throw new IOException("not connected");
       socket.getOutputStream().write(data);

   }

   @Override
   public void run() { // connect & read
       try {
           socket = device.createRfcommSocketToServiceRecord(BLUETOOTH_SPP);
           socket.connect();
           if(listener != null)
               listener.onSerialConnect();
       } catch (Exception e) {
           if(listener != null)
               listener.onSerialConnectError(e);
           try {
               socket.close();
           } catch (Exception ignored) {
           }
           socket = null;
           return;
       }
       connected = true;
       try {
           byte[] buffer = new byte[1024];
           int len;
           //noinspection InfiniteLoopStatement
           while (true) {

               len = socket.getInputStream().read(buffer);
               byte[] data = Arrays.copyOf(buffer, len);
               if(listener != null)
                   listener.onSerialRead(data);

           }
       } catch (Exception e) {
           connected = false;
           if (listener != null)
               listener.onSerialIoError(e);
           try {
               socket.close();
           } catch (Exception ignored) {
           }
           socket = null;
       }
   }

Где метод run разделяется данные следующим образом: если вы отправляете «Hello world», он делает «H», а затем возвращается к «ello World», всегда отделяя первый di git от других, мне нужны полные данные, потому что если вы используете Метод setText для отображения данных будет отображать только то, что будет позже, а метод добавления у меня не работает.

...