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