myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Nach gesendetem Befehl antwortet Arduino mit Begriff, der eine Dauerschleife auslöst
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
wlfmario wlfmario ist männlich
myCSharp.de-Mitglied

Dabei seit: 15.11.2018
Beiträge: 6
Entwicklungsumgebung: Visual Studio Express
Herkunft: Dormagen


wlfmario ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 ?

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

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

C#-Code:
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("$$");
            }
...
25.01.2019 23:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
123thomas
myCSharp.de-Mitglied

Dabei seit: 21.12.2012
Beiträge: 110
Entwicklungsumgebung: Visual Studio 2017 Community


123thomas ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
28.01.2019 07:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.387
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Merke dir in einer Member-Variablen, ob die nächste Antwort ignoriert werden soll; dies ist so ähnlich wie  [FAQ] Event nur bei Benutzeraktion auslösen, nicht bei programmtechnischer Änderung.
28.01.2019 09:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 9 Monate.
Der letzte Beitrag ist älter als 9 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 13.11.2019 01:16