T0 Messung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA) +---- Thema: T0 Messung (/Thread-T0-Messung) |
RE: T0 Messung - Wall-E - 07.03.2013 09:53 Die State Machine solltest Du übrigens am Besten vorher auf dem Papier mittels Zustandsdiagramm entwerfen. Ich habe da schon ganz furchtbare Dinge gesehen, bei Leuten die das erste Mal eine State Machine gebaut und gleich los geklickt haben. ;-) Ein schönes Beispiel wie man so etwas grob macht steht in dem Artikel hier auf Mikrocontroller.net. RE: T0 Messung - GerdW - 07.03.2013 09:58 Das man sich vor dem Programmieren einen PAP (oder ähnliches) auf Papier aufmalt, setze ich immer voraus! Aber der Link ist wirklich gut: Auch in C verwendet man typedef enums für die State-Auswahl... RE: T0 Messung - Wall-E - 07.03.2013 10:48 Wie jetzt? Erst denken und dann coden? Das grenzt ja schon fast an Kommunismus! ;-) Ich habe die ganzen Einführungen zu State Machines ja auch mal gelesen und dachte dabei mehrfach "wenn ich nicht schon wüsste was ein Automat ist und wie man ihn richtig entwirft, stünde ich jetzt auf dem Schlauch". Und dann bekam ich eine "State Machine" von einem jungen Kollegen, die ich dann gleich mal weg geworfen und neu gemacht habe. Seitdem... RE: T0 Messung - Epicon - 07.03.2013 14:35 Also habe ich das richtig verstanden, dass ich quasi jedem einzelnen Case (?) dann eine eigene Funktion zuschreibe? Und das geht über die Enums? Und in die Cases programmier ich dann jeweils die Funktion rein, was gerade passieren soll, er läuft sie nach einander durch und läuft danach in den Rest des Programms? Und zu den vorangehenden Posts: das ist genau das Problem. Ich habe absolut null (!!!) programmier Erfahrung und wurde hier ins kalte Wasser geworfen mit einem mega Programm, was ich dann bitte schreiben soll RE: T0 Messung - GerdW - 07.03.2013 14:38 Hallo Epicon, jeder Case ist ein State. Die States verwaltet man über das Enum, ist "lesbarer" als eine einfache Zahl. Grundprinzip einer Statemachine: Nach jedem State wird entschieden, welchen State man als nächstes aufruft. Zitat:Ich habe absolut null (!!!) programmier Erfahrung und wurde hier ins kalte Wasser geworfen mit einem mega Programm, was ich dann bitte schreiben sollSo wird ein Schuh draus: Du hast eine Aufgabe angenommen, die du auch hättest ablehnen können, obwohl du dir deiner mangelnden Vorbildung bewußt warst. Jetzt musst du halt lesen/lernen... RE: T0 Messung - Wall-E - 07.03.2013 15:43 (07.03.2013 14:35 )Epicon schrieb: Also habe ich das richtig verstanden, dass ich quasi jedem einzelnen Case (?) dann eine eigene Funktion zuschreibe?Ich versuche auch mal eine Erklärung: - In jedem Rahmen der Case-Struktur ist eine gewisse Funktionalität programmiert. - Diese wird "angewählt", indem in einem Schieberegister ein Enum übergeben wird. Der Wert des Enum gibt an, welcher Case (= State = Zustand) jeweils ausgeführt werden soll. - Durch das Schieberegister kann in jedem State neu entschieden werden, welcher als Nächstes aufgerufen wird. - Initialisierung, Beenden usw. finden in eigenen Cases statt. Außerhalb der State Machine gibt es damit bei kleineren Programmen in der Regel kaum von Code. Beispiel: Init => Heizen bis Zieltemperatur erreicht => Messen => Neue Zieltemperatur setzen => Heizen bis Zieltemperatur erreicht => Messen => ... => Ende Vorteil: Man sieht immer was gerade passiert, der Code ist schön übersichtlich und damit ist die Geschichte leicht zu debuggen. (07.03.2013 14:35 )Epicon schrieb: Und zu den vorangehenden Posts: das ist genau das Problem. Ich habe absolut null (!!!) programmier Erfahrung und wurde hier ins kalte Wasser geworfen mit einem mega Programm, was ich dann bitte schreiben sollWow. Das ist echt hart. Nur selber wenn mich jetzt mein Mitleid übermannt und ich mich hinsetze und Dir den ganzen Kram programmiere, hilft Dir das mal so gar nicht weiter mit Deinem Opa-LV... RE: T0 Messung - Epicon - 07.03.2013 16:03 (07.03.2013 14:38 )GerdW schrieb: So wird ein Schuh draus: Du hast eine Aufgabe angenommen, die du auch hättest ablehnen können, obwohl du dir deiner mangelnden Vorbildung bewußt warst. Jetzt musst du halt lesen/lernen... Deswegen bin ich ja hier im Forum, um genau das zu tun! Und, ja das ist wohl eine schwere Aufgabe, aber die anderen Themen haben mich noch weniger interesiert und bei diesem habe ich einen Ansporn (07.03.2013 15:43 )Wall-E schrieb: Wow. Das ist echt hart. Nur selber wenn mich jetzt mein Mitleid übermannt und ich mich hinsetze und Dir den ganzen Kram programmiere, hilft Dir das mal so gar nicht weiter mit Deinem Opa-LV... Du könntest ja von jedem einzelnen Teil einen Screenshot machen? Ich werde mir später deine Beschreibung nochmal genauer durchlesen, aber ich glaube, langsam verstehe ich es. Vielen Dank schonmal für die Antworten und wenn ich weitere Fragen habe, frag ich und hoffe auf Antworten RE: T0 Messung - Wall-E - 07.03.2013 23:41 Mal eine andere Frage: Die Ansprache der Hardware hast Du im Griff? Oder ist das dann die nächste Baustelle? RE: T0 Messung - Epicon - 08.03.2013 08:12 (07.03.2013 23:41 )Wall-E schrieb: Mal eine andere Frage: Die Ansprache der Hardware hast Du im Griff? Oder ist das dann die nächste Baustelle?Geschieht über GPIB und ist kein Problem (zumindest bis jetzt hab ich da alles hinbekommen) RE: T0 Messung - Epicon - 08.03.2013 09:49 So, ansich, sollte es jetzt passen. Allerdings ist mir nicht klar, was quasi in den zweiten Case reinsoll. Ich muss mir das ganze doch quasi wie einen "True" und einen "False" Case vorstellen? Im "True" Case sind die verschiedenen Enums. Aber was muss in den "False" Case rein? Oder brauche ich für jeden Enum einen eigenen Case? Das hatte ich zu Beginn und da blieb das Programm immer im ersten hängen .. |