LabVIEWForum.de
Debugging / Highlight Funktion - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Debugging / Highlight Funktion (/Thread-Debugging-Highlight-Funktion)

Seiten: 1 2


Debugging / Highlight Funktion - stefan1312 - 26.08.2019 16:31

Hallo!

Ich hätte eine kurze Frage: verwende in meinem Labview Programm eine Producer / Consumer Struktur
mit mehreren parallelen While Schleifen.
Würde mit zum Debuggn gerne eine der Schleifen über die Highlight Funktion ansehen / und eben nicht das ganze Programm, da dies
ziemlich lange dauert.

Kann man nur eine Schleife zum Debuggen im Highlight Modus ausführen und das restliche Programm mit normaler Geschwindigkeit?
Würde mir sehr helfen.

Vielen Dank!

LG


RE: Debugging / Highlight Funktion - GerdW - 26.08.2019 17:30

Hallo Stefan,

Zitat:verwende in meinem Labview Programm eine Producer / Consumer Struktur mit mehreren parallelen While Schleifen.
Das hört sich gut an!

Zitat:Kann man nur eine Schleife zum Debuggen im Highlight Modus ausführen und das restliche Programm mit normaler Geschwindigkeit?
Wenn du deine Producer-Consumer-Struktur sauber programmiert hast, dann kannst du die beiden Schleifen jeweils ganz einfach in jeweils ein eigenes (sub)VI verfrachten.
Und dann guckst du dir eben nur eines der beiden subVIs mit Highlight-Execution an…

Oder du steigst auf LV2019 um, siehe hier S. 17!


RE: Debugging / Highlight Funktion - stefan1312 - 26.08.2019 20:26

ok Vielen Dank!

Leider löst das mein derzeitiges Problem nur bedingt.
Ich lese in meiner letzten while Schleife Daten aus mehreren Queues aus und speichere
diese in einem TDMS File ab.

Leider bleibt die Schleife stehen (in Case 1) - und ich sehe keinen Grund.
Würde hierfür eine sinnvolle Möglichkeit suchen diese Schleife zu debuggen.

Mir ist leider noch nicht ganz bewusst, wie man bei mehreren Queues usw ein sinnvolles Error Handling umsetzt.

