C# bestimmtes Byte aus Sting-Array auslesen(rs232)

Gast #2780080
Lesenswert?

Ich brauche Hilfe.Es gibt ein Problem mit Datenübertragung zwischen PC 
und Atmega8 per Serailport. Eins String “Text! “ mit Funktion:
private void serialPort1_DataReceived(object sender, 
System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            RxString = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));
        }
empfangen
und erscheinen lassen im Textfeld mit Funktion:
private void DisplayText(object sender, EventArgs e)
        {
            textBox1.AppendText(RxString);//String empfangen
        }

funktioniert ohne Fehler.

Aber wenn ich ein bestimmtes Byte auslesen will, dann kommt es oft zum 
Fehler. Es wird falsches Byte ab und zu ausgelesen.
Ich verwende folgende Funktionen:
Empfangen:
private void serialPort1_DataReceived(object sender, 
System.IO.Ports.SerialDataReceivedEventArgs e)
        {
             serialPort1.Read(readbyte1,0,6)
           this.Invoke(new EventHandler(DisplayText));
        }
Erscheinen lassen:
private void DisplayText(object sender, EventArgs e)
        {
            richTextBox1.AppendText(readbyte1[1].ToString());

        }

Array radbyte1 wird mit char[] readbyte1 = new char[6]; deklariert.


Was ist falsch?????
Gast #2780701
Lesenswert?

Ich verwende immer sowas auf Sender-Seite:

Byte 0: Startbyte (0x02)
Byte 1: Anzahl Nutzdaten-Bytes
Byte 2 bis Byte x: Nutzdaten
Byte x+1: CRC8 über Nutzdaten

Auf Empfänger-Seite:
- Daten wegschmeißen bis ein Startbyte kommt
- Feld mit Nutzdaten-Länge lesen
- Nutzdaten und CRC lesen
- CRC prüfen
- bei CRC-Fehler: Startbyte am Anfang des Puffers wegschmeißen und von 
vorne beginnen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren