PROGRAM PRG_CSVREAD
VAR
strParameterFile : STRING(80) := 'EPCO.csv';
iStep : INT := 0;
rtsHandle : CmpErrors.RTS_IEC_HANDLE;
rtsResult : CmpErrors.RTS_IEC_RESULT;
iBytesRead : UDINT := 0;
strLineBuffer : STRING(255) := '';
strPNU : STRING(20) := '';
strSubindex : STRING(20) := '';
strDataType : STRING(20) := '';
strValue : STRING(30);
iNewLinePosition : INT := 0;
iReadStartPosition : INT := 0;
iReadEndPosition : INT := 0;
iReadPosInFile : DINT := 0;
bNewLineFound : BOOL := FALSE;
// byLineBuffer : ARRAY [0..200] OF BYTE;
END_VAR
rtsHandle := file.SysFileOpen(
szFile := strParameterFile,
am := file.AM_READ,
pResult := ADR(rtsResult)
);
bNewLineFound := TRUE;
WHILE bNewLineFound DO
// Datei einlesen
iBytesRead := file.SysFileRead(
hFile := rtsHandle,
pbyBuffer := ADR(strLineBuffer),
ulSize := SIZEOF(strLineBuffer),
pResult := ADR(rtsResult)
);
iNewLinePosition := FIND(strLineBuffer, '$R');
IF iNewLinePosition = 0 THEN
bNewLineFound := FALSE;
EXIT;
END_IF;
IF iNewLinePosition > 0 THEN
strLineBuffer := MID(strLineBuffer, iNewLinePosition,1);
iReadStartPosition := 1;
iReadEndPosition := FIND(strLineBuffer,',');
strPNU := MID(strLineBuffer, iReadEndPosition - iReadStartPosition, iReadStartPosition);
strLineBuffer := MID(strLineBuffer,LEN(strLineBuffer),iReadEndPosition+1 );
iReadStartPosition := 1;
iReadEndPosition := FIND(strLineBuffer,',');
strSubindex := MID(strLineBuffer, iReadEndPosition - iReadStartPosition, iReadStartPosition);
strLineBuffer := MID(strLineBuffer,LEN(strLineBuffer),iReadEndPosition+1 );
iReadStartPosition := 1;
iReadEndPosition := FIND(strLineBuffer,',');
strDataType := MID(strLineBuffer, iReadEndPosition - iReadStartPosition, iReadStartPosition);
strLineBuffer := MID(strLineBuffer,LEN(strLineBuffer),iReadEndPosition+1);
iReadStartPosition := 1;
iReadEndPosition := FIND(strLineBuffer,'$R');
strValue := MID(strLineBuffer, iReadEndPosition - iReadStartPosition, iReadStartPosition);
strLineBuffer := MID(strLineBuffer,LEN(strLineBuffer),iReadEndPosition+1 );
END_IF;
iReadPosInFile := iReadPosInFile + iNewLinePosition+1;
// Leseposition auf Anfang setzen
file.SysFileSetPos(
hFile := rtsHandle,
ulOffset := iReadPosInFile
);
END_WHILE
file.SysFileClose(rtsHandle);