Beispiel: Dateisuche (FB_EnumFindFileEntry, FB_EnumFindFileList)
Hier können Sie die kompletten Sourcen entpacken: EnumFindFile.zip
Beispiel: FB_EnumFindFileEntry (ST)
Auf dem lokalen TwinCAT System sollen alle Dateien im Verzeichnis C:\Windows\System32\ aufgelistet werden. Die Dateinamen sollen als Meldungen ins TwinCAT XAE Error Liste geschrieben werden. Es soll möglich sein diesen Vorgang abzubrechen. Bei einer steigenden Flanke an der bEnum-Variablen beginnt die Auflistung der gefundenen Dateien. Bei einer steigenden Flanke an der bAbort-Variablen wird der Vorgang abgebrochen.
PROGRAM P_TestEnumEntry
VAR
fbEnum: FB_EnumFindFileEntry := ( sNetID := '', tTimeout := T#5s, sPathName := 'C:\Windows\System32\*.*' );
bEnum : BOOL;
bAbort: BOOL;
nState: BYTE;
END_VAR
CASE nState OF
0:
IF bEnum THEN (* flag set ? *)
bEnum := FALSE; (* reset flag *)
fbEnum.eCmd := eEnumCmd_First; (* enum first entry *)
nState := 1;
END_IF
1: (* enum one entry *)
IF bAbort THEN
bAbort := FALSE;
fbEnum.eCmd := eEnumCmd_Abort;
END_IF
fbEnum( bExecute := FALSE );
fbEnum( bExecute := TRUE );
nState := 2;
2: (* wait until function block not busy *)
fbEnum( bExecute := FALSE );
IF NOT fbEnum.bBusy THEN
IF NOT fbEnum.bError THEN
IF NOT fbEnum.bEOE THEN
ADSLOGSTR( ADSLOG_MSGTYPE_HINT OR ADSLOG_MSGTYPE_LOG, 'FB_EnumFindFileEntry, find file name: %s', fbEnum.stFindFile.sFileName );
fbEnum.eCmd := eEnumCmd_Next; (* enum next entry *)
nState := 1;
ELSE (* no more entries *)
nState := 0;
END_IF
ELSE (* log error *)
ADSLOGSTR( ADSLOG_MSGTYPE_ERROR OR ADSLOG_MSGTYPE_LOG, 'FB_EnumFindFileEntry error:%s', DWORD_TO_HEXSTR( fbEnum.nErrID, 0, FALSE ) );
nState := 0;
END_IF
END_IF
END_CASE
Die geschriebenen Logmeldungen in der TwinCAT XAE Error Liste:
Beispiel: FB_EnuFindFileList (FUP)
Bei einer steigenden Flanke an der bFirst-Variablen wird der Funktionsbaustein aktiviert. Beim Erfolg werden die Dateinamen in die fileList-Arrayvariable eingetragen.
PROGRAM P_TestEnumList
VAR
fbEnum : FB_EnumFindFileList;
filesList : ARRAY[1..10] OF ST_FindFileEntry;
bFirst : BOOL;
bNext : BOOL;
bAbort : BOOL;
bBusy : BOOL;
bError : BOOL;
nErrID : UDINT;
bEOE : BOOL;
nFindFiles : UDINT;
END_VAR
Onlineansicht:
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, ARM) | Tc2_Utilities (System) |