Benutzer mit den meisten Antworten
Befehle an SerialPort so lange senden bis Button die Schleife abbricht

Frage
-
Hallo zusammen,
ich bin gerade dabei einen Abrufbetrieb für eine Steuerung zu schreiben, wie Port geöffnet und initilisiert wird ist bekannt, auch das port.WriteLine.
Was ich nun vorhabe, über den Port den Befehl zur Abfrage der Inkremente solange zu senden bis ich abbreche, gewünscht ist das ich an der Motorwelle drehe und die Ink im Label sehe.
Das ganze Programm ist in WPF.
Ich habe jetzt schon mit timern experimentiert, nur muss ich auch wieder den ButtonSenden aktivieren damit das Label den aktuellen wert anzeigt...
Danke für eure Hilfe...
- Bearbeitet Berg2381troll Dienstag, 3. Juni 2014 14:21
Antworten
-
Hallo,
und wo liegt jetzt das Problem?Vereinfacht könntest du es so machen:
DispatcherTimer timer = new DispatcherTimer(); public MainWindow(){ InitialisizeComponent(); timer.Tick += timer_Tick; timer.Interval = TimeSpan.FromSeconds(2);//Alle 2 Sekunden auslösen } void btnStart_Click(object sender, RoutedEventArgs e){ timer.Start();//Timer starten btnStart.IsEnabled =false;//Startbutton deaktivieren btnStop.IsEnabled =true;//Stopbutton aktivieren } void btnStop_Click(object sender, RoutedEventArgs e){ timer.Stop();//Timer anhalten btnStart.IsEnabled =true;//Startbutton wieder aktivieren btnStop.IsEnabled =false;//Stopbutton wieder deaktivieren } void timer_Tick(object sender, EventArgs e){ //Hier deine Daten senden und empfangen }
Eine Schleife in einem Backgroundworker wäre vielleicht besser, falls es ein Timeout gibt - sodass sich die Tick-Events nicht überschneiden.
Wenn du keinen DispatcherTimer nutzt, musst du über einen Dispatcher auf die GUI zugreifen, siehe hier.
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller) Dienstag, 3. Juni 2014 14:36 Kommentar korrigiert
- Als Antwort markiert Berg2381troll Mittwoch, 4. Juni 2014 12:52
Alle Antworten
-
Hallo,
und wo liegt jetzt das Problem?Vereinfacht könntest du es so machen:
DispatcherTimer timer = new DispatcherTimer(); public MainWindow(){ InitialisizeComponent(); timer.Tick += timer_Tick; timer.Interval = TimeSpan.FromSeconds(2);//Alle 2 Sekunden auslösen } void btnStart_Click(object sender, RoutedEventArgs e){ timer.Start();//Timer starten btnStart.IsEnabled =false;//Startbutton deaktivieren btnStop.IsEnabled =true;//Stopbutton aktivieren } void btnStop_Click(object sender, RoutedEventArgs e){ timer.Stop();//Timer anhalten btnStart.IsEnabled =true;//Startbutton wieder aktivieren btnStop.IsEnabled =false;//Stopbutton wieder deaktivieren } void timer_Tick(object sender, EventArgs e){ //Hier deine Daten senden und empfangen }
Eine Schleife in einem Backgroundworker wäre vielleicht besser, falls es ein Timeout gibt - sodass sich die Tick-Events nicht überschneiden.
Wenn du keinen DispatcherTimer nutzt, musst du über einen Dispatcher auf die GUI zugreifen, siehe hier.
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Bearbeitet Tom Lambert (Koopakiller) Dienstag, 3. Juni 2014 14:36 Kommentar korrigiert
- Als Antwort markiert Berg2381troll Mittwoch, 4. Juni 2014 12:52
-
Hallo,
ich würde wahrscheinlich eine Schleife verwenden, um Problemen bei Timeouts aus dem Weg zu gehen. Ich glaube allerdings, dass es mit dem DispatcherTimer auch keine Probleme gibt. Das Tick-Event wird nur ausgelöst, solange kein Eventhandler des voherigen Tick-Events noch läuft. Somit würde es auch bei einem Timeout keine Probleme geben, solange du bei einem Fehler dofort den Timer anhälst.Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets