Hi,
ich möchte ein Array mit Strings in einer Datei mit FB_Write speichern. Klappt soweit - nur ein Haufen "Müll" wird mit gespeichert.
Ich habe mitlerweile herausgefunden, dass im State 6 der SIZEOF für Arrays so nicht anwendbar ist und für den zusätzlichen Datenmüll verantwortlich ist (LENOF geht auch nicht) - nur habe ich noch nicht herausgefunden wie man nun ein Array als Textdatei speichert :? Jede Hilfe willkommen ;)
ich möchte ein Array mit Strings in einer Datei mit FB_Write speichern. Klappt soweit - nur ein Haufen "Müll" wird mit gespeichert.
Code:
CASE iState OF
0: IF bExecute THEN
iState := istate +1;
END_IF
1: fbGetLocalAmsNetId.bExecute := TRUE;
IF fbGetLocalAmsNetId.bBusy THEN
iState := iState + 1;
END_IF
2: IF NOT fbGetLocalAmsNetId.bBusy AND NOT fbGetLocalAmsNetId.bError THEN
fbGetLocalAmsNetId.bExecute := FALSE;
sAmsNetId := fbGetLocalAmsNetId.AddrString;
iState := iState + 1;
ELSIF fbGetLocalAmsNetId.bError THEN
iState := 99;
END_IF
3: fbFileOpen.nMode := FOPEN_MODEWRITE ;
fbFileOpen.sNetId := sAmsNetId;
fbFileOpen.ePath := Path_GENERIC;
fbFileOpen.sPathName := 'C:\TwinCat\Trace.txt';
fbFileOpen.tTimeout := T#3S;
fbFileOpen.bExecute := TRUE;
iState := iState +1;
4: IF fbFileOpen.bBusy AND NOT fbFileOpen.bError THEN
iState := iState +1;
ELSIF fbFileOpen.bError THEN
iState := 99;
END_IF;
5: IF NOT fbFileOpen.bBusy AND NOT fbFileOpen.bError THEN
hFile := fbFileOpen.hFile;
fbFileOpen.bExecute := FALSE;
fbFileWrite.bExecute := FALSE;
iState := iState + 1;
ELSIF fbFileOpen.bError THEN
fbFileOpen.bExecute := FALSE;
iState := 99;
END_IF;
6: fbFileWrite.hFile := hFile;
fbFileWrite.sNetId := sAmsNetId;
fbFileWrite.tTimeout := T#3S;
fbFileWrite.pWriteBuff := ADR(GVL_Trace.ConcatTrace );
fbFileWrite.cbWriteLen := SIZEOF(GVL_Trace.ConcatTrace);
fbFileWrite.bExecute := TRUE;
iState := iState + 1;
7: IF fbFileWrite.bBusy AND NOT fbFileWrite.bError THEN
iState := iState + 1;
ELSIF fbFileWrite.bError THEN
fbFileWrite.bExecute := FALSE;
iState := 99;
END_IF;
8: IF NOT fbFileWrite.bBusy AND NOT fbFileWrite.bError THEN
fbFileWrite.bExecute := FALSE;
fbFileClose.bExecute := FALSE;
iState := iState + 1;
ELSIF fbFileWrite.bError THEN
fbFileWrite.bExecute := FALSE;
iState := 99;
END_IF;
9: fbFileClose.hFile := hFile;
fbFileClose.sNetId := sAmsNetId;
fbFileClose.tTimeout := T#3S;
fbFileClose.bExecute := TRUE;
iState := iState + 1;
10:IF fbFileClose.bBusy AND NOT fbFileClose.bError THEN
iState := iState + 1;
ELSIF fbFileClose.bError THEN
fbFileClose.bExecute := FALSE;
iState := 99;
END_IF;
11: IF NOT fbFileClose.bBusy AND NOT fbFileClose.bError THEN
fbFileClose.bExecute := FALSE;
iState := 88;
ELSIF fbFileClose.bError THEN
fbFileClose.bExecute := FALSE;
iState := 99;
END_IF;
88: bExecute := FALSE;
iState := 0;
99: bError := TRUE;
iState := 88;
END_CASE
fbGetLocalAmsNetId();
fbFileOpen();
fbFileWrite();
fbFileClose();