#include <SoftwareSerial.h>
// software serial #1: RX = digital pin 10, TX = digital pin 11
SoftwareSerial portOne(3, 4);
// software serial #2: RX = digital pin 8, TX = digital pin 9
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega
SoftwareSerial portTwo(2, 5);
unsigned long startMillis;
unsigned long currentMillis;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// Start each software serial port
portOne.begin(9600);
portTwo.begin(9600);
}
void loop() {
startMillis = millis(); //initial start time
currentMillis = millis();
// By default, the last intialized port is listening.
// when you want to listen on a port, explicitly select it:
portOne.listen();
//Serial.println("Data from port one:");
// while there is data coming in, read it
// and send to the hardware serial port:
while (portOne.available() > 0) {
char inByte =
portOne.read();
Serial.write(inByte);
}
// blank line to separate data from the two ports:
Serial.println();
// Now listen on the second port
portTwo.listen();
// while there is data coming in, read it
// and send to the hardware serial port:
//Serial.println("Data from port two:");
while (portTwo.available() > 0) {
char inByte =
portTwo.read();
Serial.write(inByte);
}
// blank line to separate data from the two ports:
Serial.println();
currentMillis = millis();
Serial.println(currentMillis-startMillis);
}