Bluetooth читает входящий символ по одному - PullRequest
0 голосов
/ 05 июня 2018

У меня небольшой вопрос о связи по Bluetooth, я просматривал на YouTube учебное пособие о том, как создать приложение, которое взаимодействует с моим arduino.Все идет хорошо;однако моя единственная проблема заключается в том, что когда я проверяю поступающие данные от arduino в телефоне, строковые данные, кажется, проверяются случайным образом с использованием Stringbuilder, поэтому проверка иногда может работать или не работать.Полученные данные выглядят следующим образом: «B1234».Леттет B указывает, какие данные получены, следующие цифры - это сами данные, а точка указывает конец потока.Я новичок в Android, поэтому прошу прощения, если мой вопрос не так ясен, как должно быть. Вот java-код onReceive для BluetoothConnectionService:

byte [] buffer = new byte [1024];
int bytes;
//Keep listening to the InputStream until an exception occurs
while(true) {
    try { 
        bytes mainstream.read(buffer);
        String incomingMessage = new String (buffer, 0, bytes);
        Intent incomingMessageIntent = new Intent ("incomingMessage");
        incomingMessageIntent.putExtra ("theMessage", incomingMessage);
        LocalBroadcastManager.getInstance (mContext).sendBroadcast(incomingMessageIntent);
    }
    catch (Exception e) {
        break;
    }
}

А вот полученный java-код в MainActivity:

publix final BroadcastReceiver mBroadcastReceiver5 = new BroadcastReceiver () {
    public void onReceive(Context context, Intent intent) {
        final String text = intent.getStringExtra ("theMessage");
        messages.append(text); //Append StringBuilder
        FragmentData.RXData.setText (messages);
        messages.setLength(0); 
    }
}
...