Laden...

Nach gesendetem Befehl antwortet Arduino mit Begriff, der eine Dauerschleife auslöst

Erstellt von wlfmario vor 5 Jahren Letzter Beitrag vor 5 Jahren 743 Views
W
wlfmario Themenstarter:in
12 Beiträge seit 2018
vor 5 Jahren
Nach gesendetem Befehl antwortet Arduino mit Begriff, der eine Dauerschleife auslöst

Ich brauchte mal einen kleinen Schupps in die richtige Richtung !
In meinen kleine Projekt empfange ich Daten vom Adruino, von denen ich gerne drei Wörter Filtern möchte.
Die Daten werden in einer Variabel gespeichert und später in einer TextBox ausgegeben.
Alles soweit kein Problem auch das finden der drei Wörter macht keine Probleme nur wenn die Daten per Serial gelesen werden und das Event ausgelöst wird, möchte ich testen ob die Wörter "Grbl, ok, error" im String vorhanden sind und darauf reagieren.

Das Problem ist jetzt, das nach jeden absetzen einens Befehls an die Serielle Schnittstelle der Adruino mit ok oder Error Antwortet und dies eine Dauerschleife auslöst.

Wie könnte ich dies am besten umgehen so das ich nach jedem ok. ein neuen Befehl senden kann ?


private String rxstring;
        private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            rxstring = serialPort1.ReadExisting();
            Invoke(new EventHandler(DisplayTxt));
        }


private void SerialSend(string gcode)
        {
            RichTextBoxOutput.AppendText("> " + gcode + "\n");
            serialPort1.WriteLine(gcode);
        }


 private void DisplayTxt(object sender, EventArgs e)
        {
            RichTextBoxOutput.AppendText(rxstring);
            RichTextBoxOutput.ScrollToCaret();

            bool checkerror = rxstring.Contains("error:");
            bool checkok = rxstring.Contains("ok");
            bool checkgrbl = rxstring.Contains("Grbl");

            if (checkgrbl)
            {
                SerialSend("$G");
            }

            if(checkok)
            {
                SerialSend("$$");
            }
...

1
124 Beiträge seit 2012
vor 5 Jahren

Hallo,

du sendest ja in der DisplayTxt immer direkt den nächsten Befehl an die Serielle Schnittstelle. Wenn der Arduino immer auf einen Befehl antwortet ist es korrekt, das es in einer Dauerschleife endet.

Gruß
Thomas