INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Loops



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.12.2017, 18:43
Beitrag #1

Ratio Offline
LVF-Grünschnabel
*


Beiträge: 35
Registriert seit: Dec 2017

2017 Deutsch
2017
kA



Loops
Hallo Zusammen

Ich habe ein Problem, ich habe 7 parallele Loops welche Daten von 2 USB-Schnittstellen auslesen müssen. Dies klappte eigentlich ganz gut, bis ich die letzte Schleife generiert habe. Mein Problem ist, dass das Programm nie darauf zugreift, obwohl ich Queues habe, welche bereits Elemente enthalten. Es handelt sich um die Schleife, "Search Telegrams".

Kann mir jemand weiterhelfen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.12.2017, 18:59
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Loops
Hallo ratio,

Meist hilft es ja, wenn ein VI angehangen wird...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 09:13
Beitrag #3

Ratio Offline
LVF-Grünschnabel
*


Beiträge: 35
Registriert seit: Dec 2017

2017 Deutsch
2017
kA



RE: Loops
Ja das habe ich auch zuerst, habe dann aber gemerkt, dass ich das Firmenlogo noch aufgeschaltet habe Smile
Die Queue hat Elemente. Ich habe auch schon nur eine Queue in Search Telegramm versucht, aber das will einfach nicht.
Reicht es wenn ich einfach das Hauptprogram ohne die SubVI hoch lade, damit man sieht was gemeint ist?


Angehängte Datei(en)
17.0 .vi  UnidirektionaleAuswertung.vi (Größe: 66,91 KB / Downloads: 262)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 09:25 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2017 09:25 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Loops
Hallo ratio,

Zitat:Die Queue hat Elemente.
Hat das nicht jede Queue? Big Grin

Zitat:Ich habe auch schon nur eine Queue in Search Telegramm versucht, aber das will einfach nicht.
Warum nicht? Wo hakt es?

Zitat:Reicht es wenn ich einfach das Hauptprogram ohne die SubVI hoch lade, damit man sieht was gemeint ist?
Leider nicht ganz…
Man sieht leider nicht, ob in den subVIs jetzt gesendet oder gelesen wird.

Meine Vermutung:
Du hast bei dem ganzen Hin und Her in deinem Haupt-VI irgendwo DATAFLOW-Anhängigkeiten zwischen den verschiedenen Loops. Diese führen zu einem Deadlock: der Receiver wartet auf Daten vom Sender, der aber (aufgrund DATAFLOW-Anhängigkeit) noch nichts senden kann. (Vielleicht auch Sender/Receiver umgekehrt.)
Bei 6 Queues in einem VI würde ich auch den Überblick verlieren… Big Grin

Tipp: Highlight-Execution-Debugging, um zu sehen, ob irgendwo ein DATAFLOW "hängenbleibt"… Wink
Tipp2: Vorher aufräumen, um etwas mehr Überblick zu bekommen.
Tipp3: Ein kleines Test-VI erstellen, wo nur Zufallsdaten hin- und hergeschickt werden. Dort dann die Zusammenhänge aufdröseln…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 09:45 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2017 09:46 von Ratio.)
Beitrag #5

Ratio Offline
LVF-Grünschnabel
*


Beiträge: 35
Registriert seit: Dec 2017

2017 Deutsch
2017
kA



RE: Loops
Danke für deine Hilfe.
Ich habe leider praktisch keine LabVIEW Erfahrung. Ich habe lediglich Core 1 und 2 besucht, wobei man da ja nur ein Bisschen an der Oberfläche kratzt.
Ja das mit dem Aufräumen ist leider nicht so einfach. Ich habe schon relativ viele SUB-VI s generiert und der Nachteil daran ist ja, dass man dann die schreibende Queue nicht mehr sieht. Für Tipps wie man das übersichtlicher machen kann, wäre ich sehr froh, später kommt dann noch der bidirektionale Funktest dazu, dann verdoppelt sich das Ganze (Halleluja!).

In der letzten Schlaufe geht es darum, die gefilterten und aufbereiteten Telegrame eines Senders und Empfängers zu vergleichen.
Mit Elementen meine ich, dass bereits diverse "Telegrame" in der Queue sind (String) , aber trotzdem nicht ausgelesen wird.



