Kai丶0727 2021-06-19 18:24 采纳率: 100%
浏览 66

Arduino蓝牙通讯,手机接收到的信息一直分段收到

我在用Arduino进行蓝牙通讯时,发现了一个问题,通过Arduino端串口发送给手机蓝牙时,手机接收到的信息不完整,比如我发送数字串“12345”,而手机端显示的

我的代码如下:

#include <SoftwareSerial.h>

#define RxD 10
#define TxD 11


SoftwareSerial BTSerial(RxD, TxD);

void setup() {
  // replace BAUDRATE as suggested
  BTSerial.begin(9600);
  Serial.begin(19200);
  BTSerial.print("AT\r\n");
}

void loop() {

 if (BTSerial.available())
    Serial.write(BTSerial.read());

  if (Serial.available())
    BTSerial.write(Serial.read());
    
}

 经过查阅资料,发现Serial.read()一次只能读取一字节,于是我将代码修改如下:

#include <SoftwareSerial.h>

#define RxD 10
#define TxD 11


SoftwareSerial BTSerial(RxD, TxD);

void setup() {
  // replace BAUDRATE as suggested
  BTSerial.begin(9600);
  Serial.begin(9600);
  BTSerial.print("AT\r\n");
}

void loop() {

  if (BTSerial.available())
    Serial.write(BTSerial.read());

  if (Serial.available()) {

    String serialData = Serial.readString();    // 将接收到的信息使用readString()存储于serialData变量
    BTSerial.print("Received Serial Data: ");     // 然后通过串口监视器输出serialData变量内容
    BTSerial.println(serialData);

  }
}

输出还是不正确

 还有段代码如下:

#include <SoftwareSerial.h>

#define RxD 10
#define TxD 11

const int bufferLength = 10;    // 定义缓存大小为10个字节
char serialBuffer[bufferLength];// 建立字符数组用于缓存

SoftwareSerial BTSerial(RxD, TxD);

void setup() {
  // replace BAUDRATE as suggested
  BTSerial.begin(9600);
  Serial.begin(9600);
  BTSerial.print("AT\r\n");
}

void loop() {

  if (BTSerial.available())
    Serial.write(BTSerial.read());

  if (Serial.available()) {

    BTSerial.println("Received Serial Data:");  
    BTSerial.readBytes(serialBuffer, bufferLength);// 将接收到的信息使用readBytes读取
    for(int i=0; i<bufferLength; i++){      // 然后通过串口监视器输出readBytes
      BTSerial.print(serialBuffer[i]);          // 函数所读取的信息
    }
    BTSerial.println("");  
    BTSerial.println("Finished Printing Recevied Data.");

  }
}

此段代码输出依旧不正确,请问各位有什么好的解决方法吗?

  • 写回答

0条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥20 问个简单的数据结构问题
      • ¥20 kinect 使用 unity 开发使用手势旋转相机
      • ¥20 一个关于人脸识别的实训报告
      • ¥50 LoopyCuts编译运行问题
      • ¥20 VS2019如何添加.mdf文件失败
      • ¥15 SeaTunnel多Transform配置问题
      • ¥15 消除字符串,求最短字符串长度
      • ¥20 有人做基于集员滤波的异常值处理相关的内容吗?(语言-matlab)
      • ¥30 matlab编程,用chatGPT帮助,但给出的code总是报错。
      • ¥15 离线安装VS2017出现报错