DataReceive Fehler bei wiederholtem Empfagen

Gast #3224246
Lesenswert?
• ▲
▼
1
  private void port_DataReceive(object sender, SerialDataReceivedEventArgs e)
2
        {
3
            if (!comport.IsOpen) return;
4

5
            if (CurrentDataMode == DataMode.Text)
6
            {
7
                data = "NULL";
8
                data = comport.ReadExisting();
9
                
10
                int length = data.Length;
11

12
                if (length != 18)
13
                {
14
                    MessageBox.Show("Nicht alle daten sind angekommen", "Übertragungsfehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
15
                    return;
16
                }
17
.
18
.
19
.

HAllO  ich möchte über den ComPort Daten empfangen.
Mein Problem ist, dass bei 2. Senden der Daten nicht alle 18 ASCII 
Zeichen ankommen. Bei 1. Durchlauf der oben gezeigten Funktion läuft es 
wunderbar, dann bekomme ich immer nur 1 bis 2 ASCII Zeichen an.

Kann mir jemand sagen was ich falsch mache?

Bautrate 9600
kein Parity
1 Stopbit
8 dataBits

Danke schon mal Gruß

Martin.
Gast #3224252
Lesenswert?
• ▲
▼
Martin schrieb:
> Kann mir jemand sagen was ich falsch mache?

nichts machst du falsch, das ist absolut normal.

Die zeichen kommen rein wie sie lust haben. also mal 2 zeichen mal 5 
zeichen und eventuell mal 10 zeichen auf einmal. Du musst dich selber 
darum kömmern sie wieder zusamemnzusetzen.
#3224271
Lesenswert?
• ▲
▼
>data = "NULL";
>data = comport.ReadExisting();

Was is'n das fürn Murks? So is besser:

data = string.Empty;
data = comport.ReadExisting();

Außerdem sollte man für den Empfang und das Senden Threads starten die 
das ganze asynchron abarbeiten und nicht eventuell deine GUI blockieren.

Gruß Jonas
Gast #3224273
Lesenswert?
• ▲
▼
Jonas Biensack schrieb:
> Was is'n das fürn Murks? So is besser:
>
> data = string.Empty;
> data = comport.ReadExisting();

was ist daran besser, ist genauso ein Murks!

data = comport.ReadExisting();

reicht vollkommen aus, mehr also eine neue Referenz kann man data nicht 
zuweisen.

Aber das ist eh nicht das hauptproblem.

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