ardupilot/libraries/FastSerial/examples/MultiFastSerial/MultiFastSerial.pde

102 lines
2.4 KiB
Plaintext

// -*- Mode: C++; c-basic-offset: 8; indent-tabs-mode: nil -*-
//
// Example code for the FastSerial driver.
//
// This code is placed into the public domain.
//
//
// Include the FastSerial library header.
//
// Note that this causes the standard Arduino Serial* driver to be
// disabled.
//
#include <FastSerial.h>
#include <AP_Common.h>
/* Not required by this sketch, but required by AP_Common */
#include <AP_Math.h>
#if __GNUC__ == 4 && __GNUC_MINOR__ == 5
#warning avr-gcc 4.5.x is known to have a bug with FastSerialPort2 and 3
/* avr-gcc 4.5.3 will leave off the USART2 and USART3 vectors from the vector
* table. It will crash this example sketch at millis == 2000.
* See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47696 for info.
* Known to work:
* avr-gcc 4.3.2 as shipped by Arduino IDE on Windows.
* avr-gcc 4.4.2 does not have this bug (unknown status otherwise)
* avr-gcc 4.6.2 has other issues that need to be worked out
* -pch 15 October 2012
*/
#endif
//
// Create a FastSerial driver that looks just like the stock Arduino
// driver, on each serial port.
//
FastSerialPort0(Serial);
FastSerialPort1(Serial1);
FastSerialPort2(Serial2);
FastSerialPort3(Serial3);
void setup(void)
{
//
// Set the speed for our replacement serial port.
//
Serial.begin(115200);
Serial1.begin(115200);
Serial2.begin(115200);
Serial3.begin(115200);
do {
Serial.print("hello serial0 millis: ");
Serial.println(millis(), DEC);
} while (millis() < 1000);
do {
Serial1.println("hello serial1");
Serial.print("hello serial0 millis: ");
Serial.println(millis(), DEC);
} while (millis() < 2000);
do {
Serial2.println("hello serial2");
Serial.print("hello serial0 millis: ");
Serial.println(millis(), DEC);
} while (millis() < 3000);
do {
Serial3.println("hello serial3");
Serial.print("hello serial0 millis: ");
Serial.println(millis(), DEC);
} while (millis() < 4000);
}
void
loop(void)
{
int c;
//
// Perform a simple loopback operation on each port.
//
c = Serial.read();
if (-1 != c)
Serial.write(c);
c = Serial1.read();
if (-1 != c)
Serial1.write(c);
c = Serial2.read();
if (-1 != c)
Serial2.write(c);
c = Serial3.read();
if (-1 != c)
Serial3.write(c);
}