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