LabVIEWForum.de - Programm hängt sich auf

LabVIEWForum.de

Normale Version: Programm hängt sich auf
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Hallo Benutzer,

Zitat:Ich hoffe ihr seht was ich meine.
Nein, sehen kann man das nicht. Vor allem, weil es bei mir funktioniert… Big Grin

Zitat:Egal was ich beim Spreadsheet einstelle(%d, %f oder %f)
Es gibt ja noch mehr Formatcode - die alle in der LabVIEW-Hilfe erläutert werden!
Ich empfehle dir mal, die Hilfe zu "%.;" durchzulesen…

Zitat:Jetzt schickt er mir alles in einer Zeile.
Dann brauchst du die LF-Chars natürlich nicht zu filtern!
Du hast aber schon verstanden, was ich da (und auch warum) gemacht habe?

Und warum befindet sich das VISAOpen immer noch in der Schleife??? Erstens gehört es dort nicht hin und zweitens ist es nach VISAConfigureSerialPort unnötig…
Guten Abend,
vielen Dank für die weitere Hilfe. Ich dachte ich wäre soweit fertig und dann kommen immer wieder neue Fehler oder Dinge dazu.

Hier meine nächsten Fragen:

Solange der Arduino angeschlossen ist funktioniert es (Das Pressure VI) auch. Wenn er nicht angeschlossen ist kommt folgende Fehlermeldung:
[attachment=59046]
Ich denke es ist ein Timeout fehler, vielleicht. Hast du einen Tip?

Außerdem ist das VI sehr langsam beim schließen, wenn Daten ankommen (Dauer ca. 5-7 sec). Hast du einen Tip?

Ich möchte das VI mit einem anderen VI öffnen und parallel zugriff auf beide offenen VI's haben. Das öffnen und schließen funktioniert. Aber wenn das Pressure VI läuft, kann ich auf dem anderen VI nichts machen, als ob es im Hintergrund läuft (dabei sind die beiden VI's auf zwei Monitoren verteilt). Ich habe die VI Einstellungen schon bemüht, aber leider ohne Erfolg.


VI 2 (Pressure): [attachment=59047]

VI 1: [attachment=59048]


Kann ich das Pressure VI auch irgendwie programmieren das es automatisch erkennt an welchem USB Port der Arduino hängt? Dann muss der User das später nicht machen.


Edit:
Zitat:
"Du hast aber schon verstanden, was ich da (und auch warum) gemacht habe?"

Ich denke schon. Du hast die ankommenden Daten in eine Zeile geschrieben und nicht untereinander. Oder?
Hallo Benutzer,

was hast du denn da gemacht???

Wenn man das "Aeronautical Interface"-BD öffnet, sieht man als erstes eine Event-Struktur in einer Schleife ("UDP Sender…"):
- dort gehen von links 6 UDP-Referenzen rein
- aus dem Event kommt rechts aber nur noch eine Referenz raus: wo werden die anderen 5 UDP-Referenzen geschlossen???
- warum sieht man aber trotzdem am rechten Rand der Eventstruktur (gefühlt) 2 Dutzend Tunnel für UDP-Referenzen??? Warum wird in JEDEM Event JEDE UDP-Referenz mehrfach verzweigt und auf mehrere Ausgangstunnel verteilt???
AUFRÄUMEN!