Hier noch der Rest...


Angehängte Datei(en)
17.0 .vi  FilterTeil1(SubVI).vi (Größe: 15,85 KB / Downloads: 229)

17.0 .vi  FilterTeil2(SubVI).vi (Größe: 28,19 KB / Downloads: 233)

17.0 .vi  keineTelegrame (SubVI).vi (Größe: 14,79 KB / Downloads: 191)

17.0 .vi  PaketeBereitstellen (SubVI).vi (Größe: 25,44 KB / Downloads: 250)

17.0 .vi  TelegrameAufbereiten(SubVI).vi (Größe: 21,48 KB / Downloads: 220)

17.0 .vi  TelegrameAufbereitenEmpfangend(SubVI).vi (Größe: 18,97 KB / Downloads: 213)

17.0 .vi  TelegrameAufbereitenSendend(SubVI).vi (Größe: 17,31 KB / Downloads: 286)

17.0 .vi  UmwandelnPrüfenPackete (SubVI).vi (Größe: 20,31 KB / Downloads: 258)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 09:53
Beitrag #6

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Loops
Hallo Ratio,
in der While-Schleife "Search Telegram" werden alle Schieberegister auf 0 gesetzt, wenn die Array Schieberegister größer als 5 werden oder wenn beim Suchen im String nichts gefunden wird.
Ist das so gewollt?
Gruß
Freddy

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 10:16
Beitrag #7

Ratio Offline
LVF-Grünschnabel
*


Beiträge: 35
Registriert seit: Dec 2017

2017 Deutsch
2017
kA



RE: Loops
Diesen Teil wollte ich eigentlich ausprobieren, die Schieberegister sollten nur am Anfang 0 sein (initialisieren). Ich kam aber nicht zum testen der Schleife wegen dem beschriebenen Problem, Wenn ich Sonden setze, sind alle Werte innerhalb der Schleife unberührt. Das wird ja kaum am Schieberegister liegen oder?
Wie gesagt, diese letzte Schleife ist noch nicht getestet und ohne sie, funktioniert auch alles wie gewollt.
Und nochmals Danke für die Hilfe, ich freue mich wirklich sehr darüber....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 10:20 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2017 10:25 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Loops
Hallo Ratio,

Zitat:Für Tipps wie man das übersichtlicher machen kann, wäre ich sehr froh
Generelle Sachen:
- StyleGuide beachten: Eingänge links, Ausgänge rechts (deine SearchTelegram-Loop hat das nicht immer)

Spezielle Sachen:
- ich würde die MatchPattern-Funktion aus FilerParts2 nach FilterPart1 verschieben, das erhöht die (logische) Übersicht in beiden subVIs!

Zitat:Ja das mit dem Aufräumen ist leider nicht so einfach.
In den subVIs einfach mal Ctrl-U drücken: dann siehst du, wie einfach das sein kann! Big Grin

Zu deinem Problem:
- Dein FilterPart2 verschickt nur bedingt Strings in die Queue: bsit du dir sicher, dass hier alle gewünschten Pakete weitergeleitet werden?
- Wenn FilterPart2 nichts weitersendet, dann wird in der PrepareTelegramLocControlRX-Loop auch nichts passieren
- Dann passiert auch in SearchTelegram nichts!
Diese Verkettung von Queues ist wirklich nicht hilfreich (oder übersichtlich)!
- du liest in SearchTelegram aus zwei Queues, die aus verschiedenen Quellen gespeist werden: wenn eine der beiden leer ist, dann blockiert deine Consumer-Schleife!
- du könntest beim QueueRead einen Timeout vorgeben - dann musst du aber eben auch den Timeout-Fall speziell behandeln!

Zitat:später kommt dann noch der bidirektionale Funktest dazu, dann verdoppelt sich das Ganze (Halleluja!).
- Manchmal soll es helfen, sich vor dem Programmieren eine Programmstruktur zu überlegen - und auf Papier aufzumalen…
- Es soll auch hilfreich sein, Dinge an TestVIs auszuprobieren - bis man sie verstanden hat und sie fehlerfrei funktionieren…

