You can additionally access the app data (activeConfiguration). See the modified example from the CXA_FileAsyn library:
Declaration:
PROGRAM WriteFile
VAR
fbFile: CXA_FileAsync.IL_FileAsync;
fbFileWrite: CXA_FileAsync.IL_FileWriteAsync;
filename: STRING := '/var/snap/rexroth-solutions/common/solutions/activeConfiguration/testfile.txt';
itestcase: UINT := 0;
writebuf: STRING(500);
writebuflen: UDINT := 500;
writelen: UDINT := 0;
END_VAR
Implementation:
CASE itestcase OF
1: // open the file
fbFile(Enable:=TRUE, FileName:=ADR(filename), Mode:=IL_FILE_ACCESS_MODE.AM_WRITE);
IF fbFile.InOperation THEN
itestcase := itestcase + 1;
END_IF
2: // write the file
writebuf := 'BoschRexroth$R$NCtrlX Automation$R$NCXA_FileAsync$R$N';
writebuflen := IL_LEN(ADR(writebuf));
fbFileWrite(Execute:=TRUE, FileHandle:=fbFile.FileHandle, BufferAddr:=ADR(writebuf), BufferSize:=writebuflen, BytesWritten=>writelen);
IF fbFileWrite.Done THEN
fbFileWrite(Execute:=FALSE);
itestcase := itestcase + 1;
END_IF
3: // close file
fbFile(Enable:=FALSE);
If NOT fbFile.Shutdown AND NOT fbFile.InOperation THEN
itestcase := 0;
END_IF
END_CASE
IF fbFileWrite.Error OR fbFile.Error THEN
; // post some error
END_IF
... View more