arduino串口通讯

 https://www.arduino.cn/thread-47262-1-1.htmlhtml

1软串口和正常串口同样,各类发送函数。python

2多个软口直接发送不须要激活,接受的时候须要激活指定。 git

3目前安测试最多两个软串口函数

4单片机之间9600波特率正常,115200会有乱码oop

软串口测试

#include <SoftwareSerial.h>
//实例化软串口
SoftwareSerial mySerial(2, 3); // RX, TX

void setup()
{
  Serial.begin(115200);
  while (!Serial) {
  }

  Serial.println("Goodnight moon!");

  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

 同时使用多个软串口
当须要链接多个串口设备时,能够创建多个软串口,但限于软串口的实现原理,Arduino UNO只能同时监听一个软串口,当存在多个软串口设备时,你须要使用listen() 函数指定须要监听的设备。如程序中存在portOne、portTwo两个软串口对象时,你欲监听portOne,便须要使用portOne.listen() 语句,要切换监听port2,便使用portTwo.listen() 语句。
示例程序以下:ui

 

/*
Arduino UNO软串口通讯
经过listen()切换监听软串口
*/

#include <SoftwareSerial.h>
SoftwareSerial portOne(10, 11);
SoftwareSerial portTwo(8, 9);

void setup() {
  Serial.begin(9600);
  while (!Serial) {
  }

  portOne.begin(9600);
  portTwo.begin(9600);
}

void loop() {
//监听1号软串口
  portOne.listen();

  Serial.println("Data from port one:");
  while (portOne.available() > 0) {
    char inByte = portOne.read();
    Serial.write(inByte);
  }

  Serial.println();
//监听2号软串口
  portTwo.listen();

  Serial.println("Data from port two:");
  while (portTwo.available() > 0) {
    char inByte = portTwo.read();
    Serial.write(inByte);
  }

  Serial.println();
}

  

jiehsou解析spa

int ledPin =  2; 
String comdata = "";
char terminator = ';';
void setup() {
   pinMode(ledPin, OUTPUT);
   digitalWrite(ledPin, HIGH);
  Serial.begin(9600);
  while(Serial.read()>= 0){} //clear serialbuffer
}
  
void loop() {
  // read data from serial port
  if(Serial.available()>0){
      comdata =Serial.readStringUntil(terminator);
      //Serial.print("REC: ");
      //Serial.println(comdata);
 
      if(comdata=="open"){
      digitalWrite(ledPin, LOW);}
      else{
      digitalWrite(ledPin, HIGH);
        }
        
 
       
    }
    while(Serial.read()>= 0){}
}

  

 

 

 

遥控器发送16进制htm

#include <SoftwareSerial.h>

SoftwareSerial mySerial(D2, D1); // RX, TX


void setup()
{
  Serial.begin(115200);
  mySerial.begin(115200);

  delay(4000);
 
}

uint8_t msg1_open[2]={0xe3, 0x01};
uint8_t msg2_close[2]={0xe3, 0x02};
uint8_t msg3_hot[2]={0xe3, 0x03};
uint8_t msg4_clode[2]={0xe3, 0x04};
uint8_t msg5_27[2]={0xe3, 0x05};



void loop()
{
  
   
      
  
    Serial.write(msg1_open, 2);
    mySerial.write(msg1_open, 2);
    delay(3000);

  
        
}
相关文章
相关标签/搜索