FB_FileControl Function Block

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


Variables

NameTypeDefaultDescription
FileAccessModeSysFile.ACCESS_MODESysFile.AM_APPEND_PLUSAppend_Plus creates the file if it doesn't exist yet.
FileHandleSysFile.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

NameTypeDescription
FileNameT_MaxString
Implementation
Delete := SysFile.SysFileDelete(szFileName := FileName);
Open PUBLIC

Opens a file

Parameters

NameTypeDefaultDescription
FileNameT_MaxString'filepath/output.xml'File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/)
FileAccessModeSysFile.ACCESS_MODESysFile.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

NameTypeDescription
BufferPointerPOINTER TO BYTECall with ADR();
SizeUDINTCall with SIZEOF();

Outputs

NameTypeDescription
FileSizeSysFile.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

NameTypeDescription
BufferPointerPOINTER TO BYTECall with ADR();
SizeUDINTCall 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