FB_FileControl  Function Block

This functionblock can open, close, read, write and delete files on the local filesystem


Variables

Name Type Default Description
FileAccessMode SysFile.ACCESS_MODE SysFile.AM_APPEND_PLUS Append_Plus creates the file if it doesn't exist yet.
FileHandle SysFile.SysTypes.RTS_IEC_HANDLE

Methods

Close PUBLIC

Closes the currently opened file.

Implementation
IF FileHandle <> SysFile.SysTypes.RTS_INVALID_HANDLE THEN
    Close := SysFile.SysFileClose(hFile := FileHandle);
ELSE
    Close := SysDir.CmpErrors.Errors.ERR_INVALID_HANDLE;
END_IF
Delete PUBLIC

Deletes a file specified by name, if it exists.

Parameters

Name Type Description
FileName T_MaxString
Implementation
Delete := SysFile.SysFileDelete(szFileName := FileName);
Open PUBLIC

Opens a file

Parameters

Name Type Default Description
FileName T_MaxString 'filepath/output.xml' File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/)
FileAccessMode SysFile.ACCESS_MODE SysFile.ACCESS_MODE.AM_APPEND_PLUS
Implementation
FileHandle := SysFile.SysFileOpen(szFile := Filename,
                                  am := FileAccessMode,
                                  pResult := ADR(Open));
Read PUBLIC

Reads a file from disk into the buffer

Parameters

Name Type Description
BufferPointer POINTER TO BYTE Call with ADR();
Size UDINT Call with SIZEOF();

Outputs

Name Type Description
FileSize SysFile.SysTypes.RTS_IEC_SIZE
Implementation
IF FileHandle <> SysFile.SysTypes.RTS_INVALID_HANDLE THEN
    FileSize := SysFile.SysFileRead(hFile := FileHandle, 
                                    pbyBuffer := BufferPointer,
                                    ulSize := Size,
                                    pResult := ADR(Read));
ELSE
    Read := SysDir.CmpErrors.Errors.ERR_INVALID_HANDLE;
END_IF
Write PUBLIC

Writes the contents of the buffer into a file.

Parameters

Name Type Description
BufferPointer POINTER TO BYTE Call with ADR();
Size UDINT Call with SIZEOF();
Implementation
IF FileHandle <> SysFile.SysTypes.RTS_INVALID_HANDLE THEN
    SysFile.SysFileWrite(hFile := FileHandle,
                         pbyBuffer := BufferPointer,
                         ulSize := Size,
                         pResult := ADR(Write));
ELSE
    Write := SysDir.CmpErrors.Errors.ERR_INVALID_HANDLE;
END_IF

Used by

Declaration source
// This functionblock can open, close, read, write and delete files on the local filesystem
FUNCTION_BLOCK FB_FileControl
VAR
    FileAccessMode : SysFile.ACCESS_MODE := SysFile.AM_APPEND_PLUS; // Append_Plus creates the file if it doesn't exist yet. 
    FileHandle : SysFile.SysTypes.RTS_IEC_HANDLE;
END_VAR