通过蓝牙接收字符串数据 - 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);
}
我在通过蓝牙接收字符串数据时遇到问题,更具体地说是在后续使用时遇到问题。
#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);
}