接收从蓝牙hc05到Android的传感器值

时间:2017-09-01 07:31:06

标签: java android bluetooth arduino

我正在通过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上。我认为问题在于获取指数之间的数据。我该怎么办呢?请帮帮我。

抱歉我的英语不好,我不是母语人士。

1 个答案:

答案 0 :(得分:0)

看起来您当前的子字符串语句每个传感器只能获得2位数的信息,因为该函数不包括最终索引。你目前只获得2,3和5,6的字符。考虑为每个传感器值发送一个单独的字符串,然后使用某个字符表示值的结尾,以便值的长度无关紧要。