IF taskSaveTrendsToUSB THEN
dirstat.xExecute := FALSE;
filecp.xExecute := FALSE;
diropn.xExecute := FALSE;
dircls.xExecute := FALSE;
startPrg(CLK := TRUE);
iState:=1;
taskSaveTrendsToUSB := FALSE;
END_IF
CASE iState OF
0: // waiting
1: diropn(
sDirName := source_dir,
xExecute := TRUE);
IF diropn.xDone THEN
hDir := diropn.hDir;
diropn.xExecute := FALSE;
iState := 2;
ELSIF diropn.xError THEN
iState := 6;
END_IF
2: dirstat(
hDir := hDir,
xExecute := TRUE);
IF dirstat.xDone AND dirstat.eError = file.ERROR.NO_ERROR THEN
iState := 3;
ELSIF dirstat.xError THEN
iState := 6;
END_IF
3: filecp(
sFileNameDest := SD_path,
sFileNameSource := source_path,
xOverWrite := TRUE );
filecp.xExecute := TRUE;
IF filecp.xDone THEN
dircls(
hDir := hDir,
xExecute:=TRUE);
IF dircls.xDone THEN
iState := 4;
ELSIF dircls.xError THEN
iState := 5;
END_IF
filecp(xExecute := FALSE);
ELSIF filecp.xError THEN
iState := 5;
END_IF
4: GVL.save_done := TRUE;
GVL.flash_err := FALSE;
GVL.copy_err := FALSE;
umount();
iState:= 7;
5: GVL.copy_err := TRUE;
GVL.flash_err := FALSE;
GVL.save_done := FALSE;
iState:= 7;
6: GVL.flash_err := TRUE;
GVL.save_done := FALSE;
GVL.copy_err := FALSE;
iState:= 7;
7: taskSaveTrendsToUSB := FALSE;
startPrg(CLK:= FALSE);
iState:=0;
filecp(xExecute := FALSE);
end_case;