FB_CSVMemBufferWriter

FB_CSVMemBufferWriter 1:

Mit diesem Funktionsbaustein können Datensätze im CSV-Format aus einzelnen Datenfeldern in einem externen Puffer erzeugt werden. Der Inhalt des Puffers kann danach z.B. mit Hilfe der Bausteine für den Dateizugriff in eine Datei geschrieben werden. Das neue Datenfeld kann entweder über die putValue-Variable (String) oder über die optionalen pValue- und cbValue-Variablen an den Baustein übergeben werden. Dies hängt davon ab, ob Sie Datenfelder ohne Steuerzeichen (String) oder Datenfelder mit Steuerzeichen oder Binärdaten in den Datensatz schreiben wollen. Der Funktionsbaustein kann mehrere Datensätze im Puffer erzeugen bis die maximal verfügbare Puffergröße erreicht ist. Das Ende eines Datensatzes (letztes Datenfeld im aktuellen Datensatz) wird an das Datenfeld automatisch angehängt, wenn beim Schreiben des Datenfeldes die bCRLF-Variable auf TRUE gesetzt wurde. Die Datenfeldtrennzeichen werden vom Baustein automatisch hinzugefügt. In der Standardeinstellung wird dafür das Datenfeldtrennzeichen Semikolon verwendet. Über die globale SPS-Variable DEFAULT_CSV_FIELD_SEP kann das Trennzeichen vom Semikolon auf Komma konfiguriert werden.

FB_CSVMemBufferWriter 2: Eingänge

VAR_INPUT
    eCmd     : E_EnumCmdType := eEnumCmd_First;
    putValue : T_MaxString := '';
    pValue   : POINTER TO BYTE := 0;
    cbValue  : UDINT := 0;
    bCRLF    : BOOL := FALSE;
    pBuffer  : POINTER TO BYTE;
    cbBuffer : UDINT;
END_VAR

Name

Typ

Beschreibung

eCmd

E_EnumCmdType

eEnumCmd_First fügt das erste Datenfeld in den Puffer, eEnumCmd_Next fügt das nächste Datenfeld hinzu. Andere Parameterwerte werden nicht benutzt.

putValue

T_MaxString

Ein neues Datenfeld als String. Dieser Eingang muss ein Leerstring sein, wenn statt dieses Eingangs die optionalen Parameter pValue und cbValue benutzt werden.

pValue

BYTE

Optional: Adresse eines externen Bytepuffers in dem sich das neue Datenfeld befindet. Zusammen mit dem cbValue-Parameter kann dieser Eingang dann benutzt werden, wenn z.B. ein Datenfeld mit Steuerzeichen oder Binärdaten in den Datensatz geschrieben werden soll. Die Steuerzeichen oder Binärdaten im Datenfeld könnten den putValue-String an einer ungewünschten Stelle abschneiden und werden deshalb als Bytepuffer übergeben. Dieser Eingang muss den Wert Null haben, wenn er nicht benutzt wird.

cbValue

UDINT

Optional: Länge der Datenfelddaten im externen Bytepuffer. Dieser Eingang muss den Wert Null haben, wenn er nicht benutzt wird. Die maximale Größe kann mit dem globalen Parameter cMaxCSVFieldValueSize angegeben werden.

bCRLF

BOOL

Wenn dieser Eingang gesetzt ist, dann wird das neue Datenfeld mit einem CRLF Datensatztrennzeichen abgeschlossen. Datenfelder, die danach geschrieben werden gehören dann zum neuen Datensatz.

pBuffer

BYTE

Adresse (Pointer) auf die Zielpuffervariable. Die Adresse kann mit dem ADR-Operator ermittelt werden. In diesem Puffer erzeugt der Funktionsbaustein die Datensätze im CSV-Format.

cbBuffer

UDINT

Maximal verfügbare Größe (in Byte) der Zielpuffervariablen. Die Größe kann mit dem SIZEOF-Operator ermittelt werden

FB_CSVMemBufferWriter 3: Ausgänge

VAR_OUTPUT
    bOk      : BOOL;
    cbSize   : UDINT;
    cbFree   : UDINT;
    nFields  : UDINT;
    nRecords : UDINT;
    cbWrite  : UDINT;
END_VAR

Name

Typ

Beschreibung

bOk

BOOL

TRUE = Success, FALSE = Pufferüberlauf oder fehlerhafte Eingangsparameter.

cbSize

UDINT

Der aktuelle Puffer-Füllstatus (Anzahl der im Puffer erzeugten Datenbytes).

cbFree

UDINT

Anzahl der freien Datenbytes im Puffer.

nFields

UDINT

Anzahl der geschriebenen Datenfelder.

nRecords

UDINT

Anzahl der geschriebenen Datensätze.

cbWrite

UDINT

Anzahl der zuletzt geschriebenen Datenbytes (die Länge des letzten Datenfelds + eventuelle Datensatz- oder Datenfeld-Trennzeichen).

Beispiel:

Siehe: Beispiel: Schreiben/lesen einer CSV-Datei.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System)