RECEIVE BUFFER

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

Version 3


RECEIVE BUFFER (Puffername)

ParameterTypBeschreibung
PuffernameVariableVariable zum Empfangen von Daten

Beschreibung

Der Befehl RECEIVE BUFFER liest die zuvor mit SET CHANNEL geöffnete serielle Schnittstelle. Sie hat einen Puffer, der mit Zeichen gefüllt wird bis ein Befehl den Puffer ausliest. RECEIVE BUFFER liest nur die bereits empfangenen Daten aus dem Puffer der seriellen Schnittstelle, setzt sie in die Variable Puffername und leert anschließend den seriellen Puffer. Gibt es keine Zeichen im Puffer, enthält Puffername nichts.

Hinweis: Dieser Befehl wurde in Version 2 im Zusammenhang mit ON SERIAL PORT CALL verwendet. Stattdessen sollten Sie mit RECEIVE PACKET die Daten in einem eigenen Prozess empfangen und auswerten.

Unter Windows:

Die Größe des seriellen Puffers unter Windows ist begrenzt. Wenn er voll ist und weiter neue Daten eingehen, ersetzen die neuen Zeichen die ältesten. Diese gehen verloren. Deshalb muss der Puffer schnell ausgelesen werden, wenn weiter neue Zeichen eingehen.

Auf Macintosh

Der serielle Puffer auf Macintosh ist 64 Zeichen groß. Ist diese Grenze erreicht und gehen weiter neue Daten ein, ersetzen die neuen Zeichen die ältesten. Diese gehen verloren. Deshalb muss der Puffer schnell ausgelesen werden, wenn weiter neue Zeichen eingehen.

Hinweis: Für MacOS gibt es 4D Plug-Ins, mit denen Sie die seriellen Puffer vergrößern können.

Wird bei SET CHANNEL das DTR- oder XON/XOFF-Protokoll angegeben, können keine Zeichen verloren gehen. Die Übertragung wird angehalten, bis wieder Platz im Puffer ist.

RECEIVE BUFFER nimmt alles, was im Puffer enthalten ist und gibt es sofort zurück. Im Gegensatz dazu wartet RECEIVE PACKET, bis ein bestimmtes Zeichen gefunden wird, oder eine vorgegebene Anzahl Zeichen im Puffer enthalten ist.

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.

Beispiel

Die Projektmethode LISTEN TO SERIAL PORT erhält über RECEIVE BUFFER Text aus der seriellen Schnittstelle und sammelt diesen in einer Interprozessvariablen:

      ` LISTEN TO SERIAL PORT
   While (<>IP_Listen_Serial_Port)
      RECEIVE BUFFER($vtBuffer) 
      If ((Length($vtBuffer)+Length(<>vtBuffer))>MAXTEXTLEN) 
         <>vtBuffer:=""
      End if 
      <>vtBuffer:=<>vtBuffer+$Buffer 
   End while

Diese Methode kann für einen lokalen Prozess als Prozessmethode ausgeführt werden:

      ` Starte Abfrage für serielle Schnittstelle
   SET CHANNEL (201; Speed 9600 + Data Bits 8 + Stop Bits One + Parity None) 
   ` Öffne serielle Schnittstelle
   <>IP_Listen_Serial_Port:=True
   $vlSerialPID:=New process("LISTEN TO SERIAL PORT";16*1024;"$Serial Port Listener")

Ab hier kann jeder andere Prozess die Interprozessvariable <>vtBuffer lesen, um mit den Daten aus der seriellen Schnittstelle zu arbeiten.

Um die Abfrage für die serielle Schnittstelle zu beenden, schreiben Sie:

      ` Stoppe listening für serielle Schnittstelle

<>IP_Listen_Serial_Port:=False

Hinweis: Sie sollten die Interprozessvariable <>vtBuffer mit einer lokalen Semaphore schützen, um Konflikte mit anderen Prozessen zu vermeiden. Weitere Informationen dazu finden Sie unter der Funktion Semaphore.

Referenz

ON ERR CALL, RECEIVE PACKET, Semaphore, SET CHANNEL, Variablen.


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