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);

  
        
}
相關文章
相關標籤/搜索