Zitat:Aber wenn das Pressure VI läuft, kann ich auf dem anderen VI nichts machen, als ob es im Hintergrund läuft (dabei sind die beiden VI's auf zwei Monitoren verteilt). Ich habe die VI Einstellungen schon bemüht, aber leider ohne Erfolg.
Dann musst du eben mal genauer hinschauen!
Das Pressure-VI ist als "Dialog" eingestellt - und so ein Dialog blockiert eben andere Fenster… (VI-Properties, "Window Appearance")

Zitat:Ich denke es ist ein Timeout fehler, vielleicht.
Wieso denkst du das?
Da steht doch eindeutig, dass da eine Resource nicht verfügbar ist! (Wundert dich das, wenn der Arduino nicht angeschlossen ist?)


Zitat:Außerdem ist das VI sehr langsam beim schließen, wenn Daten ankommen (Dauer ca. 5-7 sec). Hast du einen Tip?
Das Pressure-VI sollte nach ca. 1s beendet sein (Wartezeit von 500ms beim VISARead, zwei Iterationen bis zum Schließen wegen Race Condition…)

Zitat:Kann ich das Pressure VI auch irgendwie programmieren das es automatisch erkennt an welchem USB Port der Arduino hängt?
Ja.
Zuerst die vorhandenen seriellen Schnittstellen abfragen. Dann jede Schnittstelle testen, ob das gewünschte Gerät dranhängt und antwortet…
Hallo

Zitat:
"Lösung: Einfach ALLE 6 UDP-Referenzen durchverdrahten!
Tipp: Den Timeout-Case verdrahten, dann alle "durchverdrahteten" Drähte am Ausgangstunnel als "offene Case erstellen&verbinden" verknüpfen!"

Das habe ich gemacht !



Zitat:
"Das Pressure-VI sollte nach ca. 1s beendet sein (Wartezeit von 500ms beim VISARead, zwei Iterationen bis zum Schließen wegen Race Condition…)"
Wo finde ich denn die 500ms? Meine 500 sind ja nur der Byte count.

Wie sage ich dem VI das es noch warten soll bis eine Meldung kommt? Jetzt sagt er nach einer Sekunde das was fehlt. Und es kann der Problemfall nicht gezeigt werden. Wenn Daten ankommen dauert es eine Weile bis das Programm beendet wird
Hallo Benutzer,

Zitat:Das habe ich gemacht !
Ja - aber nur einmal pro Referenz!
Und ich hatte auch gesagt, dass jede Referenz, die du öffnest, auch von dir wieder geschlossen werden sollte!

Zitat:Wo finde ich denn die 500ms? Meine 500 sind ja nur der Byte count.
Mein Fehler…
Der TimeOut für die serielle Schnittstelle wird schon beim VISASerialPortConfig festgelegt!

Zitat:Wie sage ich dem VI das es noch warten soll bis eine Meldung kommt?
Indem du auf den TimeOut-Fehler entsprechend (programmatisch) reagierst und dann versuchst, wieder Daten (="eine Meldung kommt") zu lesen.

Zitat:Jetzt sagt er nach einer Sekunde das was fehlt.
Dann hast du wohl einen TimeOut von 1s eingestellt.

Zitat:Und es kann der Problemfall nicht gezeigt werden.
???

Zitat:Wenn Daten ankommen dauert es eine Weile bis das Programm beendet wird
Wenn Daten ankommen, sollte es eben "keine Weile" dauern, bis die Schleife iteriert.
Es sollte eigentlich längern dauern, wenn VISARead auf Daten wartet, die aber nicht kommen…
Zitat:
"Und ich hatte auch gesagt, dass jede Referenz, die du öffnest, auch von dir wieder geschlossen werden sollte!

Ich glaube jetzt habe ich es verstanden
[attachment=59053]

Zitat:
"Dann hast du wohl einen TimeOut von 1s eingestellt."
Ich habe den TimeOut nicht geändert. ER steht auf den Standartwert und das sind 10000ms.


Zitat:
"Wenn Daten ankommen, sollte es eben "keine Weile" dauern, bis die Schleife iteriert.
Es sollte eigentlich längern dauern, wenn VISARead auf Daten wartet, die aber nicht kommen…"

Genau das ist der Probemfall den ich nicht zeigen kann, da das Programm sofort sagt das etwas fehlt. Es wartet die 10 sec nicht.


EDIT:

Zitat:
"Indem du auf den TimeOut-Fehler entsprechend (programmatisch) reagierst und dann versuchst, wieder Daten (="eine Meldung kommt") zu lesen."

Ich habe das jetzt so gelöst. Leider bricht das VI bei Stop nicht sofort ab.
[attachment=59054]
Hallo Benutzer,

Zitat:Ich habe das jetzt so gelöst. Leider bricht das VI bei Stop nicht sofort ab.
Das sieht doch ganz gut aus!
Das mit dem Stop liegt an zwei Gründen:
- Race Condition: der STOP-Button wird lange vor einem gemeldeten Fehler abgefragt und die Schleife deshalb nochmal durchlaufen.
- Es dauert eben bis zu 10s (=TimeOut), bis das VISARead den DATAFLOW freigibt…
Jetzt habe ich wieder ein neues Problem.

Im aeronautical und im pressure VI bekomme ich Daten über USB. Leider funktioniert es erst parallel wenn ich das pressure VI neu starte.

Kann kann man das beheben? Soll ja gleich funktionieren.

EDIT:
Fehler kommt folgender:
[attachment=59055]

Ich verstehe es aber nicht, da es nach dem Neustart sofort funktioniert.
Ist der VI-Stand immer noch derselbe wie vor 7 h?

Gruß, Jens
Nicht ganz.

Hier das aktuellste:

[attachment=59056]
Seiten: 1 2 3 4 5
Referenz-URLs