Das mit den SubVi`s werde ich noch versuchen umzusetzen!, Danke für den Tipp
Vl erkennst du einen Fehler in meinem Code, oder hast allgemein Tipps wie ich diesen besser aufbauen kann.

Ich häng mal ein paar Bilder an
Vielen Dank auf alle Fälle!

Verwende Labview 2017

LG

Kurz zu Beschreibung meines Programms:
Bei Programmstart springt mein Programm automatisch in Case 0.
Sobald ich in der Benutzeroberfläche auf den BT_Messung starten drücke - wird der Inhalt der Queue gelöscht und 2 in die Queue geschrieben.
Wodurch mein Programm in Case 2 springt, in welchen ich zunächst die TDMS Datei konfiguriere.
Anschließend schreiben ich permanent 1 in die Queue , wodurch mein Programm permanent in Case 1 springen sollte und somit die Werte in die TDMS
Datei geschrieben werden sollen.

Leider wie gesagt wird meine Schleife nur 2 mal ausgeführt und ich finde den Fehler nicht, da ich am Debuggen hänge.
Wäre echt super könnte mir jemand von euch auf die Sprünge helfen. Blush


RE: Debugging / Highlight Funktion - GerdW - 26.08.2019 20:54

Hallo Stefan,

Zitat:Leider bleibt die Schleife stehen (in Case 1) - und ich sehe keinen Grund.
Würde hierfür eine sinnvolle Möglichkeit suchen diese Schleife zu debuggen.
Du hast nirgends einen Timeout bei den Dequeue-Funktionen: wenn eine Queue nichts liefert, bleibt die Statemachine stehen…
Das solltest du mit Highlight-Executionen eigentliche sehen. Oder eben mit Probes: die zeigen auch an, wenn zum letzten Mal Daten an einem Draht entlang flossen!


RE: Debugging / Highlight Funktion - stefan1312 - 26.08.2019 21:02

Hm ich weiß jz leider nicht genau was du meinst mit dem Timeout
bei den Dequeue Funktionen.
Kannst du mir vl ein kleines Beispiel zu dem Thema posten?



LG


RE: Debugging / Highlight Funktion - GerdW - 27.08.2019 06:58

Hallo Stefan,

Zitat:Hm ich weiß jz leider nicht genau was du meinst mit dem Timeout bei den Dequeue Funktionen.
Lies dir doch einfach mal die Hilfe zur Dequeue-Funktion durch…
Rtmfx

Zitat:Kannst du mir vl ein kleines Beispiel zu dem Thema posten?
Evtl. wirst du von der Hilfe schon auf ein Beispiel aus dem Beispielfinder verwiesen…


RE: Debugging / Highlight Funktion - Freddy - 27.08.2019 08:59

Hallo Stefan,
ich baue mir immer einen String-Array auf, der sammelt meine Nachrichten in der Reihenfolge, wie sie abgearbeitet werden.
Mann muss nur dafür sorgen, dass das Array irgend wann wieder geleert wird.

Bei Deinem Problem könnte auch eine Error Meldung alles abbrechen.

Gruß
Freddy

In Deiner Ereignisstruktur ist ein Timeout auf 500ms gestellt. Was passiert da drin?


RE: Debugging / Highlight Funktion - stefan1312 - 27.08.2019 10:25

Vielen Dank!

@ GerdW: die Hilfe hab ich mir bereits durchgelesen, aber in den Beispielen leider niergends die Verwendung des
Timeouts gesehen. Hoffe das ich nichts übersehen habe.

Deshalb..


@ Freddy: meinst du das deine Schreibbefehle nicht wie bei mir als Zahl sondern eben als String übergeben werden?

Sowas ähnliches hät ich auch vorgehabt, aber als Enum mit ner Type-Def .. hoffe wir meinen das gleiche.

Zur Error Meldung: Meinst du, wenn eine Queue einen Fehler hat, dass eben das gesamte Programm abgebrochen wird?

LG


RE: Debugging / Highlight Funktion - GerdW - 27.08.2019 10:42

Hallo Stefan,

Zitat:die Hilfe hab ich mir bereits durchgelesen, aber in den Beispielen leider niergends die Verwendung des Timeouts gesehen.
Schade.
Schließ doch einfach mal eine sinnvolle Zahl an TimeOut an: Dequeue wartet dann maximal diese Zeitspanne auf neue Werte in der Queue. Dann musst du nur noch das entsprechende Timeout?-Output auswerten…

Zitat:Meinst du, wenn eine Queue einen Fehler hat, dass eben das gesamte Programm abgebrochen wird?
Nur, wenn du es so programmierst…


RE: Debugging / Highlight Funktion - Freddy - 27.08.2019 10:44

Zitat:Zur Error Meldung: Meinst du, wenn eine Queue einen Fehler hat, dass eben das gesamte Programm abgebrochen wird?
Du verwendest Schieberegister in den Errorleitungen. Ein Error bedeutet keine weiter Funktion in der WHILE Schleife wird ausgeführt.
Es seiden Du löscht den Error in einer IF Anweisung in der WHILE Schleife.

Zitat:Sowas ähnliches hät ich auch vorgehabt, aber als Enum mit ner Type-Def .. hoffe wir meinen das gleiche.
Du verwendest für die If Anweisungen die Variable "Status aus Queue". Wenn du die Ergebnisse in ein Array packst (bei mir ein String Array), bekommst Du die Reihenfolge der abgearbeiteten Queues.
Wenn Du dann noch in gleicher Weise ein Error Array erstellst, sagt die das Error Array an welchem Index des Status von Queue den Error erzeugt hat.

LG