Я разрабатываю приложения для Android для получения данных от Arduino.
Я собираю данные о влажности, температуре и расстоянии от Arduino и передаю их в приложения для Android с помощью HC-06. Я хотел бы отобразить значение каждого из данных в различных TextView. Вот мой код:
Adruino:
...
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
...
distance = duration*(speedofsound/10000)/2;
BT.print("h");
BT.print(humidity);
BT.print("t");
BT.print(temperature);
BT.print("d");
BT.print(distance);
BT.print("e");
Android Studio:
...
String humidity, temperature, distance;
...
TextView textView,textView2,textView3;
...
textView = (TextView) findViewById(R.id.textView);
textView2 = (TextView) findViewById(R.id.textView2);
textView3 = (TextView) findViewById(R.id.textView3);
void beginListenForData()
{
final Handler handler = new Handler();
stopThread = false;
buffer = new byte[1024];
Thread thread = new Thread(new Runnable()
{
public void run()
{
while(!Thread.currentThread().isInterrupted() && !stopThread)
{
try
{
int byteCount = inputStream.available();
if(byteCount > 0)
{
byte[] rawBytes = new byte[byteCount];
inputStream.read(rawBytes);
final String string=new String(rawBytes,"UTF-8");
handler.post(new Runnable() {
public void run()
{
//textView.append(string);
humidity=string.substring(string.indexOf("h")+1,string.indexOf("t"));
temperature=string.substring(string.indexOf("t")+1,string.indexOf("d"));
distance=string.substring(string.indexOf("d")+1,string.indexOf("e"));
textView.setText(humidity);
textView2.setText(temperature);
textView3.setText(distance);
}
});
}
}
catch (IOException ex)
{
stopThread = true;
}
}
}
});
thread.start();
}
Произошла ошибка и приложение остановилось. Может ли кто-нибудь помочь мне решить эту проблему?