none
Probleme beim Empfangen mit Serieller Schnittstelle RRS feed

  • 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);
            }

    Mittwoch, 29. April 2015 12:51

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

    Donnerstag, 30. April 2015 12:50
  • 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
    Freitag, 8. Mai 2015 12:21

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.

    Donnerstag, 30. April 2015 12:14
  • 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

    Donnerstag, 30. April 2015 12:50
  • Hi Roland

    Danke für deine Hilfe!

    ich bekomme jetzt das komplette Word als Anwort, allerdings schreibt er mir die Buchstaben untereinander.

    Irgend eine Idee?

    Grüße

    Onur



    • Bearbeitet gsonur Mittwoch, 6. Mai 2015 15:38
    Montag, 4. Mai 2015 09:24
  • 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
    Freitag, 8. Mai 2015 12:21