ESP8266串口

Serial.print(val)
–串口输出数据并。
Serial.println(val)
–串口输出数据并换行。

Serial.available()
–判断串口缓冲区的状态,返回从串口缓冲区读取的字节数。

Serial.read()
–读取串口数据,一次读一个字符,读完后删除已读数据。当没有可读数据时返回-1,整数类型。

Serial.readBytes(buffer, length)
–从串口读取指定长度的字符到缓存数组,返回存入缓存的字符数。
–buffer:缓存变量。
–length:设定的读取长度。

#include <Arduino.h>
/*
int counter = 0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  counter = counter + 1;
  Serial.print(counter);
  Serial.print(":");
  Serial.println("Hellow World");
  delay(1000);
}
*/
void setup(){
  pinMode(2, OUTPUT);
  Serial.begin(115200, SERIAL_8N1);
  while(!Serial){
    ;//等待串口连接
  }
  Serial.println("我准备好了!");
}
char ch = 0;

void loop(){
  ch = char(Serial.read());
  if(ch == 'A'){
    digitalWrite(2, LOW);
    delay(1000);
    Serial.println(ch);
  }else{
    digitalWrite(2, HIGH);
  }
}

软件实现串口

ESP8266-NodeMCU从定义上是应该有两个硬件串口的,但是实际上,
我们只能用U0那组串口,U1串口的RXD由于跟其它接口相连,
所以正常情况下是无法使用的。所以我们真正能用的是U0TXD、U0RXD、U1TXD。
但是一个串口有时候是不太够用的,所以需要其他串口。
在Arduino开发中,可以通过库--SoftwareSerial.h,
将普通的GPIO口模拟成串口。

ESP8266硬件串口和自定义串口实现两个串口进行信息传输
#include <SoftwareSerial.h>
//自定义串口 (RX, TX)   # D6接TX D7接RX
SoftwareSerial MySerial(D6, D7);

String data0;  // 接受内部数据
String data1;  // 接受外部数据


String receive0() {   // 接受内部数据
  String data;
  if (Serial.available()) {
    data = (char)Serial.read();
    data += receive0();
  }
  return data;
}
String receive1() {   // 接受外部数据
  String data;
  if (MySerial.available()) {
    data = (char)MySerial.read();
    data += receive1();
  }
  return data;
}


void setup() {
  Serial.begin(115200);    //内部串口初始化
  MySerial.begin(115200);  //外部串口初始化
}
void loop() {  
  data1 = receive1();
  if (data1 != "") {
    Serial.println(data1);    //接受的外部数据内部打印
  }  
  data0 = receive0();
  if (data0 != "") {
    MySerial.println(data0);    //接受的内部数据外部打印
  }
  

}

posted on 2024-08-07 20:46  lodger47  阅读(102)  评论(0编辑  收藏  举报

导航