通过蓝牙接收字符串数据 - ESP32

Receiving string data via bluetooth - ESP32

我在通过蓝牙接收字符串数据时遇到问题,更具体地说是在后续使用时遇到问题。

#include "BluetoothSerial.h"

String text = "";

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32"); //Bluetooth device name
;}

void loop() {
  if (SerialBT.available() > 0) {
    text = SerialBT.readStringUntil('\n');
    Serial.println(text);
    if(text == "go") {
       Serial.println("Info");
    }
  }
  delay(20);
}

当我发送字符串数据时,SerialBT.println(text); 函数工作正常,但下一个函数 if(text == "go") 不再工作。 两个字符串不一样

对于普通的Serial,一切正常。

如何解决这个问题?

我知道蓝牙发送了一些额外的变量,但我不知道如何检测和删除它们。 不过我已经找到解决办法了。

首先,我使用text = SerialBT.read(); 来检测多余的字符。蓝牙在字符串数据末尾发送额外的字符。 所以,我然后使用 text.remove(text.length()-1,1);,一切都已经正常工作了。

完成代码:

void loop() {
  if (SerialBT.available() > 0) {
    text = SerialBT.readStringUntil('\n');
    text.remove(text.length()-1, 1);
    Serial.println(text);
    if(text == "go") {
      Serial.println("Info");
    }
  }
  delay(20);
}