Home Page
        Bestellung     Downloads     Support     Kontakt     English
ZOC Terminal ist ein professioneller SSH Client und Terminal-Emulator für Windows und macOS.
ZOC Online Hilfe Thema:

Die Programmierung von ZOC (REXX/DDE) → Einführung in ZOC-DDE Programmierung (Windows)

Dynamic Data Exchange (DDE) erlaubt anderen Windows-Programmen, ZOC-Befehle ferngesteuert auszuführen. Während REXX-Programme unter der Kontrolle von ZOC laufen müssen, ist es mit DDE möglich, dass völlig separate Anwendungen (z.B. in C++ geschrieben) Befehle an ZOC zur Ausführung schicken.

In dieser Einführung wird davon ausgegangen, dass Kenntnisse über das Grundkonzept von DDE vorhanden sind. Die unten aufgeführten Punkte beschreiben nur Details der Implementierung.

Eine detaillierte Beschreibung zusammen mit einem Beispielprogramm in C kann bei EmTec angefordert werden (ftp://ftp.emtec.com/zoc/).

       
Session/Topic
 

ZOC verarbeitet nur eine Session gleichzeitig. Der Application-Identifier ist ZOC, und ZOC antwortet auf die Topics COMMUNICATION, COMM und COMM-DEBUG (zweiterer zeigt zur Fehlersuche alle DDE-Events auf dem ZOC-Bildschirm an). ZOC antwortet nicht auf generelle DDE-Requests (also auf Requests ohne Application oder Topic).

Zusätzlich zum Namen ZOC reagiert ZOC auch noch auf ZOCn, wobei n eine Zahl ist, die sich aus der Anzahl der gleichzeitig gestarteten ZOC-Instanzen herleitet. Die erste heißt ZOC1, die nächste ZOC2 usw.

Das Senden von Befehlen
 

Befehle können an ZOC entweder per DDE_EXECUTE (Datenfeld) oder DDE_REQUEST (Itemfeld) gesendet werden. DDE_EXECUTE antwortet mit einem DDE_ACK Paket. Der numerische Rückgabewert ist im Feld AppRc enthalten. DDE_REQUEST sendet immer ein DDE_DATA Paket (auch im Fehlerfall), welches das Ergebnis oder den Text ##ERROR## im Datenfeld enthält. Für das DDE_DATA Paket darf kein DDE_ACK zurückgeschickt werden. ZOC für Windows erwartet, dass der Speicherblock, der die Daten enthält, vom Empfänger freigegeben wird.

Serialisierung
 

Befehle müssen streng auf Basis von Command-Reply gesendet werden. ZOC verarbeitet keine geschachtelten Befehle (z.B. das Senden eines zweiten Befehls, während noch ein ZocWait abgearbeitet wird).

Befehlsformat
 

DDE_EXECUTE und DDE_REQUEST verwenden das gleiche Befehlsformat. (Beide Befehle unterscheiden sich dadurch, dass EXECUTE nicht verwendet werden kann, um Rückgabewerte von Funktionen zu liefern). Die Befehle müssen mit Null abgeschlossen werden (wie Zeichenketten in C).

ZOC kann keine Befehle verarbeiten, die in eckigen Klammern eingeschlossen sind (wie in der Microsoft DDE Spezifikation empfohlen). Außerdem kann nur ein Befehl pro Message verarbeitet werden. Unicode wird nicht unterstützt.

Ein Befehl kann entweder in der Form <befehl> <argumente> oder in der Form <befehl>(<argumente>) übergeben werden. Die Argumente können mit Leerzeichen oder Komma getrennt werden. Die empfohlene Form sind allerdings Klammern und Komma. Zeichenketten sollten in Anführungszeichen gesetzt werden, es ist aber auch erlaubt, sie wegzulassen, wenn die Zeichenkette keine Spezialzeichen enthält.

Anbei eine Liste gültiger Zeichenketten. Um zu älteren ZOC-Versionen kompatibel zu sein, ist es erlaubt, den Text 'Zoc' am Anfang jedes Befehls wegzulassen.
 

ZocBeep(2)
ZocMsgBox("Hello World!", 2)
ZocNotify('Datei "FOOBAR.DATA" nicht gefunden!')
    
ZocRequest "Wie geht's?" "Gut" "Nicht schlecht"
Notify Error
Beep 2

Liste der Befehle
 

Per DDE kann der gleiche Befehls-/Funktionsumfang wie in REXX verwendet werden. Eine Auflistung aller Befehle ist unter ZOC-Befehle im Anhang zu finden.

Beispiel
 

Der folgende Ausschnitt ist ein kleines Microsoft Access VBA Programm, das eine DDE-Verbindung zu ZOC aufbaut, das Modem initialisiert, und auf "OK" wartet.
 

ZocDDE = DDEInitiate("ZOC", "Comm-Debug")
DDEExecute ZocDDE, "ZocClearScreen"
DDEExecute ZocDDE, "ZocTimeout(10)"
DDEExecute ZocDDE, "ZocSend('ATZ^M')"
rc = DDERequest(ZocDDE, "ZocWait('OK')")
' oder ab Excel 2003:
' rlist= DDERequest(ZocDDE, "ZocWait('OK')")
' rc= rlist(1)
Debug.Print rc
DDETerminate ZocDDE
 

 
← Zurück zu Die Programmierung von ZOC (REXX/DDE)

 

Downloads
Orders
Contact
Support
Terms of Use
Privacy Policy
pixel