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 

Mehrere Tests parallel laufen lassen



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!

18.10.2024, 19:32 (Dieser Beitrag wurde zuletzt bearbeitet: 18.10.2024 19:32 von GerdW.)
Beitrag #21

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Mehrere Tests parallel laufen lassen
Hallo Minako,

Zitat:Zum Glück hatte ich letzte Woche einen Python Einsteigerkurs und weiß zumindest was die Shell ist.
Ich habe jedoch null Ahnung wie man mit dieser Arbeitet...
Das mit der Shell war nur ein Beispiel, um zu zeigen, wie man eine EXE mit Parametern aufrufen könnte…
(Grumpy old man: Diese Jugend von heute, weiß nicht mal was eine Shell ist… Big Grin )

Zitat:Gibt es irgendwo Info welche Befehle ich der Shell übergeben muss, damit sie die .exe öffnet?
Du musst nicht mit der Shell arbeiten.
Du musst nur beim AppBuilder angeben, dass deine EXE später "command line arguments" entgegen nehmen soll. (Einstellung in den Build-Settings.)
Und in deiner EXE diese Argumente abfragen (PropertyNode/Methode der App) und auswerten. (Dazu müsste es auch ein Beispiel geben…)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.10.2024, 09:44
Beitrag #22

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: Mehrere Tests parallel laufen lassen
(18.10.2024 19:32 )GerdW schrieb:  Hallo Minako,

Zitat:Zum Glück hatte ich letzte Woche einen Python Einsteigerkurs und weiß zumindest was die Shell ist.
Ich habe jedoch null Ahnung wie man mit dieser Arbeitet...
Das mit der Shell war nur ein Beispiel, um zu zeigen, wie man eine EXE mit Parametern aufrufen könnte…
(Grumpy old man: Diese Jugend von heute, weiß nicht mal was eine Shell ist… Big Grin )
Oder auch nur warum man an der autoexec.bat oder der config.sys Änderungen vornehmen sollte wenn man bestimmte Spiele startet. Grundwissen Computer halt :-P

Zitat:
Zitat:Gibt es irgendwo Info welche Befehle ich der Shell übergeben muss, damit sie die .exe öffnet?
Du musst nicht mit der Shell arbeiten.
Du musst nur beim AppBuilder angeben, dass deine EXE später "command line arguments" entgegen nehmen soll. (Einstellung in den Build-Settings.)
Und in deiner EXE diese Argumente abfragen (PropertyNode/Methode der App) und auswerten. (Dazu müsste es auch ein Beispiel geben…)

Die vereinfachte Erklärung ist:
Das erste was du in die Shell eingibst (der erste vollständige String) wird als "0." Argument interpretiert und ist dein eigentlicher Befehl um das Program auszuführen. Alles was danach kommt wird als einzelne Argumente an deine Exe "übergeben" - die dann damit machen kann was sie will. Der PC lässt die Exe also wissen, dass der Nutzer mehr im Sinn hatte als sie einfach nur auszuführen. Das kann dann zum Beispiel als Shell Commando so aussehen:

Code:
shutdown -r NOW
(weis nicht ob der in der Reihenfolge noch richtig ist):

"shutdown" ist die Neustart / Runterfahrroutine von Windows. Führst du die ohne Kommandozeilenparameter aus, wirft die dir ne Info zurück welche sie gerne hätte um zu wissen was sie tun soll. In dem Fall dann als ersten (Leerzeichengetrennten) Parameter "-r" (für Reboot) und als zweiten "NOW" (für den Ausführungszeitpunkt).

Für dich könnte so eine Syntax also Beispielhaft so aussehen:
"C:\MeinOrdner\SubVI.exe 3600 COM15"
Das würde dann versuchen die SubVI.exe auszuführen, die als erstes Argument (glaube ich) die "3600" übergeben kriegt und als zweites "COM15" (weis grade nicht ob das eigentliche Kommando mit übergeben wird, ausprobieren, off by one error Gefahr). Die Argumente gehen als Strings rein, die 3600 musst du also noch in eine Zahl umwandeln um das (zum Beispiel) 3600s laufen zu lassen (prinzipiell kannst du sogar die Einheit mit übergeben, wenn du sehr variabel bei den Messzeiten sein willst). "COM15" würdest du dann als den Port übergeben über den du auf das Messequipment zugreifst.

