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.

VAR_INPUT

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

eCmd: Steuerparameter für den Pufferbaustein (Typ: 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: Ein neues Datenfeld als String (Typ: T_MaxString). Dieser Eingang muss ein Leerstring sein wenn statt dieses Eingangs die optionalen Parameter pValue und cbValue benutzt werden.

pValue: 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: 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: 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: 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: Maximal verfügbare Größe (in Byte) der Zielpuffervariablen. Die Größe kann mit dem SIZEOF-Operator ermittelt werden.

VAR_OUTPUT

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

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

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

cbFree: Anzahl der freien Datenbytes im Puffer.

nFields: Anzahl der geschriebenen Datenfelder.

nRecords: Anzahl der geschriebenen Datensätze.

cbWrite: 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)