4D v16.3

SEND PACKET

Home

 
4D v16.3
SEND PACKET

SEND PACKET 


 

SEND PACKET ( {DokRef ;} Datenpaket ) 
Parameter Typ   Beschreibung
DokRef  DokRef in Referenznummer des Dokuments oder aktueller Kanal (serielle Schnittstelle oder Dokument)
Datenpaket  String, BLOB in Zu sendender String oder BLOB

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.
Sie können in Datenpaket auch ein BLOB übergeben und so die Einschränkungen zur Codierung von Zeichen, die im Textmodus gesendet werden, umgehen (siehe Beispiel 2). 

Hinweis: Übergeben Sie ein BLOB in Datenpaket, berücksichtigt der Befehl keinen Zeichensatz, der über den Befehl USE CHARACTER SET definiert wurde. Das BLOB wird ohne Änderung gesendet.

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 4D 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 oder 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.

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

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)
 If(OK=1)
    RECEIVE PACKET($vlDocRef;$receive_blob;65536)
    CLOSE DOCUMENT($vlDocRef)
 End if



Siehe auch 

Get document position
RECEIVE PACKET
SET DOCUMENT POSITION

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Kommunikation
Nummer: 103

This command can be run in preemptive processesDer Unicode Modus betrifft diesen Befehl

 
GESCHICHTE 

Geändert: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)