P.S.: Wenn du das nächste mal mehr als 3 Anhänge bereitstellen willst: ZIP verwenden!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 10:53
Beitrag #9

Ratio Offline
LVF-Grünschnabel
*


Beiträge: 35
Registriert seit: Dec 2017

2017 Deutsch
2017
kA



RE: Loops
Danke für deine Hilfe. CTRL+U, das wird dann leider noch viel unübersichtlicher. Ich verstehe das Programm, da ich es ja selber geschrieben habe.
Ich weiss leider nicht wie man das sonst lösen könnte. Die Daten müssen bearbeitet und kontinuierlich geprüft werden, wie kann man das sonst machen? Ich hatte eine Sitzung mit einem LabVIEW Entwickler, der wusste auch nur diesen Weg, der Ansatz mit den nächsten Queues kamen sogar von Ihm.

Das Problem liegt nur bei der Queue 5 und 6, die Daten werden schön sauber und korrekt aufgelistet in den Fenstern "ready to Compare".
Ich sehe auch dass sie gleich sind, nur muss das Programm dies noch prüfen (kontinuierlich). Dazu wäre die Schlaufe "Search Telegram" vorgesehen.
Die Queue 5 und 6 werden mit "Daten" versorgt, ich sehe mit der Sonde wie der Speicher entsprechend hochzählt bzw. die Daten "ready to compare" eingelesen werden (in Queue 5 und 6).

Es handelt sich dabei um ein Streckendämfpungstest für eine Funkübertragung. Die Telegramme werden aber je nach Dämpfungswert nicht oder sehr verzerrt "auf der anderen Seite" ankommen.

Mein Ziel ist es eigentlich nur die Daten "ready to Compare" zu vergleichen (welche auch vorhanden sind). Alles andere ist +/- getestet.

Wenn mir jemand sagen kann, wie ich die Daten "zusammen bekomme", probiere ich das natürlich aus. Aber ich denke, dass geht nicht ohne Queue...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2017, 11:12
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Loops
Hallo Ratio,

Zitat:Die Queue 5 und 6 werden mit "Daten" versorgt, ich sehe mit der Sonde wie der Speicher entsprechend hochzählt bzw. die Daten "ready to compare" eingelesen werden (in Queue 5 und 6).
In beiden "Prep Telegram"-Loops wird ein "ready to compare"-Array aufgebaut? Die Daten dazu kommen aus Queue2/4…
Hast du geprüft, ob (und was) auch jeweils Werte nach Queue5/6 geschrieben wird?
Hast du geprüft, ob die Werte in der SearchTelegram-Loop ankommen?
Hast du mittlerweile (per Highlight-Execution, Breakpoints oder Sonden) geprüft, ob deine SearchTelegram-Loop überhaupt gestartet wird?

Zitat:CTRL+U, das wird dann leider noch viel unübersichtlicher
Ich habe explizit die subVIs empfohlen für den Anfang! Big Grin

Zitat:Aber ich denke, dass geht nicht ohne Queue...
Queues sind immer nur ein Mittel unter vielen. Aber sie können, richtig verwendet, den Aufwand minimieren…
(lokale/globale/Netzwerk-Variablen, FGVs aka AEs, Notifier, Channels, NetworkStreams, …)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  LV crasht beim Editieren von Event-Loops Lime 1 1.791 22.03.2024 18:02
Letzter Beitrag: Martin.Henz
  Verbindung von 2 While Loops Olli_11845 4 3.321 29.04.2020 13:10
Letzter Beitrag: Freddy
  parallele Ausführung von for-loops stsc 5 5.009 24.07.2019 15:12
Letzter Beitrag: stsc
  While-Loops nacheinander ausführen w0wka91 9 7.220 27.11.2014 23:36
Letzter Beitrag: Lucki
  While Loops in Flat Sequences beenden virtualmake 6 5.140 04.12.2013 09:29
Letzter Beitrag: GerdW
  While Loops Lukas_Bergmann 3 3.780 16.11.2013 18:19
Letzter Beitrag: Lukas_Bergmann

Gehe zu: