Hallo Alle zusammen,
ich habe ein kleines Programm entwickelt was einen Automaten simulieren soll, nun würde ich gerne noch einen Taster einfügen der es mir ermöglicht wieder in die erste Struktur zu springen und von dort an wieder zu beginnen.
Habe schon ein paar Sachen ausprobiert komme aber irgendwie nicht weiter. )=
Würde mich sehr über eine Lösung freuen.
Ps.: Bin noch kaltblütiger Anfänger.
Hallo Protest,
Zitat:einen Automaten simulieren soll, nun würde ich gerne noch einen Taster einfügen der es mir ermöglicht wieder in die erste Struktur zu springen und von dort an wieder zu beginnen
Wenn die (Stich-)Worte "Automat", "Frames einer Sequenz", "Hin- und Herspringen" fallen, dann lautet die Standardantwort "State Machine"!
LabVIEW kommt mit einem Beispiel-Projekt daher, welches sich passenderweise "State Machine" (Zustandsautomat) nennt. Schau dir das an, ein Seitenblick bei Wikipedia kann zum Verständnis auch nicht schaden.
Weitere Tipps:
- LabVIEW arbeitet datenflussbasiert, du brauchst deshalb keine "Variablen" wie sonst bei textbasierter Programmierung. Auch Sequenzen selbst sind häufig unnötig.
- Insbesondere der dritte Frame enthält auffällig viel Rube-Goldberg-Konstrukte
- Was soll es bringen, eine FOR-Loop zu erstellen, die nur genau einmal durchlaufen soll?
- Die Schleife im letzten Frame arbeitet ungebremst. Musst du wirklich mehrere Male pro Mikrosekunde einen Button abfragen?
- Lese dir die LabVIEW-Hilfe zum Thema Schieberegister durch, du wirst die brauchen!
P.S.:
Kommst du aus Berlin? Oder studierst du dort?
#9000
Erst einmal vielen Dank für die schnelle Anwort und die vielen Tipps.
Das mittels einer Case-Strukturen zu lösen habe ich mir auch schon gedacht, nur stehe ich da gerade ziemlich auf dem Schlauch und habe da noch keine brauchbare Idee gehabt. =/
Zu deinen Tipps:
- Was heißt für dich Rube-Goldberg-Konstrukte? =D
- Was wäre denn die einfachere/bessere Variante zu einer For-Schleife?
- Der Button in der letzten Schleife müsste nur einmal am Ende als Bestätigung abgefragt werden.
Wie schon gesagt, bin halt noch in den Anfängen. )=
Ps.: Ja ich studiere in Berlin, wieso?
Hallo Protest,
Zitat:Was heißt für dich Rube-Goldberg-Konstrukte?
Das erläutert Wikipedia ganz gut…
Zitat:Was wäre denn die einfachere/bessere Variante zu einer For-Schleife?
Es ging hier um eine FOR-Loop, die nur
genau einmal durchläuft. Eine solche FOR-Loop ist schlichtweg unnötig… (oder auch Rube-Goldberg!)
Zitat:Der Button in der letzten Schleife müsste nur einmal am Ende als Bestätigung abgefragt werden.
Du kannst den Button durchaus öfter abfragen, aber bitte nicht so oft wie momentan. Nimm doch einfach eine Wartezeit von 100ms mit in die Schleife! (Zum Vergleich: kontrolliere die CPU-Last ohne Wartezeit und mit…)
Zitat:nur stehe ich da gerade ziemlich auf dem Schlauch und habe da noch keine brauchbare Idee gehabt.
Es geht nicht um die Case-Struktur allein, sondern um eine komplette StateMachine.
Hast du dir das mitgelieferte LabVIEW-
Projekt angeschaut?
(11.02.2014 14:49 )GerdW schrieb: [ -> ]Zitat:Der Button in der letzten Schleife müsste nur einmal am Ende als Bestätigung abgefragt werden.
Du kannst den Button durchaus öfter abfragen, aber bitte nicht so oft wie momentan. Nimm doch einfach eine Wartezeit von 100ms mit in die Schleife! (Zum Vergleich: kontrolliere die CPU-Last ohne Wartezeit und mit…)
ALLE While-Loops laufen ungebremst und lasten somit einen Prozessorkern zu 100% aus. In der Zeit eine Multi-Core merkt das heute bloß keiner mehr. Vor 10-15 Jahren hättest du sofort gemerkt, weil du plötzlich den Computer nicht mehr bedienen konntest.
Gruß, Jens
P.S.: Ich möchte lobend erwähnen, dass sich der Spaghetti Grad im Blockdiagramm in Grenzen hält.
Okay, nun ist mir auch der Begriff Rube-Goldberg-Konstrukt geläufig.
Das mit der For-Schleife habe ich eingesehen und auch gleich mal behoben, danke. Aber die Abfrage des Tasters ist erst einmal nicht so wichtig, da es wie schon erwähnt bei den heutigen Systemen nicht merkbar ist und das Programm auch klein ist.
Habe mir jetzt erst einmal zum Thema StateMachine ein Video bei Youtube angesehen, ist das Projekt auch in der Studenversion enthalten? Habe da bisher nichts gefunden, bzw keinen Zugriff drauf.
Die Frage ist auch, ist hier der Aufbau einer StateMachine von nöten oder gibt es noch eine schnellere/einfachere Lösung?
Zitat:P.S.: Ich möchte lobend erwähnen, dass sich der Spaghetti Grad im Blockdiagramm in Grenzen hält.
Na immerhin etwas, danke. =D
Gruß.
Muster für State-Machine, zu finden unter File -> New
...:
[
attachment=48469]
Ja, es mag schnellere Lösungen geben, aber das wird eigentlich nur noch mehr "Pfusch", da du überall noch Case-Strukturen etc. einfügen musst.
Bei einer State-Machine hast du den Vorteil, dass du ohne größere Problem wieder zum Anfang des Programms springen kannst.
Außerdem wird dein Code übersichtlicher werden.
Gruß, Jens
Vielen Dank,
habe es gefunden und es so weit umgesetzt, aber er springt immer noch nicht zum "Anfang" zurück.
Könnt Ihr mir noch einen Tipp geben? (=
kannst du da mal bitte eine Version 2011 draus machen?
Habe z.Zt. keine 2012-er zur Verfügung.
Gruß, marko