我正在通过HC-05蓝牙模块将传感器值从Arduino发送到Android。我收到的是值,但是我的文本视图中没有正确显示。
我正在使用2个传感器,它们的值是这样的(例如第一个传感器= 120,97,110等)
Sensor2的值是这样的(97,96,100等) 即价值正在发生变化。
现在我的Android代码是:
if (msg.what == handlerState) {
//if message is what we want
String readMessage = (String) msg.obj;
// msg.arg1 = bytes from connect thread
recDataString.append(readMessage);
//keep appending to string until ~
int endOfLineIndex = recDataString.indexOf("~");
// determine the end-of-line
if (endOfLineIndex > 0) {
// make sure there data before ~
String dataInPrint = recDataString.substring(0, endOfLineIndex);
// extract string
if (recDataString.charAt(0) == '#') {
//if it starts with # we know it is what we are looking for
String sensor0 = recDataString.substring(1, 3);
//get sensor value from string between indices 1-5
String sensor1 = recDataString.substring(4, 6);
//same again...
heart_rate.setText(sensor0);
// update the textviews with sensor values
temperature.setText(sensor1);
}
recDataString.delete(0, recDataString.length());
//clear all string data
dataInPrint = " ";
}
}
当我在传感器1上接收到如此(76)的2位数据和传感器2(97)上的2位数据时,它会正确显示数据。但是,如果值大于3位,则值不会正确显示,并且第一个textview的某些数字会出现在第二个textview上。我认为问题在于获取指数之间的数据。我该怎么办呢?请帮帮我。
抱歉我的英语不好,我不是母语人士。
答案 0 :(得分:0)
看起来您当前的子字符串语句每个传感器只能获得2位数的信息,因为该函数不包括最终索引。你目前只获得2,3和5,6的字符。考虑为每个传感器值发送一个单独的字符串,然后使用某个字符表示值的结尾,以便值的长度无关紧要。