Scripting Container: ScriptingTestContainer
Dieser Artikel beschreibt den grundlegenden Aufbau des ScriptingTestContainer-Projekts und besteht aus den folgenden Themen:
- Die grafische Benutzeroberfläche (GUI)
- Früh und spät gebundene Skriptbeispiele
- Speicherort von Beispielskripts (<31>„Wo ist der Automation Interface-Code???”</31>)
- Hinter den Kulissen: Klassenaufbau
- Hinter den Kulissen: Methodenaufbau
- Hinter den Kulissen: Eigene Beispiele implementieren
Die grafische Benutzeroberfläche (GUI)
Nachdem Sie die Scripting Container-Anwendung gestartet haben, sieht ihre grafische Benutzeroberfläche wie folgt aus:
Im Dropdown-Listenfeld oben im Fenster können Sie die Version von Visual Studio auswählen, die Sie für die Erstellung der TwinCAT-Konfiguration verwenden möchten.
Es stehen viele Beispielskripts zur Verfügung, die Sie in der Tabelle in der Mitte des Fensters auswählen können.
Um ein Skript auszuführen, wählen Sie es einfach aus der Tabelle aus und klicken Sie dann auf „Ausführen“. Im Verlauf der Code-Ausführung blendet das Skript Statusinformationen im Nachrichtenaufzeichnungsfenster unterhalb der Skripttabelle ein.
Um das Anzeigeverhalten von Visual Studio zu ändern, können Sie die Checkboxen oben rechts im Fenster umschalten. Standardmäßig wird Visual Studio während der Skriptausführung eingeblendet und nicht nach Ende des Skripts geschlossen.
Früh und spät gebundene Skriptbeispiele
Diese Anwendung enthält sowohl früh, als auch spät gebundene Skriptbeispiele. Spät gebundene Beispiele machen sich den .NET-Datentyp "dynamic" zunutze und bestimmen den Datentyp eines Objekts während der Laufzeit, während früh gebundene Skripts den einem Objekt entsprechenden Datentyp im Verlauf der Erstellung eines Objekts verwenden. Beide Möglichkeiten haben ihre Vor- und Nachteile und es hängt vom Entwickler und vom Projekt ab, welche Typisierung bevorzugt wird.
Speicherort von Beispielskripts („Wo ist der Automation Interface-Code???”)
Alle Skriptbeispiele – früh und spät gebundene – befinden sich in einen eigenen Projekt-Container innerhalb der Visual Studio Solution. Scripting.CSharp.Scripts für früh gebundenen und Scripting.CSharp.ScriptsLateBound für spät gebundenen Beispielcode.
Jede Skriptdatei implementiert eine OnExecute()-Methode, in welcher der Skriptcode des TwinCAT- Automation Interface implementiert ist.
Hinter den Kulissen: Klassenaufbau
Jedes Codebeispiel wird durch eine eigene Klasse dargestellt, die entweder von der abstrakten Klasse "ScriptEarlyBound" oder von der Klasse "ScriptLateBound" abgeleitet ist, je nach der im Beispiel verwendeten Datentypisierung. Der Unterschied zwischen diesen beiden Klassen besteht darin, dass die ScriptEarlyBound Klasse die statische Typisierung für die DTE- und Solution-Objekte verwendet. Die ScriptLateBound Klasse benutzt stattdessen die dynamische Typisierung. Das folgende UML-Diagramm erläutert die Klassenhierarchie im Einzelnen. Die grauen Klassen stellen die eigentlichen Beispielskripts dar, die entweder von der ScriptEarlyBound-Klasse (wenn statische Typisierung verwendet werden soll) oder von der ScriptLateBound-Klasse (wenn dynamische Typisierung verwendet werden soll) abgeleitet sind.
Die abstrakte Klasse "Script" definiert Methoden und Attribute, die beiden Klassen, ScriptEarlyBound und ScriptLateBound, gemein sind.
Hinter den Kulissen: Methodenaufbau
Jede Beispielklasse enthält drei Methoden, die im Scripting Container für die Ausführung des Automation Interface-Codes verwendet werden. In folgender Tabelle wird deren Bedeutung beschrieben.
Signatur der abgeleiteten Methode |
Beschreibung |
---|---|
OnInitialize (dynamic dte, dynamic solution, IWorker worker) |
Die OnInitialize()-Methode wird normalerweise für den Automation Interface-Code verwendet, der eine neueTwinCAT XAE-Konfiguration öffnet oder vorbereitet. |
OnCleanUp (IWorker worker) |
Die OnCleanUp()-Methode kann zum Aufräumen der TwinCAT XAE-Konfiguration im Anschluss an die Code-Ausführung verwendet werden. |
OnExecute (IWorker worker) |
Diese Methode führt den eigentlichen Automation Interface-Skriptcode aus. |
Vergleichen Sie auch die Implementierung von bestehenden Beispielskripts, um die Arbeitsweise jeder Methode besser zu verstehen.
Hinter den Kulissen: Eigene Beispiele implementieren
Es ist sehr einfach, eigene Automation Interface-Beispiele in den Scripting Container zu implementieren. Um eigenen Automation Interface-Code zu implementieren, muss ein Entwickler lediglich entscheiden, welche Bindung er verwenden möchte und anschließend eine neue Klasse, die von einer der Hauptklassen (ScriptEarlyBound oder ScriptLateBound) abgeleitet ist, implementieren, und dann die abgeleiteten Methoden implementieren.