Version 11 (Geändert)
SEND PACKET ({DokRef; }Datenpaket)
Parameter | Typ | Beschreibung | |
DokRef | DokRef | Referenznummer des Dokuments oder | |
aktueller Kanal (serielle Schnittstelle oder | |||
Dokument) | |||
Datenpaket | String / BLOB | Zu sendender String oder BLOB |
Beschreibung
Der Befehl SEND PACKET sendet ein Datenpaket auf die serielle Schnittstelle oder in das durch den Befehl SET CHANNEL geöffnete Dokument. Ist DokRef definiert, wird das Datenpaket in das in DokRef festgelegte Dokument eingelesen. Ein Datenpaket ist nichts anderes als Daten, normalerweise eine alphanumerische Zeichenkette.
Mit diesem Befehl senden Sie Informationen an ein anderes Programm, einen anderen Rechner, einen Drucker mit einer seriellen Schnittstelle, an einen Magnetkartenleser oder an ein anderes Gerät, das eine serielle RS-232-Schnittstelle hat.
Hinweis: Zur Benutzung des parallelen Ports können Sie das Plug-In ACI Pack verwenden. Es enthält hierfür weitere Befehle.
Bevor Sie SEND PACKET einsetzen, müssen Sie mit SET CHANNEL eine serielle Schnittstelle bzw. ein Dokument öffnen oder ein Dokument mit einem der Dokumentbefehle öffnen.
Beim Einlesen in ein Dokument startet der erste Befehl SEND PACKET am Anfang des Dokuments, außer es wurde mit Append document geöffnet. Bis zum Schließen des Dokuments wird jedes nachfolgende Datenpaket an das zuvor übertragene angehängt.
Hinweis: Sie können diesen Befehl verwenden für ein Dokument, das mit SET CHANNEL geöffnet wurde. Für ein Dokument, das mit Open document, Create document und Append document geöffnet wurde, können Sie mit den Befehlen Get document position und SET DOCUMENT POSITION die Position festlegen oder ändern, wo das nächste Auslesen (SEND PACKET) oder Einlesen (RECEIVE PACKET) stattfinden soll.
Wichtig: 4D verwendet im ASCI Kompatibilitätsmodus (Nicht-Unicode Modus) auf allen Plattformen den MacOS Zeichensatz. Jeder Zeichensatz ist wegen der diakritischen Zeichen und der Sonderzeichen auf 8 Bit codiert. Können andere Rechner oder Systeme nur 7 Bit-Daten verarbeiten, müssen Sie einen Zeichenfilter zur Umwandlung der Zeichen mit einem größeren Code als 127 verwenden. Erstellen Sie einen ASCII Filter zur Übersetzung der ASCII Zeichen und führen Sie USE CHARACTER SET vor dem Befehl SEND PACKET aus. Sie können auch die Funktion Mac to Win verwenden (Siehe Beispiel zu dieser Funktion).
Protokolle wie XON/XOFF benutzen zur Kommunikation zwischen Rechnern niedere ASCII Codes. Solche ASCII Codes dürfen nicht übertragen werden, da sie mit dem Protokoll interferieren oder sogar die Kommunikation abbrechen können.
Beispiele
1. Folgendes Beispiel liest Daten aus Datenfeldern in ein Dokument ein. Die Felder sind von fester Länge. Ist ein Datenfeld kürzer als die vorgegebene Länge, wird es mit Leerzeichen aufgefüllt. Die Verwendung von Datenfeldern mit fester Länge ist zwar keine effektive Methode zum Speichern von Daten, einige Computersysteme und Anwendungen arbeiten jedoch noch damit:
$vhDocRef := Create document ("") ` Erstelle ein Dokument If (OK=1) ` Wurde das Dokument erstellt? For ($vlRecord; 1; Records in selection ([People])) ` Durchlaufe einmal für jeden Datensatz ` Sende erstes Datenpaket. Erstelle es aus einem Zeichensatz mit 15 Stellen, ` Der das Datenfeld Vorname enthält SEND PACKET ($vhDocRef; Change string(15 * Char(Space); [People]First;1)) ` Sende zweites Datenpaket. Erstelle es aus einem Zeichensatz mit 15 Stellen, ` Der das Datenfeld Nachname enthält ` Es könnte zwar im ersten SEND PACKET sein, wird jedoch zur besseren ` Übersicht getrennt SEND PACKET ($vhDocRef; Change string (15 * Char(Space); [People]Last; 1)) NEXT RECORD([People]) End for ` Sende Char(26), das für einige Rechner das Zeichen für Dateiende ist SEND PACKET ($vhDocRef; Char(SUB ASCII Code)) CLOSE DOCUMENT ($vhDocRef) ` Schließe das Dokument End if
2. Dieses Beispiel zeigt das Senden und Empfangen erweiterter Zeichen via BLOB in ein Dokument:
C_BLOB($send_blob) C_BLOB($receive_blob) TEXT TO BLOB("âzértÿ";$send_blob;UTF8 Text without length) SET BLOB SIZE($send_blob;16;255) $send_blob{6}:=0 $send_blob{7}:=1 $send_blob{8}:=2 $send_blob{9}:=3 $send_blob{10}:=0 $vlDocRef:=Create document("blob.test") If(OK=1) SEND PACKET($vlDocRef;$send_blob) CLOSE DOCUMENT($vlDocRef) End if $vlDocRef:=Open document(document) End(OK=1) RECEIVE PACKET($vlDocRef;$receive_blob;65536) CLOSE DOCUMENT($vlDocRef) End if
Referenz
Get document position, RECEIVE PACKET, SET DOCUMENT POSITION.
Export All Data, Meetings, Serieller Port, VCard Import Export, Virtual Structure 2, vCard Import Export