RECEIVE PACKET

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

Version 6.8 (Geändert)


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

ParameterTypBeschreibung
DokRefDokRefReferenznummer des Dokuments oder
aktueller Kanal (serielle Schnittstelle
oder Dokument)
EmpfangeVarVariableVariable zum Empfangen des Textes
StopChar | NumCharsString | NumerischZeichen, bis zu dem Daten empfangen
werden, oder Anzahl der zu empfangenden
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.

RECEIVE PACKET hat 2 Syntaxmöglichkeiten. Sie unterscheiden sich durch die Art, wie sie die Informationen begrenzen.

Mit der ersten Syntax liest der Befehl die in NumChars angegebene Zeichenanzahl ein und setzt das Ergebnis in die Variable EmpfangeVar.

Mit der zweiten Syntax werden Informationen solange eingelesen, bis der String von StopChar gefunden wurde. Der String kann ein oder mehrere Zeichen lang sein. Die so erhaltenen Zeichen werden alle, außer dem String StopChar, in EmpfangeVar eingelesen.

Werden Zeichen über die serielle Schnittstelle gesendet, können diese von einer anderen 4D Anwendung, einem anderen Programm oder sogar einem anderen Rechnertyp, der Informationen über die Schnittstelle RS-232 senden kann, kommen.

Ist StopChar | NumChars nicht definiert, beendet RECEIVE PACKET das Auslesen der Daten am Dokumentende. Beachten Sie jedoch, dass eine alphanumerische Variable eine feste Länge hat, während eine Textvariable bis zu 32.000 Zeichen enthalten kann. Beim Auslesen von Daten aus einer seriellen Schnittstelle wartet RECEIVE PACKET unendlich, bis ein Timeout (falls vorhanden) eintritt (siehe SET TIMEOUT) 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.

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 zu Version 6 : Sie können diesen Befehl weiter 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 nun mit den neuen 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, 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.

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, Virtual Structure 2, vCard Import Export


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