Benutzer mit den meisten Antworten
Probleme beim Empfangen mit Serieller Schnittstelle

Frage
-
Hallo Zusammen,
ich habe eine Serielle Schnittstelle mit einer Karte die mir das zurück schickt was ich ihm Sende. Also wenn ich "Hallot Welt" schicke soll ich auch "Hallo Welt" zurück bekommen.
Aber leider schneidet mir mein Program die Antwort nach zwei Zeichen ab. Ich bekomme also nur ein "Ha" zurück.
Wäre super wenn mir jemand helfen kann. Vielen Dank!
if (!serialPort.IsOpen) { serialPort.Open(); //Serialport öffnen } lbRecievedDelegate = new InvokeLB(InvokeLBRecieved); serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); //DataRecieved Event abonnieren } string Daten = ""; void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) // foreach (var item in serialPort.ReadLine()) { Daten = serialPort.ReadLine(); lbRecieved.Invoke(new MethodInvoker(MethodeZumDatenInListboxSchreiben)); } void MethodeZumDatenInListboxSchreiben() { lbRecieved.Items.Add(Daten); } void InvokeLBRecieved(string Data) { lbRecieved.Items.Add(Data); }
Antworten
-
Hallo gsonur,
ich würde mal die Zeile
Daten = serialPort.ReadLine();
durch diese
Daten = serialPort.ReadExisting();
ersetzen.
Damit werden alle im Puffer stehen Daten ausgelesen.
Grüße
Roland
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 4. Mai 2015 11:59
- Als Antwort markiert gsonur Montag, 11. Mai 2015 08:13
-
Hallo Onur,
das Problem ist, dass Du die Zeichen wahrscheinlich auch einzeln von Hand eingibst. Dadurch wird bei jedem Zeichen der Handler ausgelöst.
Der handler wiederum schreibt alles was im Puffer steht (also ein Zeichen ) in eine neue Zeile der Listbox.
Du müsstest die Zeichen zunächst in einer Variable sammeln, und erst bei einem definierten Zeichen z.B. CR die gesammelten Zeichen in die Listbox ausgeben.
Grüße
Roland
- Als Antwort markiert gsonur Montag, 11. Mai 2015 08:13
Alle Antworten
-
Hallo gsonur,
so, ich habe noch ein bisschen rumprobiert, bin aber nicht wirklich weitergekommen. Ich werde die Forschung am Wochenende fortsetzen.
Gruß
Aleksander
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo gsonur,
ich würde mal die Zeile
Daten = serialPort.ReadLine();
durch diese
Daten = serialPort.ReadExisting();
ersetzen.
Damit werden alle im Puffer stehen Daten ausgelesen.
Grüße
Roland
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 4. Mai 2015 11:59
- Als Antwort markiert gsonur Montag, 11. Mai 2015 08:13
-
Hallo Onur,
das Problem ist, dass Du die Zeichen wahrscheinlich auch einzeln von Hand eingibst. Dadurch wird bei jedem Zeichen der Handler ausgelöst.
Der handler wiederum schreibt alles was im Puffer steht (also ein Zeichen ) in eine neue Zeile der Listbox.
Du müsstest die Zeichen zunächst in einer Variable sammeln, und erst bei einem definierten Zeichen z.B. CR die gesammelten Zeichen in die Listbox ausgeben.
Grüße
Roland
- Als Antwort markiert gsonur Montag, 11. Mai 2015 08:13