Remote QLIB


Generelles
Der QLIB Server ermöglicht es QUANCOM Hardware über eine TCP/IP Netzwerkverbindung fernzusteuern. Die QLIB Remote Server Implementierung ist über ein Server / Client Modell durchgeführt worden. Jeder Client und Server der die Fernsteuerungsfunktionalität verwendet, benötigt eine installierte QLIB Driver Library. Auf der Maschine die ferngesteuert wird, muss die QLIB Server Software installiert werden. Weitere Details zur Installation des QLIB Server findet man in der SERVER.HLP Datei.

Wenn man mit der QLIB Programmierung beginnt, sollte man zuerst mt QLIB API anfangen ohne die Fernsteurungsfunktionalität zu verwenden.




Programmierung der QLIB und die Verwendung des QLIB Servers

Der erste Schritt zu einer fernsteuerbaren QLIB Anwendung ist eine Anwendung zu programmieren, die die lokale Hardware anspricht. Nachdem das Programm getestet wurde, kann man dann die notwendigen Befehle hinzufügen um die Anwendung netzwerkfähig zu machen. Diese Modifikationen sollten der Anwendung ermöglichen die lokale Anwendung auszuführen bzw. die fernzusteuernde Maschine anzusprechen (Siehe auch Unterschiede Local bzw. Remote ).

Es gibt zwei Modi in denen sich die QLIB (QUANCOM Library) befinden kann. Der aktive Mode kann mit der Funktion QAPIGetConnectionMode bestimmt werden. Der erste Modus ist "Local" der der Vorgabemodus ist. In diesem Modus werden alle QAPIxxxx Kommandos an die lokale Hardware weitergeleitet. Der zweite Modus ist der "Remote" Modus der alle Befehle, ausser den QAPIConnect, QAPIDisconnect und QAPIGetConnectionMode an einen QLIB Remote Server, über eine TCP/IP Netzwerkverbindung weiterleitet. Der QLIB Server empfängt und verarbeitet QAPIxxxx Befehle auf seiner Hardware.

Die erste Änderung am QLIB (QUANCOM Library) Client Programm ist eine Verbindung mit dem QLIB Server mit der QAPIConnect() Funktion hinzuzufügen. Diese Funktion schaltet die QLIB in den "Remote" Mode. Wenn die Funktion QAPIConnect fehlschlägt, bleibt die QLIB im "Local" Mode. Der aktive Mode kann mit der Funktion QAPIGetConnectionMode bestimmt werden.

Wenn sich die QLIB (QUANCOM Library) im "Remote" mode befindet, ist die einzige Möglichkeit sie wieder in den Local mode zu versetzen, der Aufruf der Funktion QAPIDisconnect. Netzwerkfehler bzw. Übertragungsabbrüche führen nicht automatisch zu einem Wechsel in den "Local" mode. Stattdessen liefert die Funktion QAPIGetLastError den Fehler " ERROR_QLIB_CONNECTION_DISCONNECTED". Dieses Verhalten ist erforderlich damit die QLIB im Fehlerfall nicht Funktionen auf der lokalen Maschine ausführt, die eigentlich für die QLIB Server Maschine gedacht waren.

Die zweite Änderung betrifft die Abfrage des Fehlercodes nach jedem QAPIxxxx Funktionsaufrufes. Diese Abfrage geschieht über die Funktion QAPIGetLastError.

Beispiel (Visual-Basic):

call QAPIExtWriteDO32(...): If QAPIGetLastError() then goto err_network

Mir ist natürlich bekannt, das die meisten Softwareentwickler den Befehl "goto" missbilligen. Trotzdem bleibt durch die Verwendung des goto die Übersichtlichkeit gewahrt da man komfortabel nach jeder Funktion beschliessen kann, welche Sprungmarke im Fehlerfall angesprochen wird. Besonders wenn man die QAPIGetLastError einfach hinter den eigentlich Befehl plaziert.

Mit der Ausnahme der Befehle QAPIConnect, QAPIDisconnect und QAPIGetConnectionMode ist die QLIB im "Remote" Mode transparent für den Client. Das Client Programm merkt gar nicht, dass es auf einem entfernten QLIB Server ausgeführt wird.

Die verstrichene Zeit zwischen zwei QAPIxxxx Funktionsaufrufen muss kleiner als die eingestellte Timeoutzeit sein. Ist die verstrichene Zeit länger, wird der QLIB Client die Sitzung beenden. Ein Aufruf der QAPIGetLastError auf der Client Seite liefert dann die Fehlermeldung "ERROR_QLIB_CONNECTION_TIMEOUT".

Zum Schluss muss die Verbindung mit dem Befehl QAPIDisconnect abgebaut werden. Dieser Befehl trennt die Verbindung mit dem QLIB Server und schaltet in den "Local" Mode und damit ist die lokale Hardware ansprechbar.


 Weiter mit "QLIB Befehle"