Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
RECEIVE BUFFER
|
RECEIVE BUFFER ( Puffername ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Puffername | Textvariable |
![]() |
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.
ON ERR CALL
RECEIVE PACKET
Semaphore
SET CHANNEL
USE CHARACTER SET
Produkt: 4D
Thema: Kommunikation
Nummer:
172
Geändert: 4D v6.8.3
4D Programmiersprache ( 4D v20 R7)