Achtung dabei immer: Selbst wenn du sagst, es wird auf unterschiedliche Messgeräte zugegriffen, muss man immer annehmen, dass der Nutzer dumm ist und versehentlich versucht auf eine bereits in Benutzung befindliche Resource zuzugreifen. Es macht daher Sinn solche Fälle zumindest in der Fehlerbehandlung im SubVI zu bedenken (Crash beim starten abfangen; schlimmstenfalls frisst das sich sogar einfach hart fest, da es auf verfügbar werden der Resource wartet (was vielleicht weitere 99 Tage dauert). Ohne Feedback weis der Nutzer dann nicht was los ist.

Handhaben kannst du sowas entweder im Main VI (wo du Rückinfo einholst ob Resourcen noch belegt sind; über Commandozeile glaube schwierig, da müsstest du die Kommunikation mit den SubVIs wahrscheinlich über TCP/IP und den Localhost laufen lassen (aufpassen bei den Ports!); oder über ein File in das du die geblockten Resourcen einträgst (wichtig ist dann, dass die SubVIs die auch wieder selbst freigeben)). Der Vorteil bei getrennten Exen liegt allerdings immerhin darin, dass du die Tasks auch für Windows voneinander getrennt hast. Daher: Wenn du mal einen Messtask per Taskmanager abschießen musst, kollabieren nicht gleich alle anderen mit.

P.S: Mittlerweile kann die Shell (deutsch: Kommandozeile) glaube auch mit Leerzeichen im Dateinahmen / Ordnernamen umgehen. Da musst du dann aufpassen, dass du das Kommando mit "" einrahmst um anzuzeigen wo das Kommando anfängt und endet. Das wird auf modernen Systemen immer wichtiger, da häufiger auch mal Leerzeichen in den Ordnernamen vorkommen und es sehr unglücklich ist wenn dadurch dein Kommando mittendrin unterbrochen und unsinnig verarbeitet wird. Aus:

Code:
C:\Mein Ordner\SubVI.exe 3600 COM15
würde dabei der Befehl:
"C:\Mein" - der auf Kommandozeilenebene bereits zu einem Fehler führen dürfte.
"Ordner\SubVI.exe" wäre dann das erste Argument, danach "3600" und "COM15".

Korrekt müsste es sein:
Code:
"C:\Mein Ordner\SubVI.exe" 3600 COM15
damit die Kommandozeile weis, dass der Teil nach dem Leerzeichen (und das Leerzeichen selbst) immer noch zum Befehl gehören und nicht bereits Argumente sind die ans Programm übergeben werden sollen.

Hoffe das hilft ein bisschen als Abriss dazu.

P.P.S: Achja TCP/IP und Ports: Das Problem wenn du mit dem Localhost redest ist, dass der Rechner mit sich selbst redet und das dadurch (wenn ich es nicht Falsch in Erinnerung habe) verschiedene Ports für die Kommunikation gebraucht werden um Sender und Empfänger richtig zuzuordnen. Versuchst du mit verschiedenen SubVIs über den gleichen Port zu reden, ist auch hier wieder der Port bereits geblockt. In der Variante mit Kommandozeile ist allerdings glaube ich auch der "Networkstream", "globale Variablen", "FGV" oder ähnliches was man zum Austausch nutzen könnte verfügbar.

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
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
  2 Motoren Synchron laufen lassen 911tom 5 9.519 22.12.2017 08:50
Letzter Beitrag: kpa
  Stop während Eventstruktur am laufen ist haydenfan 5 6.039 05.11.2013 09:50
Letzter Beitrag: haydenfan
  Mehrere Schleifen parallel ausführen! houss 7 12.983 06.08.2013 14:41
Letzter Beitrag: houss
  vi 1 sek. laufen und speichern wen 9 6.208 14.01.2013 10:20
Letzter Beitrag: GerdW
  SubVi Parallel laufen und schliessen Dom0503 8 9.086 01.08.2011 14:24
Letzter Beitrag: Dom0503
  Sub-VI parallel und unabhängig laufen lassen viperjumper 2 6.103 21.07.2011 09:42
Letzter Beitrag: viperjumper

Who read this thread?
2 User(s) read this thread:
Kiesch, Minako

Gehe zu: