在Arduino的BLE协议[心率]中通过RR

时间:2017-12-26 07:42:39

标签: c bluetooth arduino

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>



byte flags = 0b00011110;
byte bpm;
byte rr;
byte heart[8] = { 0b00011110, 60, 60, 60, 60 , 60, 60, 60};
byte hrmPos[1] = {2};

bool _BLEClientConnected = false;

#define heartRateService BLEUUID((uint16_t)0x180D)
BLECharacteristic heartRateMeasurementCharacteristics(BLEUUID((uint16_t)0x2A37), BLECharacteristic::PROPERTY_NOTIFY);
BLECharacteristic sensorPositionCharacteristic(BLEUUID((uint16_t)0x2A38), BLECharacteristic::PROPERTY_READ);
BLEDescriptor heartRateDescriptor(BLEUUID((uint16_t)0x2901));
BLEDescriptor sensorPositionDescriptor(BLEUUID((uint16_t)0x2901));

class MyServerCallbacks : public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      _BLEClientConnected = true;
    };

    void onDisconnect(BLEServer* pServer) {
      _BLEClientConnected = false;
    }
};

void InitBLE() {
  BLEDevice::init("Sensor X");
  // Create the BLE Server
  BLEServer *pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  // Create the BLE Service
  BLEService *pHeart = pServer->createService(heartRateService);

  pHeart->addCharacteristic(&heartRateMeasurementCharacteristics);
  heartRateMeasurementCharacteristics.addDescriptor(&heartRateDescriptor);
  heartRateMeasurementCharacteristics.addDescriptor(new BLE2902());

  pHeart->addCharacteristic(&sensorPositionCharacteristic);
  sensorPositionCharacteristic.addDescriptor(&sensorPositionDescriptor);

  pServer->getAdvertising()->addServiceUUID(heartRateService);

  pHeart->start();
  // Start advertising
  pServer->getAdvertising()->start();
}


void setup() {
  Serial.begin(115200);
  Serial.println("Start");
  InitBLE();
  bpm = 1;
  rr = 800;
}

void loop() {
  // put your main code here, to run repeatedly:

  heart[1] = (byte)bpm;
  int energyUsed = 3000;
  heart[3] = energyUsed / 256;
  heart[6] = (byte)bpm;
  heart[2] = energyUsed - (heart[2] * 256);
  Serial.println(bpm);
  Serial.println(rr);

  heartRateMeasurementCharacteristics.setValue(heart, 8);
  heartRateMeasurementCharacteristics.notify();

  sensorPositionCharacteristic.setValue(hrmPos, 1);
  rr++;
  bpm++;
  delay(2000);
}

我有上面的代码 - 我一直在看这个here,但我无法弄清楚如何通过RR传递BLE数据。我根据显示hereBLE规范设置了标记。但每当我使用应用程序查看数据“HRV Logger”时,它表示我没有传输RR数据。我认为我所要做的就是传递heart [6]数据,这将显示为RR。由于我没有连接任何传感器,因此我传递了虚拟信息。帮助会有所帮助,确定如何传递RR数据,谢谢! (为了将来的参考,我使用Sparkfun ESP32,但这不应该影响解决问题,因为它与协议有关)

0 个答案:

没有答案