Arduino ESP32蓝牙接收整个字符串
创始人
2024-09-12 12:30:14
0

下面是一个使用Arduino ESP32来接收整个字符串的示例代码:

#include 
#include 
#include 

BLEServer* pServer = NULL;
BLECharacteristic* pCharacteristic = NULL;
bool deviceConnected = false;
bool oldDeviceConnected = false;
String receivedString = "";

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

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

void setup() {
  Serial.begin(115200);

  BLEDevice::init("ESP32");
  pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  BLEService *pService = pServer->createService(BLEUUID((uint16_t)0x180D));

  pCharacteristic = pService->createCharacteristic(
                      BLEUUID((uint16_t)0x2A37),
                      BLECharacteristic::PROPERTY_READ |
                      BLECharacteristic::PROPERTY_NOTIFY
                    );

  pCharacteristic->addDescriptor(new BLE2902());

  pService->start();

  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(BLEUUID((uint16_t)0x180D));
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);
  pAdvertising->setMinPreferred(0x12);
  BLEDevice::startAdvertising();
}

void loop() {
  if (deviceConnected) {
    if (!oldDeviceConnected) {
      delay(500);
      pCharacteristic->setValue("Connected");
      pCharacteristic->notify();
      oldDeviceConnected = true;
    }

    if (pCharacteristic->written()) {
      receivedString = pCharacteristic->getValue().c_str();
      Serial.println("Received: " + receivedString);
      pCharacteristic->setValue("Data received");
      pCharacteristic->notify();
    }
  } else {
    if (oldDeviceConnected) {
      delay(500);
      pCharacteristic->setValue("Disconnected");
      pCharacteristic->notify();
      oldDeviceConnected = false;
    }
  }
  delay(10);
}

这个示例代码使用了ESP32的蓝牙库来创建一个BLE服务器。在setup()函数中,我们初始化了蓝牙设备,创建了一个BLE服务器和一个BLE服务,并将服务添加到服务器中。然后我们创建了一个特征值,并为该特征值添加了一个描述符。接下来,我们开始广播蓝牙服务。

loop()函数中,我们检查是否有设备连接到了蓝牙服务器。如果有设备连接,我们检查是否有数据被写入了特征值。如果有数据被写入,我们将接收到的字符串存储在receivedString变量中,并打印出来。然后我们给特征值设置一个回执,并通知设备。

如果没有设备连接,我们检查上一次是否有设备连接,如果有,我们发送一个断开连接的回执,并通知设备。

请注意,此示例代码仅接收整个字符串并打印出来,如果你有其他要求,你可能需要根据你的需要进行修改。

相关内容

热门资讯

第1个线上!wpk透视辅助可测... 第1个线上!wpk透视辅助可测试真的(微扑克俱乐部)原来真的有挂(发现有挂)-哔哩哔哩;亲,其实确实...
6口控制!心悦辅助神器安卓版(... 1、6口控制!心悦辅助神器安卓版(透视)太坑了原来真的有挂(果真有挂)-哔哩哔哩;详细教程。2、心悦...
三个系统规律!德扑之星软件透明... 1、三个系统规律!德扑之星软件透明有人买(开房间教程)透视辅助(有挂方略)-哔哩哔哩;详细教程。2、...
4ai插件(来玩app)外挂透... 4ai插件(来玩app)外挂透明挂辅助APP(透视)介绍教程(有挂方法)-哔哩哔哩来玩app平台为新...
第七个合作!wpk ai检测(... 第七个合作!wpk ai检测(wepoke智能ai)其实真的有挂(真的有挂)-哔哩哔哩;精心打造了俱...
第一最新!闽游十三水辅助器是什... 第一最新!闽游十三水辅助器是什么样的(透视)太坑了其实真的有挂(确实有挂)-哔哩哔哩1、超多福利:超...
五机器人(wpk德州俱乐部)外... 五机器人(wpk德州俱乐部)外挂透明挂辅助工具(透视)力荐教程(有挂讲解)-哔哩哔哩;1分钟了解详细...
第7个德州扑克!德扑之星软件模... 这是一款非常优秀的德州ai人工智能 ia辅助检测软件,能够让你了解到德州ai人工智能中牌率当中全部隐...
两个代打!wpk代理合作(德州... 两个代打!wpk代理合作(德州职业代打)其实真的有挂(今日头条)-哔哩哔哩是一款可以让一直输的玩家,...
第3玄学!中至九江讨赏有什么规... 1、第3玄学!中至九江讨赏有什么规律吗(辅助挂)太坑了其实真的有挂(有挂助手)-哔哩哔哩;详细教程。...