//connect Serial1 TX -> Serial2 RX, Serial2 TX -> Serial3 RX, Serial3 TX -> Serial4 RX....
#define SPD 1000000
int loop_count = 0;
int receive_counts[8];
int callback_counts[8];
void setup() {
pinMode(13, OUTPUT);
// while (!Serial && millis() < 4000) ;
// Serial.begin(115200);
delay(800);
Serial4.println("Test all Serials");
Serial4.printf("Baud rate: %d\n", SPD);
Serial1.begin(SPD);
Serial2.begin(SPD);
Serial3.begin(SPD);
Serial4.begin(SPD);
Serial5.begin(SPD);
Serial6.begin(SPD);
Serial7.begin(SPD);
}
void loop() {
for (int i=0; i < 8; i++) {
receive_counts[i] = 0;
callback_counts[i] = 0;
}
Serial4.printf("Loop: %d\n", ++loop_count);
Serial1.print("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
Serial1.print("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
Serial1.print("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
delay(1000);
Serial4.println();
for (int i=0; i < 7; i++) {
Serial4.printf("%d: %d %d ", i, callback_counts[i], receive_counts[i]);
}
Serial4.println();
}
void serialEvent1() {
digitalWrite(13, !digitalRead(13));
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial1.available()), Serial4.availableForWrite());
Serial1.readBytes(buffer, cb);
Serial4.write(buffer, cb);
callback_counts[0]++;
receive_counts[0] += cb;
}
void serialEvent2() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial2.available()), Serial2.availableForWrite());
Serial2.readBytes(buffer, cb);
Serial2.write(buffer, cb);
callback_counts[1]++;
receive_counts[1] += cb;
}
void serialEvent3() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial3.available()), Serial3.availableForWrite());
Serial3.readBytes(buffer, cb);
Serial3.write(buffer, cb);
callback_counts[2]++;
receive_counts[2] += cb;
}
#if 0
void serialEvent4() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial4.available()), Serial4.availableForWrite());
Serial4.readBytes(buffer, cb);
Serial4.write(buffer, cb);
callback_counts[3]++;
receive_counts[3] += cb;
}
#endif
void serialEvent5() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial5.available()), Serial5.availableForWrite());
Serial5.readBytes(buffer, cb);
Serial5.write(buffer, cb);
callback_counts[4]++;
receive_counts[4] += cb;
}
void serialEvent6() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial6.available()), Serial6.availableForWrite());
Serial6.readBytes(buffer, cb);
Serial6.write(buffer, cb);
callback_counts[5]++;
receive_counts[5] += cb;
}
void serialEvent7() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial7.available()), Serial7.availableForWrite());
Serial7.readBytes(buffer, cb);
Serial7.write(buffer, cb);
callback_counts[6]++;
receive_counts[6] += cb;
}