<< Klicken Sie hier um das Inhaltsverzeichnis anzuzeigen >> Navigation: Anleitungen > UdpDevice Plugin konfigurieren |
Mit Hilfe des UdpDevice Plugins können UDP basierte Geräte mittels Scripting angesteuert werden (z.B. das GPIO-Modul Barionet 50).
Die Applikation stellt dem Plugin eine Schnittstelle für die Kommunikation zur Verfügung. Diese Schnittstelle kann mehrere Zwecke erfüllen, z.B. kann die Applikation das Plugin über ein Ereignis in der Applikation informieren. Umgekehrt kann das Plugin über diese Schnittstelle Applikationsfunktionen aufrufen.
Auf der anderen Seite besitzt das Plugin eine Schnittstelle um mit dem UDP-Gerät zu kommunizieren.
Und zwischen diesen beiden Schnittstellen sitzt eine Scripting-Engine, dadurch ist das Plugin flexibler einsetzbar als über rein herkömmliche Konfigurationsparameter.
Parameter |
Beschreibung |
Activated |
Legt fest ob das Plugin bzw. die Plugininstanz ausgeführt wird oder nicht. |
Description |
Benutzerdefinierte Beschreibung (sinnvoll wenn mit mehreren Plugininstanzen gearbeitet wird). |
Host |
Name oder IP-Adresse des UDP Gerätes. |
Ermöglicht die Definition von Parametern (Name/Value-Paare), die im Scripting verwendet werden können. |
|
Port |
Port des UDP Gerätes. |
Scripting |
Ermöglicht die skriptbasierte Kommunikation mit einem externen Modul. |
Legt das Intervall des Timers fest (in Millisekunden; 0 deaktiviert ihn). Der Timer kann im Scripting verwendet werden. |
Den Scripts stehen die nachfolgenden Schnittstellen zur Verfügung um ihre Arbeit zu erledigen.
IScriptingHost
Die Schnittstelle IScriptingHost stellt folgende Ressourcen zur Verfügung:
•Die Methode GetParameter um die in der Konfiguration hinterlegten Parameter zu lesen.
•Das TimerElapsed Ereignis, dessen Intervall über den Kofigurationsparameter TimerInterval festgelegt werden kann.
•Methoden um Daten asynchron vom UDP Gerät zu empfangen: BeginReceive, EndReceive und AsciiEndReceive.
•Methoden um Daten an das UDP Gerät zu senden: SendDatagram und AsciiSendDatagram.
•Der verwendete UdpClient für erweiterte Anwendungen.
Die Schnittstelle steht im Script als Eigenschaft ScriptingHost zur Verfügung und kann z.B. wie folgt verwendet werden:
ScriptingHost.AsciiSendDatagram("setio,1,1\r"); |
IScCommandControl
Die Schnittstelle IScCommandControl stellt folgende Ressourcen zur Verfügung:
•Die Status-Eigenschaften Abhaken, Automat und Pfl.
•Die Ereignisse ControlCommandFired und TextCommandFired, die ausgelöst werden wenn der Studio Controller einen Steuerbefehl versendet.
•Das Ereignis StatusMessageFired, das ausgelöst wird wenn der Studio Controller eine Statusmeldung versendet.
•Das Ereignis InputCommandReceived, das ausgelöst wird wenn der Studio Controller einen Steuerbefehl von einem externen Modul empfangen hat.
•Die Methode SendInternalCommand um dem Studio Controller einen Steuerbefehl zu senden.
Die Schnittstelle steht im Script als Eigenschaft ScCommandControl zur Verfügung und kann z.B. wie folgt verwendet werden:
ScCommandControl.SendInternalCommand(-10103); |
Dieses Beispiel schaltet ein Relais des Barionet Gerätes ein bzw. aus wenn der Automat aktiviert bzw. deaktiviert wird (aber nur wenn das Abhaken aktiviert ist).
1.Den Einstellungsdialog anzeigen.
2.Im Menu Einstellungen die Hierarchie Modul-Instanz auswählen. Dadurch wird das zugehörige Fenster geöffnet.
3.Eine Plugininstanz für das UdpDevice Plugin erstellen.
4.Den Knoten Extensions aufklappen.
5.Die neu erstellte Plugininstanz auswählen und aufklappen.
6.Die Eigenschaft Activated auf True setzen.
7.Die Einstellungen Host und Port setzen.
8.Den Skript-Editor öffnen.
9.Das Ereignis StatusMessageFired auswählen und den gewünschten Code eingeben (siehe auch Scripting Grundlagen).
10.Mit einem Klick auf "OK" die Änderungen übernehmen.
11.Die Einstellungen speichern.
12.Den Studio Controller neu starten.
Bemerkung: Bei diesem Beispiel wurde das Plugin auf der Ebene Modul-Instanz konfiguriert. Dies kann aber auch auf der Ebene Modul erfolgen (siehe Plugin-Konzept).
Dieses Beispiel wartet auf Statusmeldungen des Barionet Gerätes, und aktiviert bzw. deaktiviert das Abhaken wenn der Eingang 1 ein- bzw. ausgeschaltet wird. Das Beispiel zeigt nur die notwendigen Codeabschnitte, das schrittweise Vorgehen kann dem vorangehenden Beispiel entnomen werden.
Load
// Den asynchronen Empfang starten. ScriptingHost.BeginReceive(ReceiveCallback); |
Free Code
// Die asynchrone Empfangsmethode. void ReceiveCallback(IAsyncResult asyncResult) { try { try { IPEndPoint endPoint = null; string response = ScriptingHost.AsciiEndReceive(asyncResult, ref endPoint);
string[] lines = response.Split(new char[] { '\r' }, StringSplitOptions.RemoveEmptyEntries); foreach (var line in lines) { Logger.DebugFormat("Antwort von Barionet erhalten: \"{0}\"", line);
// Gemäss Doku sind Befehle immer in Kleinschrift, deshalb einfach vergleichen. if (line == "state,1,0") { // -10103 = SetAbhakenOff int command = -10103; Logger.Info2Format("Sende Befehl an Studio Controller: {0}", command); ScCommandControl.SendInternalCommand(command); } else if (line == "state,1,1") { // +10103 = SetAbhakenOn int command = +10103; Logger.Info2Format("Sende Befehl an Studio Controller: {0}", command); ScCommandControl.SendInternalCommand(command); } } } finally { // Den asynchronen Empfang erneut starten. ScriptingHost.BeginReceive(ReceiveCallback); } } catch (ObjectDisposedException) { // Kann beim Beenden passieren, deshalb fangen wir diese Exception separat ab. } catch (Exception exp) { Logger.ErrorFormat("Fehler beim Empfangen von Barionet Daten", exp); } } |
Referenced Assemblies
System.dll |
Using Directives
using System.Net; |
Siehe auch