使用同步方式发送BLE数据,使得加速度计数据可以按照同步的时间间隔传递,避免数据丢失和错位。以下是示例代码:
//设置同步时间间隔 #define DATA_SYNC_INTERVAL 1000 //1s //定义变量 static uint32_t last_sync_timestamp = 0;
//在BLE特征值被写入时调用 void ble_data_received_handler(uint8_t *data, uint16_t len) { //检查是否为同步信号 if (len == 1 && data[0] == SYNC_SIGNAL) { //SYNC_SIGNAL为预先定义的同步信号 //记录同步时间戳 last_sync_timestamp = millis(); return; } //否则为加速度计数据,检查是否需要同步 uint32_t current_timestamp = millis(); if (current_timestamp - last_sync_timestamp >= DATA_SYNC_INTERVAL) { //需要同步,发送同步信号 ble_write_characteristic(&ble_characteristic_sync, &SYNC_SIGNAL, 1); //等待BLE发送同步信号 delay(50); } //发送加速度计数据 ble_write_characteristic(&ble_characteristic_accelerometer, data, len); }
下一篇:BLE设备不响应命令