(* 如何使用 ⇘ CAA_FILE library示例 - 直接功能块 *)
PROGRAM DIR_PRG
VAR xDirInit: BOOL := FALSE; uiDirState: UINT := 0; sDirNewName: STRING:='./TestDirectory'; sDirNextName: STRING:='./NewDirectory'; hDir: CAA.HANDLE; deNewDirectory: FILE.FILE_DIR_ENTRY; fildcr: FILE.DirCreate; fildop: FILE.DirOpen; fildcl: FILE.DirClose; fildls: FILE.DirList; fildrn: FILE.DirRename; fildrm: FILE.DirRemove; END_VAR IF NOT xDirInit THEN fildcr(xExecute:=FALSE); fildcl(xExecute:=FALSE); fildls(xExecute:=FALSE); fildrm(xExecute:=FALSE); xDirInit:=TRUE; uiDirState:=0; CASE uiDirState OF 0: (* create a new directory *) fildcr.sDirName:=sDirNewName; fildcr.xParent:=FALSE; fildcr( xExecute:=TRUE); IF fildcr.xDone THEN uiDirState:=1; END_IF IF fildcr.xError THEN (* error handling*) ; END_IF 1:(* open directory *) fildop.sDirName:=sDirNewName; fildop( xExecute:=TRUE); IF fildop.xDone THEN hDir := fildop.hDir; uiDirState:=2; END_IF IF fildop.xError THEN (* error handling*) ; END_IF 2:(* get directory property list *) fildls.hDir:=hDir; fildls( xExecute:=TRUE); IF fildls.xDone THEN deNewDirectory.sEntry :=fildls.deDirEntry.sEntry; deNewDirectory.szSize :=fildls.deDirEntry.szSize; deNewDirectory.xDirectory :=fildls.deDirEntry.xDirectory; deNewDirectory.xExclusive :=fildls.deDirEntry.xExclusive; deNewDirectory.dtLastModification :=fildls.deDirEntry.dtLastModification; uiDirState:=3; END_IF IF fildop.xError THEN (* error handling*) ; END_IF 3:(* close directory *) fildcl.hDir:=hDir; fildcl( xExecute:=TRUE); IF fildcl.xDone THEN uiDirState:=4; END_IF IF fildcl.xError THEN (* error handling*) ; END_IF 4:(* rename directory*) fildrn.sDirNameOld:=sDirNewName; fildrn.sDirNameNew:=sDirNextName; fildrn( xExecute:=TRUE); IF fildrn.xDone THEN uiDirState:=5; END_IF IF fildrn.xError THEN (* error handling*) ; END_IF 5:(* remove directory*) fildrm.sDirName:=sDirNextName; fildrm.udiTimeOut:=100000; (* 100ms TimeOut *) fildrm.xRecursive:=FALSE; fildrm( xExecute:=TRUE); IF fildrm.xDone THEN uiDirState:=6; END_IF IF fildrm.xError THEN (* error handling*) ; END_IF 6: (* end of example*) ; END_CASE END_IF