Steuerung des Programmablaufs mit Textskripten

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Steuerung des Programmablaufs mit Textskripten

    Hallo,

    ich grübel nun schon einige Zeit erfolglos wie ich folgendes realisieren kann:

    Mein Programm zeichnet im sekundentakt verschiene Messwerte auf. Darüber hinaus ist es möglich manuelle Änderung verschiedener Parameter durchzuführen (z.B.Temperatur usw.). Nun würde ich dies gern automatisieren indem ich eine zeitliche Ablaufsteuerung implementiere, also das zu einer bestimmten Zeit (oder nach einer gewissen Zeitänderung) ein Wert entsprechend den Vorgaben verändert wird. Das wäre vermutlich noch kein großes Problem mit einem Timer und einem konkreten, sich nicht ändernden Ablauf. Das ganze soll aber so flexibel gestaltet werden, das der Ablauf mittels Textdatei (z.B. CSV) vorgegeben werden kann. Also Beispielsweise so:

    ID; Parameter; Wert; Dauer;
    0;Temperatur;30;20;
    1;Druck;1;30;
    2;Temperatur;100;20;

    Das Format sowie die möglichen Parameter wären dabei im Programm hinterlegt. Diese Datei soll dann vom Programm geprüft, interpretiert und eingelesen werden (Vielleicht in eine Datatable..?). Danach sollen alle Schritte der Reihenfolge nach ausgeführt werden. Ich hoffe es ist verständlich was ich meine...?

    Ich nehme an das es so etwas bereits gibt. Da ich das Rad nicht neu erfinden möchte, wäre ich dankbar wenn mir jemand hinweise und/oder Links zu entsprechenden Lösungsansätzen zukommen lassen könnte. Unter Ablaufsteuerung finde ich leider nix passendes.
    Hallo und danke für die schnelle Antwort,

    die Klasse kannte ich bisher nicht. Wenn ich das richtig verstanden habe, reagiert sie wenn sich an einer bestimmten Datei etwas ändert und durch Events kann man dann z.B. die Datei neu einlesen. An sich ne tolle Sache welche ich sicher an anderer Stelle nutzen werde aber so meinte ich das hier nicht.
    Ich möchte die Textdatei manuell einlesen. Danach sollen Änderungen oder auch das löschen/verschieben der Datei keine Auswirkungen auf das Programm haben. Die Datei wird im Vorfeld erstellt und dann nur ins Programm Importiert. Die Textdateien können sich je nach Aufgabe in der Anzahl der Zeilen unterscheiden. Anzahl und Reihenfolge der Spalen bleibt aber gleich.
    @metzelmax Das sind mehrere Probleme auf ein Mal.
    Grundsätzlich ist das kein Problem.
    Du liest eine Zeile / einen Datensatz ein und arbeitest ihn ab.
    Dazu ist primär eine Syntax-Prüfung erforderlich, ob die Strings ühaupt korrekt sind.
    Dann ist eine Parameter-Prüfung erforderlich, ob die Werte ühaupt im Wertebereich der jeweiligen Aufgabe liegen.
    Dann wird das Skript / die DataTable Zeile für Zeile ausgeführt und feddich. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für die Antworten. Ich werde mich nachher mal genauer damit beschäftigen. Ein typisiertes Dataset nutz ich für die Messwerte welche von dem Programm aufgezeichnet werden. Ich bezweifle aber das ich da jeden kniff richtig nutze. Habe mir aber schon einige Tutorials dazu durchgearbeitet. Das vorgeschlagene Tutorial werde ich mir dann gleich zu gemüte führen.
    @Rod Ja so hab ich mir das vorgestellt. Eventuell kennt ja jemand bereit Code der so etwas realisieren kann und hat nen entsprechenden Link dazu. Überlege nämlich grad wie ich die Prüfung der Parameter und der zulässigen Werte elegant erledigen kann... Jeder Parameter besitzt ja ein minimum und ein maximum zwischen welchen ein zulässiger Wert gesetzt werden kann. Dummerweise unterscheiden sich die min/max je nach Parameter. Ein Select Case wäre vermutlich die einfachste Möglichkeit aber bei vielen Parametern etwas unübersichtlich.

    metzelmax schrieb:

    Jeder Parameter besitzt ja ein minimum und ein maximum zwischen welchen ein zulässiger Wert gesetzt werden kann. Dummerweise unterscheiden sich die min/max je nach Parameter. Ein Select Case wäre vermutlich die einfachste Möglichkeit aber bei vielen Parametern etwas unübersichtlich.
    Schaue dir einmal dazu folgenden Link an, da könntest du mit einer Extension-Methode etwas zaubern...
    Wert zwischen "180 und 220" abfragen: If ... Then ... Else
    @metzelmax Solch Code ist stets absolut speziell, da kannst Du Dir praktisch nix allgemeines abgreifen.
    Einzelne Speziallösungen wirst Du sicherlich finden, die musst Du aber für Dich
    - verallgemeinern, damit alles, was Du brauchst, auch gemacht wird und
    - spezialisieren, damit alles, was die Lösung sonst noch so kann, rausgeworfen wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Und danke für die Antworten,

    bin heut leider nicht dazu gekommen alles auszuprobieren. Ich werde das aber versuchen in den nächsten Tagen zu testen und umzusetzen. Wenn ich eine für mich passende Lösung gefunden habe werde ich euch dran teilhaben lassen. Vermutlich werd ich bis dahin aber nochmal mit ner Frage nerven müssen:).
    auf jeden Fall eine Datenverarbeitung mit typisiertem Dataset.
    An Tabellen sehe ich mindestens die Relation
    Programm -> ProgrammSchritt
    Damit der User ein Programm auswählen kann, dazu die Programmschritte festlegen, und es dann abfahren kann.

    Wie Rod sagt - vorgefertigtes gibts da nicht, nur die Technologie dazu steht eiglich bereit.
    Guck, hier hab ich was, womit man Programme für ein Lauflicht erstellen und abfahren kann: vb-paradise.de/index.php/Attachment/24803/