Arduino:使用串行和软件串口与蓝牙模块

use*_*612 6 android serial-port bluetooth arduino

我的目的是使用Arduino使用HC-05蓝牙模块在PC和Android设备之间建立通信.

我使用PC和Arduino(串行监视器)之间的USB通信和SoftwareSerial连接到HC-05.

我的问题是从BT到PC的通信运行良好,但在其他方面不能按预期工作.当从PC发送到BT时,只有当我关闭PC上的串行监视器或重置Arduino时,BT设备才会收到所有发送的字符.

我已经排除了BT模块或Android应用程序的问题,因为如果在Arduino中我实现了"ECHO"代码(在Android中编写并在Android中发送)一切正常.

随着下面发布的Arduino代码预期的行为是:Arduino reset-> Hello word发送,串口监视器打开 - >没有任何反应,字符写在串行监视器上 - > BT上收到的字符,字符写在BT->串行监视器上收到的字符,串口监视器关闭 - >没有任何反应.

真正的行为是:Arduino reset-> Hello word发送,串口监视器打开 - > 2个BT上的Hello字和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);

  }
}
Run Code Online (Sandbox Code Playgroud)

STi*_*LeN 2

我已经实现了Arduino Uno和PC之间的串行通信,这是我的代码,希望它能有所帮助:

int data;
char character;
int start_flag = 0;

void setup() {
  Serial.begin(921600); 
  pinMode(2, OUTPUT); 
}
void loop() {
  if(Serial.available() > 0){
    character = (char) Serial.read();
    if(character == 's') {
      start_flag = 1;
    }
    if(character == 't') {
      start_flag = 0;
    }
  }
  if (start_flag == 1) {
    Serial.print(data); //data that was acquired by internal ADC
  }
}
Run Code Online (Sandbox Code Playgroud)