RECEIVE PACKET

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

Version 11 (Geändert)


RECEIVE PACKET ({DokRef; }EmpfangeVar; StopChar | NumChars)

ParameterTypBeschreibung
DokRefDokRefReferenznummer des Dokuments oder
aktueller Kanal (serielle Schnittstelle
oder Dokument)
EmpfangeVarString Var | BLOB VarVariable zum Empfangen des Textes
StopChar | NumCharsString | NumerischZeichen, bis zu dem Daten empfangen
werden, oder Anzahl zu empfangender
Zeichen

Beschreibung

Der Befehl RECEIVE PACKET liest die Daten von der seriellen Schnittstelle oder von einem z.B. mit dem Befehl SET CHANNEL geöffneten Dokument.

Ist DokRef definiert, liest dieser Befehl Zeichen aus einem Dokument, das mit Open document, Create document oder Append document geöffnet wurde. Ist DokRef nicht definiert, liest dieser Befehl Zeichen aus einer seriellen Schnittstelle oder einem Dokument, das mit SET CHANNEL geöffnet wurde.

Die eingelesenen Zeichen werden, unabhängig von der Quelle, in EmpfangeVar zurückgegeben. Dies muss eine Variable von Typ Text, String oder BLOB sein. Wurden die Zeichen über den Befehl SEND PACKET gesendet, muss der Typ zu dem des gesendeten Pakets passen.

Hinweise:

Im ASCII Kompatiblitätsmodus lassen String Variablen bis zu 255 Zeichen zu und haben eine feste Größe, Textvariablen haben keine feste Größe und können bis zu 32.000 Zeichen akzeptieren.

Ist das empfangene Paket vom Typ BLOB, berücksichtigt er keine Zeichen, die über USE CHARACTER SET angegeben wurden. Das BLOB wird ohne Änderung gesendet.

Um eine bestimmte Anzahl Zeichen einzulesen, übergeben Sie diese Anzahl in NumChars. Ist die Variable EmpfangeVar vom Typ Text, können Sie in einem Aufruf bis zu 2 GB Text im Unicode Modus bzw. 32.000 Zeichen im ASCII Kompatibilitätsmodus einlesen. Im 2. Modus können Sie in NumChars die Konstante MAXTEXTLENBEFOREV11 angeben, um die max. Anzahl Zeichen festzulegen.

Um Zeichen bis zu einem bestimmten String einzulesen (bestehend aus ein oder mehreren Zeichen), übergeben Sie diesen String in StopChar. Er wird nicht in EmpfangeVar zurückgegeben.).

Wird der in StopString angegebene String nicht gefunden, gilt folgendes:

Beim Lesen eines Dokuments stoppt RECEIVE PACKET am Ende des Dokuments.

Beim Auslesen von Daten aus einer seriellen Schnittstelle wartet RECEIVE PACKET unendlich, bis ein Timeout eintritt oder bis der Benutzer den Empfang abbricht.

Eine serielle Datenübertragung können Sie unterbrechen:

Manuell durch gleichzeitiges Drücken der Strg-, Alt- und Umschalttaste bzw. auf Macintosh der Wahl-, Befehls- und Umschalttaste.

 Automatisch mit dem Befehl SET TIMEOUT, der bei einer Zeitüberschreitung abbricht.

Die Unterbrechung generiert den Fehler -9994. Sie können ihn mit einer Methode ON ERR CALL abfangen. Eine Unterbrechung des Empfangs ist in der Regel nur bei der Kommunikation über eine serielle Schnittstelle erforderlich.

Beim Auslesen eines Dokuments beginnt das erste RECEIVE PACKET am Anfang des Dokuments auszulesen. Alle darauffolgenden Datenpakete beginnen mit dem Zeichen, das auf das zuletzt gelesene Zeichen folgt.

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.

Versuchen Sie, über das Ende einer Datei hinaus zu lesen, gibt RECEIVE PACKET die gelesenen Daten bis zu diesem Punkt zurück und setzt die Systemvariable auf 1. Das nächste RECEIVE PACKET gibt eine leere Zeichenkette zurück und setzt die Systemvariable auf 0.

Hinweis: Verwenden Sie RECEIVE PACKET im ASCII- Kompatibilitätsmodus (Nicht-Unicode Modus), um Zeichen aus einem Windows Dokument zu lesen und wollen Windows Zeichen nicht über eine ASCII Tabelle in Mac OS Zeichen umwandeln, können Sie mit der Funktion Win to Mac arbeiten.

Beispiele

1. Folgendes Beispiel liest 20 Zeichen aus einer seriellen Schnittstelle in die Variable getTwenty:

   RECEIVE PACKET (getTwenty; 20)

2. Folgendes Beispiel liest Daten aus dem in der Variablen myDoc zugewiesenen Dokument in die Variable vData. Ausgelesen wird bis zur Zeilenschaltung:

   RECEIVE PACKET (myDoc;vData;Char (Carriage Return))

3. Folgendes Beispiel liest Daten aus dem in der Variablen myDoc zugewiesenen Dokument in die Variable vData. Ausgelesen wird bis zum HTML Tag </TD> (Ende der Tabellenzelle):

   RECEIVE PACKET (myDoc;vData;"</TD>")

4. Folgendes Beispiel liest Daten von einem Dokument in Datenfelder. Die Daten werden in Datenfelder von fester Länge gespeichert. Die darin enthaltene Methode ruft eine Unterroutine auf, die schleifende Leerzeichen entfernt (Leerzeichen am Ende von Zeichenketten):

   $vhDocRef := Open document ("";"TEXT")  ` Öffne ein TEXT Dokument 
   If (
($Var1#"") | ($Var2#"")
)  ` Wurde das Dokument geöffnet
      Repeat  ` Durchlaufe bis keine Daten mehr da sind
         RECEIVE PACKET ($vhDocRef; $Var1; 15)  ` Lies 15 Zeichen 
         RECEIVE PACKET ($vhDocRef; $Var2; 15)  
              ` Führe dasselbe für das zweite Feld durch
         If (OK = 1)  ` Sind wir noch nicht am Ende des Dokuments
            CREATE RECORD([People])  ` Erstelle neuen Datensatz
            [People]First := Strip ($Var1)  ` Sichere den ersten Namen 
            [People]Last := Strip ($Var2)  ` Sichere den letzten Namen
            SAVE RECORD([People])  ` Sichere den Datensatz
         End if 
      Until (OK =0) 
      CLOSE DOCUMENT ($vhDocRef)  ` Schließe das Dokument 
   End if

Nachfolgende Methode Strip entfernt die Leerzeichen am Ende der Daten:

   For ($i; Length ($1); 1; -1)  ` Durchlaufe vom Ende des Zeichensatzes bis zum Start 
      If ($1[[$i]] # " ")  ` Ist kein Leerzeichen vorhanden
         $i := -$i  ` Beende die Schleife
      End if 
   End for 
   $0 := Delete string ($1; -$i; Length ($1))  ` Lösche die Leerzeichen

Referenz

Get document position, RECEIVE PACKET, SEND PACKET, SET DOCUMENT POSITION, SET TIMEOUT, USE CHARACTER SET.

Systemvariablen oder Mengen

Nach Aufrufen von RECEIVE PACKET hat die Systemvariable OK den Wert 1, wenn das Datenpaket ohne Fehler empfangen wurde. Wurde die Kommunikation unterbrochen oder trat ein Übertragungsfehler auf, ergibt OK den Wert 0.

Anwendung des Befehls

Meetings, Optimizing File Parsing with Match regex, VCard Import Export, Virtual Structure 2, vCard Import Export


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