我的目的是使用 Arduino 建立 PC 和使用 HC-05 蓝牙模块的 Android 设备之间的通信。
我使用 PC 和 Arduino(串行监视器)和 SoftwareSerial 之间的 USB 通信连接到 HC-05。
我的问题是从 BT 到 PC 的通信工作良好,但在其他方式下不能按预期工作。从 PC 发送到 BT 时,只有当我关闭 PC 上的串行监视器或重置 Arduino 时,BT 设备才会接收到所有发送的字符。
我已经排除了 BT 模块或 Android 应用程序的问题,因为如果在 Arduino 中实现“ECHO”代码(在 Android 中编写并在 Android 中发送),一切正常。
使用下面发布的 Arduino 代码,预期的行为是:Arduino reset-> Hello word sent,串行监视器打开-> 没有任何反应,串行监视器上写入的字符-> BT 上接收到的字符,BT 上写入的字符-> 串行监视器上接收到的字符, 串行监视器关闭-> 没有任何反应。
真正的行为是:Arduino重置->发送你好字,串行监视器打开-> BT上的2个你好字和PC上的1(“晚安”),串行监视器上写的字符->没有,BT上写的字符->收到字符在串行监视器上,串行监视器已关闭-> 接收到串行监视器中先前写入的字符 + Hello Word。
我该如何解决这个问题?
代码:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int a=0;
char c;
char d;
void setup() {
Serial.begin(9600);
Serial.println("Goodnight moon!");
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() {
delay(10);
if (Serial.available()) {
c=Serial.read();
delay(10);
Serial.write(c);
}
delay(10);
if (mySerial.available()) {
d=mySerial.read();
delay(10);
mySerial.write(d);
}
}