如何通过BLE HC-08从单个字符构建字符串?

时间:2018-08-15 20:43:54

标签: arduino-uno

我正在测试BLE模块(HC-08),它看起来像Arduino Uno的UART。 这应该很简单,但是我花了数小时试图根据通过软件串行端口发送的命令的响应来构建字符串或char数组。

首先,这是代码:

#include <SoftwareSerial.h>

int data = 0;
SoftwareSerial Blue(10, 11); // RX, TX

void setup() {
  Serial.begin(115200);
  Blue.begin(9600);
  Serial.println("BLE_Test started");
}

void loop() {
  Blue.write("AT+VERSION?");
  if (Blue.available()) {
    data = Blue.read();
    Serial.write(data);
  }
  delay(50);
}

这是输出:

BLE_Test started
OK:SH-V1.251
OK:SH-V1.251
OK:SH-V1.251
OK:SH-V1.251

每行以CR-LF(13,10)结尾,因此在屏幕上看起来不错。

所以,这是我的问题。 如何从BLE模块的字节中构建字符串或char数组?我的目标是创建一个仅向BLE模块发送命令字符串并从该函数返回字符串的函数。 (类似于Serial.readstring(),但SoftwareSerial没有readstring()属性)。

就像我说的那样,它应该很简单,但是我却一无所获。任何提示将不胜感激。

2 个答案:

答案 0 :(得分:0)

它是readString,具有大写字母S,并且在Stream中实现,它是Serial实现和SoftwareSerial以及LCD,EthernetClient等许多其他类的通用基类,WiFiClient,...

答案 1 :(得分:0)

Do! Doh!

可行,这是我的工作代码:

//Send the command to the BLE module, returns with response in global inData
void getBlue(char* blueCmd) {
  inData = "";
  Blue.write(blueCmd);
  delay(15);
  while (Blue.available() > 0)
  {
    inData = Blue.readString();
  }
}