File Standard Example

Navigation:  Libraries > CT File Access > Examples >

File Standard Example

Previous pageReturn to chapter overviewNext page

(* example of how to use the file standard function blocks *)

PROGRAM FILE.STANDARD_PRG

VAR

  xFileStdInit: BOOL:=FALSE;

  uiFileStdState: UINT:=0;

  sFileName: CAA.FILENAME:= 'TestFile.txt';

  hFile: CAA.HANDLE;

  sFileTestString: STRING:='Hello caa library user';

  sFileString: STRING:='';

  szFileSize1: CAA.SIZE := 0;

  szFileSize2: CAA.SIZE := 0;

  filop: FILE.Open;

  filwr: FILE.Write;

  filrd: FILE.Read;

  filcl: FILE.Close;

END_VAR

 

IF NOT xFileStdInit THEN

  filop(xExecute:=FALSE);

  filcl(xExecute:=FALSE);

  filwr(xExecute:=FALSE);

  filrd(xExecute:=FALSE);

  xFileStdInit:=TRUE;

  uiFileStdState:=0;

ELSE

  CASE uiFileStdState OF

  0: (* create a new file *)

     filop.sFileName:=sFileName;

     filop.eFileMode:=FILE.MRDWR;

     filop.xExclusive:=TRUE;

     filop( xExecute:=TRUE);

     IF filop.xDone THEN

        hFile:=filop.hFile;

        uiFileStdState:=1;

     END_IF

     IF filop.xError THEN

        (* error handling*)

        ;

     END_IF

  1:(* write text in the file *)

     filwr.hFile:=hFile;

     filwr.pBuffer:=ADR(sFileTestString);

     szFileSize1:=SIZEOF(sFileTestString);

     filwr.szSize:=szFileSize1;

     filwr.udiTimeOut:=100000; (* 100ms Timeout *)

     filwr( xExecute:=TRUE);

     IF filwr.xDone THEN

        uiFileStdState:=2;

     END_IF

     IF filwr.xError THEN

        (* error handling*)

        ;

     END_IF

  2:(* read file - TestFile.txt*)

     filrd.hFile:=hFile;

     filrd.udiTimeOut:=100000; (* 100ms Timeout *)

     filrd.pBuffer:=ADR(sFileString);

     filrd.szBuffer:=255;

     filrd( xExecute:=TRUE);

     IF filrd.xDone THEN

        szFileSize2:=filrd.szSize;

        IF szFileSize2 = szFileSize1 THEN

           uiFileStdState:=3;

        ELSE

          (* error handling*)

          ;

        END_IF

     END_IF

     IF filrd.xError THEN

        (* error handling*)

        ;

     END_IF

  3: (* close file - TestFile.txt *)

     filcl.hFile:=hFile;

     filcl( xExecute:=TRUE);

     IF filcl.xDone THEN

        uiFileStdState:=4;

     END_IF

     IF filcl.xError THEN

        (* error handling*)

        ;

     END_IF

  4: (* end of example *)

     ;

  END_CASE

END_IF