Я отправляю строки с arduino на Android по bluetooth, когда строки поступают в приложение, я подставляю подстроки, чтобы получить нужные мне данные. Тем не менее, строки идут неполными, они разрезаются, и поэтому я не могу получить подстроки, которые мне нужны. Например: С Arduino Я посылаю строки этого стиля:Почему я не могу получить полную строку от Arduino до Android с помощью Bluetooth?
#ecg{21304(2.41~
При отправке нескольких строк на Arduino последовательный вид монитора, как это:
#ecg{0(137~
#ecg{1(136~
#ecg{3(162~
#ecg{5(221~
#ecg{6(282~
#ecg{8(296~
#ecg{10(259~
#ecg{12(208~
#ecg{13(166~
#ecg{15(141~
#ecg{17(132~
#ecg{19(144~
#ecg{20(194~
#ecg{22(262~
#ecg{24(296~
#ecg{26(267~
#ecg{27(217~
#ecg{29(173~
#ecg{31(143~
Но когда они прибывают в Android это прибудет вырезать, что-то вроде этого:
I/System.out: ReadMessage: #ecg{6147 end string
I/System.out: ReadMessage: 0(335~
I/System.out: #ecg{61472(335~
I/System.out: #ecg{61474(273~
I/System.out: #ecg{61476(230~
I/System.out: #ecg{61478(252~
I/System.out: #ecg{61480(307~
I/System.out: #ecg{61483(307~
I/System.out: #ecg{61485(279~
I/System.out: #ecg{61487(306~
I/System.out: #ecg{61488(347~
I/System.out: #ecg{61490(313~
I/System.out: #ecg{61492(249~
I/System.out: #ecg{61494(231~
I/System.out: #ecg{61496(277~
I/System.out: #ecg{61498(320~
I/System.out: #ecg{61500 end string
I/System.out: ReadMessage: (290~
I/System.out: #ecg{61502(284~
I/System.out: #ecg{61504(328~
I/System.out: #ecg{61506(343~
I/System.out: #ecg{61507(283~
I/System.out: #ecg{61509(237~
I/System.out: #ecg{61511(246~
I/System.out: #ecg{61513(303~
I/System.out: #ecg{61515(311~
I/System.out: #ecg{61517(280~
I/System.out: #ecg{61519(301~
I/System.out: #ecg{61521(346~
I/System.out: #ecg{61523(321~
I/System.out: #ecg{61524(258~
I/System.out: #ecg{61527(230~
I/System.out: #ecg{61529(end string
I/System.out: ReadMessage: 269~
I/System.out: #ecg{61531(318~
Обратите внимание, что с самого начала они не поступающими в полных м ost случаев.
Я хочу, чтобы получить строки, подобные этим:
I/System.out: ReadMessage: #ecg{61502(284~ end string
I/System.out: ReadMessage: #ecg{61502(284~ end string
I/System.out: ReadMessage: #ecg{61504(328~ end string
I/System.out: ReadMessage: #ecg{61506(343~ end string
I/System.out: ReadMessage: #ecg{61507(283~ end string
И поэтому я не могу создать подстроки, что мне нужно. Знаете ли вы, почему струны вырезаны и не полны, когда я отправляю их от ардуино? Есть ли способ решить эту проблему?
Может быть, что получение неполных строк для передачи скорости, которое я использовал в коде Arduino (115200)? Я проверил загрузки программы на другой Arduino, который отправляет данные через Bluetooth в то же приложение, и они поступают хорошо, разница в том, что оно посылает данные на 9600
Это код Arduino, который я посылаю:
#include <eHealth.h>
String CadenaUno="";
String CadenaDos="";
String CadenaTres="";
String CadenaFinal="";
// The setup routine runs once when you press reset:
void setup() {
Serial.flush();
Serial.begin(115200);
// Serial.begin(9600); //No muestra nada en android studio a esta velocidad
}
// The loop routine runs over and over again forever:
void loop() {
long currentMillis = millis();
float floatecgValue = eHealth.getECG();
int valueECG = floatecgValue*100;
CadenaUno="#ecg{";
CadenaDos="(";
CadenaTres="~";
CadenaFinal=CadenaUno+currentMillis+CadenaDos+valueECG+CadenaTres;
Serial.println(CadenaFinal);
delay(1);
}
Это та часть, где я проверить данные, прибывающие из Arduino по Bluetooth
while (mState == STATE_CONNECTED) {
try {
StringBuilder recDataString = new StringBuilder();
String paquete = "";
String outputText="";
byte[] buffer = new byte[256];
bytes = mmInStream.read(buffer);
mDataParse.Add(buffer, bytes);
String readMessage = new String(buffer, 0, bytes);
System.out.println("ReadMessage: "+readMessage+" end string");
Пожалуйста Guide.