4D v16.3

RECEIVE BUFFER

Home

 
4D v16.3
RECEIVE BUFFER

RECEIVE BUFFER 


 

RECEIVE BUFFER ( Puffername ) 
Parameter Typ   Beschreibung
Puffername  Textvariable in Variable zum Empfangen von Daten

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.

Unter Windows
Die Größe des seriellen Puffers unter Windows ist auf 10 kb begrenzt, d.h. er kann überfüllt sein. 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 Mac OS
Auf Mac OS X ist die Kapazität theoretisch unbegrenzt (abhängig vom verfügbaren Speicher). Ist er voll 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.

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.

Der Benutzer kann während der Ausführung von RECEIVE BUFFER den Empfang unterbrechen, und zwar unter Windows durch die Tastenkombination Strg-, Alt- und Umschalttaste, auf Macintosh Wahl-, Befehls- und Umschalttaste. Die Unterbrechung generiert den Fehler -9994. Sie können ihn mit einer Methode ON ERR CALL abfangen.

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
  ` Seriellen Port öffnen
 SET CHANNEL(201;Speed 9600+Data bits 8+Stop bits one+Parity none)
 <>IP_Listen_Serial_Port:=True
 While(<>IP_Listen_Serial_Port)
    RECEIVE BUFFER($vtBuffer)
    If((Length($vtBuffer)+Length(<>vtBuffer))>MAXTEXTLEN)
       <>vtBuffer:=""
    End if
    <>vtBuffer:=<>vtBuffer+$Buffer
 End while

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 seriellen Port
 ◊IP_Listen_Serial_Port:=False

Hinweis: Sie sollten den Zugriff auf 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.



Siehe auch 

ON ERR CALL
RECEIVE PACKET
Semaphore
SET CHANNEL
USE CHARACTER SET
Variablen

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Kommunikation
Nummer: 172

Dieser Befehl ändert die Systemvariable Error

 
GESCHICHTE 

Geändert: 4D v6.8.3

 
ARTIKELVERWENDUNG

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