File - Standard (示例)

(* 如何使用 CAA_FILE.library示例 - 标准文件功能块 *)

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