(一),开启单个软串口
Arduino板只有一个硬件串口,该串口在下载程序时需要断开与其他设备的连接,否则可能下载失败,所以需要开启软串口与其他设备通信:
以下示例实现两个串口互相通信,显示的数据有概率乱码,建议降低波特率
添加自带的库:
#include <SoftwareSerial.h>
创建变量:
SoftwareSerial Serial_1(9, 10);//RX,TX
定义临时变量:
String str1,str2;
初始化串口:
void setup() {
Serial.begin(115200);
Serial_1.begin(115200);
}
String Read_Data1() //读取PC端发送过来的信息
{
String data = "";
while(Serial.available()>0)
{
data+=char(Serial.read());
delay(1);
}
return data;
}
String Read_Data2() //读取硬件串口发送过来的信息
{
String data = "";
while(Serial_1.available()>0)
{
data+=char(Serial_1.read());
delay(2);
}
return data;
}
unsigned long rx_time1=0;
void Rx1_Data()
{
if(millis() - rx_time1 < 500) return;
rx_time1 = millis();
str1 = Read_Data1();
if (str1.length() != 0) //如果不是非空字符串,则打印到PC端串口调试助手
{
Serial_1.print(str1);
str1="";
}
}
unsigned long rx_time2=0;
void Rx2_Data()
{
if(millis() - rx_time2 < 500) return;
rx_time2 = millis();
str2 = Read_Data2();
if (str2.length() != 0) //如果不是非空字符串,则打印到串口显示器
{
Serial.print(str2);
str2="";
}
}
void loop() {
// put your main code here, to run repeatedly:
Rx1_Data();
Rx2_Data();
}
(二),开启多个软串口(两个)
使用自带的软串口库,是无法开启两个的,需要添加另一个库:#include <AltSoftSerial.h>
添加库:
#include <AltSoftSerial.h>
#include <SoftwareSerial.h> //自带的软串口
定义变量:
SoftwareSerial BLE(10,11);
AltSoftSerial AltGPS; //Nano板默认D8(TX),D9(RX)不可以更改
初始化:
Serial.begin(9600);
//软串口
BLE.begin(9600);
AltGPS.begin(9600);
如此,两个软串口接收的内容都可以打印在硬件串口上