Arduino Mega Kommunikation C# Programm Fehlerhaft

Guten Tag,
Ich habe ein sehr einfaches Arduino Programm, welches auf der seriellen Schnitstelle vier Sensorwerte sendet. in der Arduino IDE Sehe ich im Seriellen Monitor die Daten welche richtig gesendet werden. Ein C#-Programm baut dan eine Serielle Verbindung zum Mikrocontroller auf und empfängt die Werte. Die Empfangenen Daten sind jedoch Teilweise Fehlerhaft und unvollständig.
Arduino Code:

`#include <Wire.h>
#include "Adafruit_TCS34725.h"
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_600MS, TCS34725_GAIN_16X);

void setup() {
Serial.begin(115200);
if (tcs.begin()) {
} else {
Serial.println("No TCS34725 found ... check your connections");
while (1);
}
}
void loop() {
delay(1000);
uint16_t redraw, greenraw, blueraw, clearraw;
tcs.setInterrupt(false);
delay(700);
tcs.getRawData(&redraw, &greenraw, &blueraw, &clearraw);
tcs.setInterrupt(true);

Serial.print("\n");
Serial.print(int(clearraw));
Serial.print("\n");
Serial.print(int(redraw));
Serial.print("\n");
Serial.print(int(greenraw));
Serial.print("\n");
Serial.print(int(blueraw));
}`



C# Programm:

List<string> SerieleDatenSpeicher = new List<string>();

public MainWindow()
        {
            InitializeComponent();
            SeriellerPort = new SerialPort();
            SeriellerPort.DataReceived += SerielleDatenEmpfangen;
            SeriellePorts = SerialPort.GetPortNames();
            Baudraten = new int[] { 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230400, 250000, 500000, 1000000, 2000000 };
            DataBits = 8;
            StopBit = new string[] { "0", "1", "1.5", "2" };
            ParityBits = new string[] { "None", "Odd", "Even", "Mark", "Space" };
            if (seriellePorts.Count() > 0)
            {
                selectedItemPort = 0;
            }
            if (Baudraten.Count() > 0)
            {
                SelectedItemBaudraten = 9;
            }
            if (StopBit.Count() > 0)
            {
                selectedItemStopBits = 1;
            }
            if (ParityBits.Count() > 0)
            {
                selectedItemParityBits = 0;
            }
            COMB_Portname.ItemsSource = seriellePorts;
            BTN_Verbinden.Content = "Verbinden";
        }

 private void SerielleDatenEmpfangen(object sender, SerialDataReceivedEventArgs e)
        {
            string Data = SeriellerPort.ReadExisting();
            string[] Datasplit = Data.Split('\n');
            SerieleDatenSpeicher.Add(Data);
            Console.WriteLine(Data);
        }

Ich habe schon verschiedene Baudraten ausprobiert. Es ist immer Fehlerhaft.
In einem anderen Programm hatte ich mir mal weitergeholfen indem ich besondere Zeichenketten gesendet hatte um zu prüfen ob ein Wert vollständig gesendet wurde. z.b. [A]Wert[E]

Aber jetzt würde ich doch gerne Herausfinden, woran es liegt

Welcome! Please read the advice in the topic "How to get the best from this forum". How to get the best out of this forum

Dein C# Programm liest nicht zeilenbasiert?

Vielleicht kannst du dir hier was abschauen:

du hast recht ein einfaches

string Data = SeriellerPort.ReadLine();

anstatt

string Data = SeriellerPort.ReadExisting();

tut es.
Ich bin eigentlich etwas verwundert, weil ich meine ich hatte damals alles mögliche durchprobiert, von

ReadExisting()

bis

ReadByte()