# Variablen speichern/ einlesen PFC200 e!cockpit



## elbibi (19 Januar 2018)

Hallo zusammen,

in meinem Programm kann ich verschiedene Werte in der Visu in ein Array eintragen und dort auch verändern. Also quasi eine "Methode" erstellen.

Gibt es eine einfache Möglichkeit, diese Werte jetzt in einer Datei zu speichern und auch aus einer Datei wieder einzulesen? 

Also: Werte in Array eintragen -> als "MethodeX" speichern
und: Werte aus "MethodeY" in Array einlesen.

Versuche es gerade mit Rezepten, wäre das auch die Lösung eurer Wahl oder geht das auch einfacher (Baustein) oder unkomplizierter?

Gruß
elbibi


----------



## Tobsucht (24 Januar 2018)

Hallo elbibi,

ich würde die WagoAppFileDir verwenden.
Mit den Funktionsbausteinen FbWriteWholeFile_cpt und FbReadWholeFile_cpt das Array schreiben und lesen:


```
PROGRAM PLC_PRG
VAR
 aDataToWrite:ARRAY [0..99] OF BYTE;
 oWrite: FbWriteWholeFile_cpt;
 xWrite: BOOL;
END_VAR

oWrite(
 xTrigger:= xWrite, 
 sName:= '/media/sd/datei.txt', 
 pTxBuffer:= ADR(aDataToWrite), 
 udiTxNBytes:= SIZEOF(aDataToWrite) );
```

Du könntest auch eine Struktur übergeben.


Grüße


----------



## elbibi (24 Januar 2018)

Danke, Tobsucht.

Diese Bausteine hatte ich jetzt auch schonmal ausprobiert, konnte auch eine Datei auf die SD-Karte des Controllers speichern.

Genau genommen möchte ich auch eine Struktur übergeben, so in etwa:


```
TYPE meineParameter:
STRUCT
   myString: STRING;
   myBool: BOOL;
   myArray: ARRAY [0..10] OF BOOL;
```

Die Werte für alle Elemente dieser Struct kann ich über eine Eingabe in der Visu ändern, ich habe also eine (sehr große) Tabelle mit allen Elemtenten dieser Struct, inklusive langer Arrays. Das wären dann meine erwähnte "Methode". 

Das in einer Datei 'irgendwie' speichern geht ja, aber das einlesen?
Müsste ich dann doch mühsam in eine .csv speichern und zeile für Zeile wieder einlesen, oder?

Ich dachte da mehr so an: eine zuvor gespeicherte Datei auswählen --> Datei öffnen drücken und ich habe alle meine Werte der Struct wieder so, wie in der Datei gespeichert 


Gruß
elbibi


----------



## Tobsucht (26 Januar 2018)

Hallo,

Das Lesen funktioniert analog zum Schreiben.
Statt dem Array kannst Du natürlich auch deine Instanz der Stuktur meineParameter übergeben.

Grüße


----------



## elbibi (29 Januar 2018)

Mh und wo kann ich die Daten abrufen, die ich mit FbReadWholeFile_Cpt einlese? Hat ja keinen entsprechenden Ausgang?

```
xTrigger := xLesen
sName := '/media/sd/test.txt'
pRxBuffer := ADR(meineParameter)
udiRxBufferSize := SIZEOF(meineParameter)
```

Irgendwie so?:

```
VAR
eingeleseneMethode := meineParameter
END_VAR


FbReadWholeFile_cpt_0.pRxBuffer^ := eingeleseneMethode
```

Hast du vielleicht nen Code-Schnipsel, stehe etwas auf dem Schlauch...


----------



## Tobsucht (29 Januar 2018)

So wie in meinem ersten Beispiel gezeigt:




Grüße


----------



## elbibi (29 Januar 2018)

Danke Tobsucht, aber habe mich wieder unklar ausgedrückt.

Was ich jetzt im pRxBuffer habe ist ADR(oCfg). Also Pointer of Byte. Wie kann ich das dereferenzieren? Möchte das als Struct haben (und einer anderen Struct-Variablen zuweisen).


----------



## Tobsucht (29 Januar 2018)

Schau doch bitte den Code nochmal an. oCfg ist bereits deine Struktur.


----------

