Code:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) //Button zum Empfangen
{
try
{ //Globale Variable
bool PaketStart = false;
List<byte> meineListe = new List<byte>();
//Event
byte temp =0;
while (temp != -1) //So lange die Variable temp ungleich -1 ist, also so lange Daten vorhanden sind mache:
{
temp = (byte)serialPort1.ReadByte(); //Lese ein byte
if (PaketStart) //Sind wir bereits in einem Datenpaket drin ?
{
if (temp == 66) //Ist das byte die Endbedingung ?
{
//Geschwindigkeit
richTextBox1.Text = meineListe[5].ToString() + meineListe[6].ToString() + meineListe[7].ToString() + meineListe[8].ToString() + meineListe[9].ToString(); // Ausgabe Geschwindigkeit
//Rundenzeit
//richTextBox2.Text = char10.ToString() + char11.ToString() + char12.ToString() + char13.ToString() + char14.ToString(); //Ausgabe Rundenzeit
//Runde
label12.Text = meineListe[3].ToString() + meineListe[4].ToString();
//Rufe eine Prozedur auf die die Daten in der Liste verarbeitet (Nur eine Kopie der Datenübergeben und die ursprüngliche liste leeren), das Datenverarbeiten macht man aus Timinggründen wohl am besten aus einem anderen Thread
meineListe.Clear();
}
}
else
{
meineListe.Add(temp); //Ansonsten füge das byte der Liste hinzu
}
}
if (temp == 56) //Wir sind in keinem Datenpaket drin, ist das gerade gelesene Byte die Startbedingung ?
{
PaketStart = true; //Ja also setzten wie die Variable PaketStart auf true so dass wir bei dem nächsten Schleifendurchlauf in if-Bedingung weiter oben springen
}
}
catch { ;}
}
Hab das jetzt so geschrieben und unterstreicht mir while (temp != -1) grün mit der Meldung "Warnung 1 Der Vergleich mit einer ganzzahligen Konstante ist nutzlos. Die Konstante befindet sich außerhalb des Bereichs vom Typ "byte".".
kann ich dieses Temp auch direkt in Char umwandeln, da ich gerne den If(temp == startbedinung) und If(temp == Endbedinung) mit einem Char vergleich will und direk auf den rich text box als Char ausgeben will. wie sieht das dann aus ?
mfg
Lesezeichen