Запускается и работает, но кое что не понятно.
В Serial1.println(send_data); убрал ln, иначе, пока нет данных, непрерывно гонит в порт 0D 0A...
Serial1.print(send_data); выдает ДВОЙНУЮ последовательность xyz
У меня данные приходят из другого порта, и в этом случае Serial1.println(send_data); выдает аж ЧЕТВЕРНУЮ последовательность xyz.
Почему, не пойму. :(
Ниже, то что у меня:
#include <AltSoftSerial.h>
AltSoftSerial altSerial;
/**
*
*/
const int SERIAL_DATA_DELAY = 5;
/**
* Startup events.
*/
void setup() {
init_serial();
}
/**
* Init serial port communication.
*/
void init_serial() {
Serial.begin(9600);
Serial1.begin(9600);
altSerial.begin(9600);
}
/**
* Main loop procedure.
*/
void loop() {
serial_forward();
}
/**
* Read data from serial port 0, parse string and send over serial 1.
*/
void serial_forward() {
String read_data;
String send_data;
int read_data_len;
while (altSerial.available() > 0) {
delay(SERIAL_DATA_DELAY);
char c = altSerial.read();
Serial.print(c);
read_data += c;
}
do {
read_data_len = read_data.length();
int endIndex = read_data.indexOf("C");
if (read_data.startsWith("A>B:") && endIndex >= 0) {
send_data = read_data.substring(4, endIndex);
read_data.remove(0, endIndex + 1);
}
Serial1.print(send_data);
Serial.print(send_data);
if (read_data_len == read_data.length()) {
read_data.remove(0, 1);
}
} while (read_data_len != read_data.length());
}