-> Hier kostenlos registrieren
Hallo werte Forenmitglieder,
ich beschäftige mich seit 4 Wochen mit Twincat 3 und hab die Aufgabe, eine Textdatei (in diesem Fall .json) mit späteren Prozessvariablen zu erzeugen und zu speichern, um später darauf zugreifen zu können.
Der Quellcode ist im Moment erstmal nur ein Prototyp und soll im Laufe der Zeit ausgebaut und verfeinert werden.
Die Funktion FUN_SafeFile:
Das Problem, was hier allerdings auftaucht, ist dass wenn ich das Programm ausführe, erstellt es mir eine Datei, welche jedoch ohne Inhalt ist (0kB). Auch wenn ich eine zweite und dritte Datei erzeuge, sind diese dann ohne Inhalt.
Interessant ist aber, wenn ich mir Breakpoints setze in der Funktion, schreibt das Programm auch den String in die Datei.
Hat vielleicht jemand eine Idee woran das liegen könnte und wie ich das Problem beheben kann?
Ich bedanke mich schon mal im Voraus für die Hilfe.
ich beschäftige mich seit 4 Wochen mit Twincat 3 und hab die Aufgabe, eine Textdatei (in diesem Fall .json) mit späteren Prozessvariablen zu erzeugen und zu speichern, um später darauf zugreifen zu können.
Der Quellcode ist im Moment erstmal nur ein Prototyp und soll im Laufe der Zeit ausgebaut und verfeinert werden.
Code:
PROGRAM MAIN
VAR
jsonDatei : STRING(255);
dateiNummer : INT := 1;
dateiNamen : STRING;
bInitCreate : BOOL := FALSE;
bInitFile : BOOL := FALSE;
END_VAR
IF NOT bInitCreate THEN //wenn noch kein Sring erzeugt wurde -> erzeuge einen neuen String
jsonDatei := FUN_CreateJson(); //erzeugt einen String im Json-Stil
bInitCreate := TRUE;
END_IF
dateiNamen := concat('Default', INT_TO_STRING(dateiNummer)); //erstellt einen Namen, unter der die Datei gespeichert wird
IF NOT bInitFile THEN //wenn noch keine Datei erstellt wurde -> erstelle neue Datei
IF bInitCreate THEN //wenm ein zu speichernder String erstellt wurde
FUN_SafeFile(jsondatei, dateiNamen); //Funktion für das Erstellen/Speichern/Schließen einer .json Datei
bInitFile := TRUE;
dateiNummer := dateiNummer +1; //Nummer für den Dateinamen wird erhöht, um bei nächsten Aufruf
//eine separate Datei anzulegen
END_IF
END_IF
Die Funktion FUN_SafeFile:
Code:
VAR_INPUT
input : STRING;
name : STRING;
END_VAR
VAR
open : FB_FileOpen;
write : FB_FileWrite;
close : FB_FileClose;
datei : STRING := concat(name, '.json');
y : STRING := concat('C:\', datei);
i: INT := 0;
END_VAR
WHILE i <> 30 DO
CASE i OF
0: open (bExecute := FALSE);
open ( sNetId := '',
sPathName := y,
nMode := FOPEN_MODEWRITE,
tTimeout := T#3S,
bExecute := TRUE);
i := 5;
5: open(bExecute := FALSE);
IF NOT open.bBusy THEN
i := 10;
END_IF
10: write(bExecute := FALSE);
write( sNetId := '',
hFile := open.hFile,
pWriteBuff := ADR(input),
cbWriteLen := SIZEOF(input),
tTimeout := T#3S,
bExecute := TRUE);
i := 15;
15: write(bExecute := FALSE);
IF NOT write.bBusy THEN
i := 20;
END_IF
20: close(bExecute := FALSE);
close( sNetId := '',
hFile := open.hFile,
bExecute := TRUE);
i := 25;
25: close(bExecute := FALSE);
i := 30;
30: //....ende
END_CASE
END_WHILE
Das Problem, was hier allerdings auftaucht, ist dass wenn ich das Programm ausführe, erstellt es mir eine Datei, welche jedoch ohne Inhalt ist (0kB). Auch wenn ich eine zweite und dritte Datei erzeuge, sind diese dann ohne Inhalt.
Interessant ist aber, wenn ich mir Breakpoints setze in der Funktion, schreibt das Programm auch den String in die Datei.
Hat vielleicht jemand eine Idee woran das liegen könnte und wie ich das Problem beheben kann?
Ich bedanke mich schon mal im Voraus für die Hilfe.