SEND PACKET

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 11 (Geändert)


SEND PACKET ({DokRef; }Datenpaket)

ParameterTypBeschreibung
DokRefDokRefReferenznummer des Dokuments oder
aktueller Kanal (serielle Schnittstelle oder
Dokument)
DatenpaketString / 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.

Anwendung des Befehls

Export All Data, Meetings, Serieller Port, VCard Import Export, Virtual Structure 2, vCard Import Export


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next