Wenn Sie ein Gerät über das Avio-System seriell steuern möchten und es noch keinen Treiber gibt, können Sie mit Hilfe eines Texteditors selbst einen Treiber erstellen. Dafür müssen Sie das Protokoll des Gerätes kennen und wissen, wie ein Avio-Treiber aufgebaut ist. Letztes erfahren Sie in diesem Kapitel. Wenn Sie einen Treiber geschrieben haben, bitten wir Sie, uns diesen zur Verfügung zu stellen, denn wir möchten möglichst schnell eine Treiber-Datenbank aufbauen, von der alle Stumpfl-Anwender profitieren können, siehe auch Verfügbare Treiber. Und wenn Sie das nächste Mal einen Treiber benötigen, hat vielleicht schon ein anderer diese Arbeit erledigt.
Avio-Treiber (*.asd) sind nicht mehr kompatibel zu den Geräte-Ports von Wings Vioso RX und Iseo.
Wenn Sie ältere Treiber (*.ptd) für Wings Vioso RX und Iseo, editieren oder schreiben möchten, finden Sie hier weitere Informationen zu deren Aufbau.
Wenn Sie einen bestehenden Treiber mit einem Texteditor öffnen, können Sie seinen Aufbau erkennen. Verfügbare Treiber finden Sie, indem Sie im Hauptmenü von Wings Vioso RX auf Extras - Ordner öffnen Treiber klicken. Achten Sie jedoch darauf, dass Sie einen Treiber mit der Endung *.asd öffnen (Avio Serial Driver). Ein Avio-Treiber enthält am Anfang eine Beschreibung und dann folgen die Befehle in der Reihenfolge, wie sie im Avio Manager erscheinen sollen. Jede Zeile kann einen beliebigen Kommentar enthalten, der durch zwei Schrägstriche getrennt sein muss, Beispiel: //Dieser Kommentar dient nur zu Ihrer Information und wird nicht ausgewertet.
[Driver]
Diese Kennung ist in der ersten Zeile zwingend erforderlich.
Name=XXX
Name des Treibers bzw. des zu steuernden Gerätes
Version=X.X
Version des Treibers
Date=XX.XX.XXXX
Datum der Erstellung
Author=XXX
Name des Treiberautors
Comment=XXX
Kommentar zum Treiber
Es folgen Parameter für die Schnittstellenkonfiguration. Wenn die für ein Gerät erforderlichen Parameter bekannt sind, ist es sinnvoll diese hier vorzugeben.
NetworkIP=XXX.XXX.XXX.XXX
Die angegebene IP-Adresse erscheint als Standardvorgabe im Dialog.
NetworkPort=XXXXX
Der angegebene Port erscheint als Standardvorgabe im Dialog.
ConnectionType=X
Bei X=UDP wird das UPD-Protokoll voreingestellt, bei X=TCP das TCP-Protokoll und bei X=RS232 das RS232-Protokoll
DefaultPollInterval=X
Bestimmt das Standard-Interval, mit dem Parameter abgefragt werden sollen; X wird in Sekunden angegeben, bei X=0 wird nicht gepollt. Das Standard-Pollintervall kann in jedem Befehl durch ein individuelles Pollintervall überschieben werden.
In der Treiberdatei sieht ein kompletter Informationsblock dann beispielsweise so aus:
[Driver]
Name=Canon WUX450
Version=1.00
Date=21.11.2013
Author=Dieter Hartmann
Comment=Basic control of Canon XEED WUX450 projector
NetworkIP=???????
NetworkPort=?????
ConnectionType=UDP
DefaultPollInterval=10
Danach folgen die Befehlsblöcke, die jeweils durch eine Leerzeile getrennt sind.
Zeichenfolgen für serielle Befehle können Sie in verschiedener Form eingeben, auch gemischte Schreibweise ist möglich:
ASCII-Zeichen müssen in Anführungszeichen stehen. Die Bytes müssen durch Trennzeichen (Leerzeichen oder Komma) voneinander getrennt sein.
Bei hexadezimaler Eingabe muss jedes Byte als "Hexbyte" gekennzeichnet werden. Dafür stehen Ihnen übliche Formatierungen zur Verfügung: 0x12, h12, 12h oder $12 (in den Beispielen ist 12 die Information des Bytes).
Wir erläutern Ihnen zunächst den prinzipiellen Aufbau von Befehlen im Treiber. Am Ende folgen einige Beispiele, die nicht alle Optionen nutzen und auch zeigen, wie einfache Befehle aufgebaut sind. Bitte denken Sie daran, alle Informationen und Kommentare möglichst in Englisch zu verfassen, damit der Treiber international einsetzbar ist.
[Gruppe:Channel]
Die Bezeichnung des Channels ist die Befehlsbezeichnung, die im Avio Manager erscheint. Optional kann eine Gruppenbezeichnung getrennt durch Doppelpunkt vorangestellt werden. Im Avio Manager erscheinen alle Channels der Gruppe in einem Ordner und zwar auch, wenn Befehle im Treiber nicht untereinander aufgeführt sind.
Par1=Format (Y, Z), Bezeichnung des Parameters im Avio Manager
Ermöglicht die Eingabe von Parametern im Avio Manager. Mit "Format" wird die Art der erwarteten Information festgelegt; der mögliche Wertebereich wird mit Y (Minimum) und Z (Maximum) definiert. Folgende Formate sind möglich:
Data ... max. 255 Zeichen gemäß definiertem Datenformat, gemischte Schreibweise ASCII, Hex etc. möglich
Number (Y, Z), Eingabe von Werten, die Angabe des Wertebereichs ist optional, z. B. Number(1,255)
Auf diese Weise können bis zu acht verschiedene Parameter benutzt werden (Par1 bis Par8). In einer Parameter-Zeile folgt, getrennt durch ein Komma, die optionale Bezeichnung des Channels im Avio Manager.
Send=Zeichenfolge
Als Zeichenfolge können bis zu 255 Zeichen gesendet werden, die Eingabe erfolgt in gemischter Schreibweise gemäß definiertem Datenformat.
Variable Parameter (Par1 bis Par8) können auf folgende Weise mit einbezogen werden:
#Data(Par1)
Beim Senden und Empfangen wird die Zeichenfolge 1:1 als Text gesendet bzw. an Avio weitergegeben.
#Byte(Par1)
Wie zuvor, jedoch wird nur das erste Byte von Parameter 1 gesendet.
#WordBE(Par1) oder #Word(Par1)
Wie zuvor, jedoch werden die ersten zwei Bytes von Parameter 1 in der vorgegeben Reihenfolge gesendet (Big-Endian).
#WordLE(Par1)
Wie zuvor, jedoch werden die Bytes in umgekehrter Reihenfolge gesendet (Little-Endian). Diese Variante ist für das Senden von Befehlen an Wings Vioso RX zu verwenden.
#LongBE(Par1) oder #Long(Par1)
Wie #WordBE, jedoch werden die ersten vier Bytes von Parameter 1 in der vorgegeben Reihenfolge gesendet (Big-Endian).
#LongLE(Par1)
Wie #LongBE, jedoch werden die ersten vier Bytes in umgekehrter Reihenfolge gesendet (Little-Endian). Diese Variante ist für das Senden von Befehlen an Wings Vioso RX zu verwenden.
#Decimal(Par1)
Die ASCII-Zeichenfolge wird als Zahl interpretiert.
Wenn das Gerät Rückmeldungen nach dem Empfang bzw. nach dem Ausführen von Befehlen sendet, kann dieses sogenannte Acknowledge ausgewertet werden.
ReceiveAck=XXX
Hier geben Sie die Zeichenfolge ein, die das Gerät nach dem Empfang eines Befehls zurücksendet. Es können sich bis zu neun Parameter in der empfangenen Zeichenfolge befinden (Ret1 bis Ret9), z. B. ReceiveAck=0x00 #byte(Ret1) #byte(Ret2)0x01. Die Informationen können als Channels im Avio Manager verfügbar gemacht werden. Die Kennzeichnung der erwarteten Informationen (im Beispiel #byte) erfolgt wie schon bei den Parametern erläutert.
Nun legen Sie noch festlegen, wie die empfangenen Informationen im Avio Manager erscheinen sollen:
Ret1=Name(Y,Z)
Der Name erscheint als Channel-Bezeichnung im Avio Manager. Der Wertebereich der vom Gerät erwarteten Werte kann optional mit Y (Minimum) und Z (Maximum) angegeben werden. Dies ist durchaus sinnvoll, weil das Avio-System dann den korrekten Bereich automatisch für andere Kanäle skalieren kann.
Es werden Wildcards (*) als Platzhalter innerhalb des angegebenen Rückgabeparameters unterstützt. An Stellen mit dem Platzhalter * wird eine beliebige Zeichenfolge in der empfangenen Rückmeldung akzeptiert. Als praktisches Beispiel wäre z. B. ein Rückgabewert, bei dem am Schluss eine Checksumme gesandt wird, die jedes mal unterschiedlich ist. Um die empfangene Rückmeldung trotzdem richtig zu erkennen, wird am Schluss des angegebenen Rückgabeparameters ein * gesetzt, d. h. der empfangene Wert kann an der Stelle, wo der Stern steht beliebige Zeichen enthalten, um trotzdem als der angegebene Rückgabewert erkannt zu werden.
PollInterval=X
Wenn bei einem Abfragebefehl das Standard-Intervall nicht zur Anwendung kommen soll, können Sie das Intervall für diesen Befehl individuell in Sekunden vorgeben. Die Abfrage wird nicht ausgeführt, wenn X=0 ist.
Hier zeigen wir Ihnen einige Beispiele aus dem Treiber für Wings Vioso RX. Der untenstehende Befehlsblock dient zum Senden eines einfachen Befehls, hier der Play-Befehl für die aktuelle Timeline in Wings Vioso RX. Er lautet in Hex: FF 01 04 FE
[Play]
Send=0xFF 0x01 0x04 0xFE
Soll sich der Play-Befehl auf eine bestimmte Stelle beziehen, müssen die Remote-Indexe von Timeline und Positions-Marker im Befehl enthalten sein. Dies lösen Sie mit der Angabe von Parametern. Dafür wurde das Nummernformat und ein Wertebereich von 1 bis 250 gewählt. In den Befehl wurde #Byte(Par1) bzw. #Byte(Par2) zur Angabe der beiden Remote-Indexe eingefügt. Diese Angabe bewirkt, dass nur das erste Byte der Information im Eingabefeld des Treiberdialogs ausgewertet wird. Im Unterschied zum obigen Beispiel wird hier bei der Befehlsbezeichnung noch eine Gruppenbezeichnung vorangestellt.
[Play:Timeline and Position Marker]
Par1=Number(1,250), Remote index of Timeline
Par1=Number(1,250), Remote index of Position Marker
Send=0xFF 0x02 0x04 #Byte(Par1) #Byte(Par2) 0xFE
Mit diesem Befehlsblock wird die Betriebsdauer einer Projektorlampe abgefragt und als Channel im Avio Manager zur Verfügung gestellt. Der Statuts kann dann z. B. auf der Oberfläche dargestellt werden. Bei ReceiveAck wird einfach die vom Gerät zurückgemeldete Zeichenfolge eingetragen, wobei hier die Stundenzahl mit dem Rückmeldeparameter Ret1 als Channel im Avio Manager verfügbar ist.
[Get lamp counter]
Send="GET LAMPCOUNTER" 0x0d
ReceiveAck="g:LAMPCOUNTER=" #Decimal(Ret1) 0x0d
Ret1=LampCounter
PollInterval=10
Den ersten Treiber sollten Sie für ein Gerät schreiben, dessen Protokoll Sie genau kennen. Falls die Steuerung nicht auf Anhieb funktioniert, erleichtert das die Fehlersuche, weil Sie sich auf den Treiber und dessen Syntax konzentrieren können.
Den zentralen Dialog zum Konfigurieren der Treiber und dessen Verbindungen finden Sie, indem Sie mit der rechten Maustaste auf das Icon des Avio Services klicken und Configure Network/RS232 Devices... wählen, siehe auch Serielle Befehle über die LAN-Schnittstelle des PCs senden/empfangen.
Um Befehle in einem Treiber zu ändern, verwenden Sie den Button Edit Driver im Dialog Network/RS232 Driver Configuration des Avio Service. Nach dem Speichern von Änderungen erscheint beim Icon des Avio Service die Meldung, dass der Treiber geändert wurde und neu geladen werden muss, was Sie durch Klick auf die Meldung erreichen. Wichtiger Hinweis: Der geänderte Treiber befindet sich in C:\ProgramData\AV Stumpfl\Wings Avio Service\Drivers.
Um zu analysieren, welche Informationen gesendet und empfangen werden, können Sie die Funktion Observe Driver verwenden, die Sie ebenfalls im Dialog Network/RS232 Driver Configuration des Avio Service finden. Dafür markieren Sie unter Installed Driver den gewünschten Treiber und klicken dann auf Observe Driver.
siehe auch
Serielle Befehle über die LAN-Schnittstelle des PCs senden/empfangen