这真的是通过BLE发送数据的正确方法吗? (以Adafruit示例为参考)

时间:2018-08-05 15:43:31

标签: bluetooth bluetooth-lowenergy gatt adafruit nrf51

我必须与Adafruit BLE SPI朋友尽快通过BLE发送数据。我对我想使用的GATT服务有所了解。在adafruit的heartratemonitor.ino BLE示例中,我对它们发送数据的方式感到困惑。看来他们只是使用AT + GATTCHAR =命令更新了心率测量特性。然后,只需从其Bluefruit应用程序中读取更新。这种发送数据的方法似乎非常缓慢,而且效率极低。我已经在Adafruit BLE library中寻找了BLE SPI的朋友,但我似乎找不到其他合法的方式来更新/发送数据。我是否在我的理解范围内缺少某些东西,或者这不是发送数据的最佳库?

注意:我必须使用SPI从缓冲区读取数据,然后通过蓝牙发送数据。考虑只使用SPI库(难度较大)和任何其他北欧或nRF51822库,但学习曲线似乎非常陡峭。

void loop(void)
{
  int heart_rate = random(50, 100);

  Serial.print(F("Updating HRM value to "));
  Serial.print(heart_rate);
  Serial.println(F(" BPM"));

  /* Command is sent when \n (\r) or println is called */
  /* AT+GATTCHAR=CharacteristicID,value */
  ble.print( F("AT+GATTCHAR=") );
  ble.print( hrmMeasureCharId );
  ble.print( F(",00-") );
  ble.println(heart_rate, HEX);

  /* Check if command executed OK */
  if ( !ble.waitForOK() )
  {
    Serial.println(F("Failed to get response!"));
  }

  /* Delay before next measurement update */
  delay(1000);
}

1 个答案:

答案 0 :(得分:0)

之所以变慢是因为循环结束时的延迟。

  /* Delay before next measurement update */
  delay(1000);

这是一种要求Bluefruit等待一秒钟(1000毫秒)然后再次执行的方法。

减少该数量应加快循环。