okay, here is the code.
there is also an if (Serial1.available()) and if (Serial2.available()) construct which does the same as the if (Serial3.available()).
had to cut it, because of the 9500 character limit.
#include <LiquidCrystal.h>
#include "Wire.h"
#include <SoftwareSerial.h>
#include <EEPROM.h>
SoftwareSerial serial_out(10, 11); // RX, TX
// here was a lot of variable declaration
void setup(){
// Initialisieren der seriellen Schnittstellen
Serial.begin (2400); // Serial 0 mit einer Baud-Rate von 2400 initialisieren
Serial1.begin(9600, SERIAL_8E1); // Serial 1 mit 9600 Baud und Even-Parity initialisieren
Serial2.begin(9600, SERIAL_8E1); // Serial 2 mit 9600 Baud und Even-Parity initialisieren
Serial3.begin(9600, SERIAL_8E1); // Serial 3 mit 9600 Baud und Even-Parity initialisieren
// Software-Port initialisieren mit 2400 Baud
serial_out.begin(2400);
}
//*********************************************************************
//********************************************************************* ==> MAIN BEGIN <==
void loop()
{
// ************************************* Print Serial with Time-Stamp (Serial_3)
// when characters arrive over the serial port...
if (Serial3.available()) {
Serial3.setTimeout(45); // 45 ms fürs Datenholen
Serial3.readBytes(comein_3, 11); // 11 Bytes einlesen
if ( puffer[4] != (byte) comein_3[9] ){
for( int i=5; i<10; i++ ){
puffer[ i-5 ] = comein_3[ i ]; // 5 benötigeten Bytes in Puffer ablegen
}
// here i put the bytes from puffer into fertig_daten
for( int i=0; i<=9; i++ ){ // Daten in Speicher ablegen zur Anzeige auf LCD
EEPROM.write( count + i, fertig_daten[ i ]);
}
EEPROM.write( count + 10, ';'); // Zeit ebenfalls in Speicher ablegen
EEPROM.write( count + 11, stunde_1);
EEPROM.write( count + 12, minute_1);
EEPROM.write( count + 13, minute_2);
EEPROM.write( count + 14, sekunde_1);
EEPROM.write( count + 15, sekunde_2);
EEPROM.write( count + 16, millisekunde_1);
EEPROM.write( count + 17, millisekunde_2);
EEPROM.write( count + 18, '#');
show = count; // Platzierung merken
count = count + 19; // Speicherstelle erhöhen
// ************************************** Speicherstelle in EEPROM speicher ****************************
val[3]=count % 10; // aufteilen auf 3 stellen
delay(10);
val[2]=(count % 100)/ 10;
delay(10);
val[1]=(count % 1000) / 100;
delay(10);
EEPROM.write(1, val[1]); // speichern der 3 stellen
delay(10);
EEPROM.write(2, val[2]);
delay(10);
EEPROM.write(3, val[3]);
delay(10);
// ********************************************************************************************
fertig_daten[ 10 ] = ';'; // Trennzeichen in Puffer ablegen
fertig_daten[ 11 ] = stunde_1; // Zeit in Übergabe-Array ablegen
fertig_daten[ 12 ] = minute_1;
fertig_daten[ 13 ] = minute_2;
fertig_daten[ 14 ] = sekunde_1;
fertig_daten[ 15 ] = sekunde_2;
fertig_daten[ 16 ] = millisekunde_1;
fertig_daten[ 17 ] = millisekunde_2;
fertig_daten[ 18 ] = '#'; // Abschlußzeichen in Puffer ablegen
serial_out.print( (char*) fertig_daten); // Datenübertragung an SK-System
if (led_3_State == LOW) {
//digitalWrite(led_3_Pin, HIGH); // LED aneinschalten
led_3_Millis = currentMillis; // Zeitpunkt des Einschaltens von LED1
led_3_State = HIGH;
}
}
}
//********************************************************************* Print chip
if ( show != show_alt){ // Nur neue Ausschrift, wenn neue Daten
lcd.setCursor(0, 2);
lcd.print("Platz ");
if((show/19+1)<10){
lcd.print("0");
}
lcd.print((show/19)+1);
lcd.setCursor(8, 2);
lcd.print(":");
for(int b=0; b<=9;b++){
lcd.write( EEPROM.read( show + b ) );
}
//********************************************************************* Print Memory
lcd.setCursor(0, 3);
lcd.print("Zeit: ");
lcd.write( EEPROM.read( show + 11 ) );
lcd.print(":");
lcd.write( EEPROM.read( show + 12 ) );
lcd.write( EEPROM.read( show + 13 ) );
lcd.print(":");
lcd.write( EEPROM.read( show + 14 ) );
lcd.write( EEPROM.read( show + 15 ) );
lcd.print(":");
lcd.write( EEPROM.read( show + 16 ) );
lcd.write( EEPROM.read( show + 17 ) );
show_alt = show; // Stelle merken, für Vergleich ob neue Daten da sind
}
//********************************************************************* ==> MAIN END <==
//*********************************************************************
}