PROGRAM PLC_PRG

VAR

   sFileName:STRING:='/home/PLC.txt';

        eFileAOpenMode: ACCESS_MODE;

        pResultFileOpen:  RTS_IEC_RESULT;

        TEST_Write: BOOL;

        hFile: RTS_IEC_HANDLE;

        sWrite: ARRAY[0..4] OF  BYTE;

        sRead: ARRAY[0..4] OF  BYTE;

        pResultWrite: RTS_IEC_RESULT;

        TEST_Read: BOOL;

        pResultRead: RTS_IEC_RESULT;

        pResultFileOpen2: RTS_IEC_RESULT;

        udiPosError: UDINT;

        udiPos: __XWORD;

        udiBytesRead: __XWORD;

        udiWrite: __XWORD;

END_VAR





IF TEST_Write AND NOT TEST_Read  THEN

        eFileAOpenMode:=ACCESS_MODE.AM_WRITE_PLUS;

    IF hFile=0 THEN

                hFile:= SysFileOpen(szFile:=sFileName , am:=eFileAOpenMode , pResult:= ADR(pResultFileOpen));//文件打开操作

    END_IF

        IF hFile<>RTS_INVALID_HANDLE  THEN

                udiPosError := SysFileGetPos(hFile:=hFile, pulPos:=ADR(udiPos));

               

                udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(sWrite), ulSize:=SIZEOF(sWrite), pResult:=ADR(pResultWrite));//文件写操作

        END_IF


END_IF

IF TEST_Read AND NOT TEST_Write  THEN

        eFileAOpenMode:=ACCESS_MODE.AM_READ;

        IF hFile=0 THEN

                hFile:= SysFileOpen(szFile:=sFileName , am:=eFileAOpenMode , pResult:= ADR(pResultFileOpen2));

    END_IF

        IF hFile=RTS_INVALID_HANDLE THEN

                hFile:= SysFileOpen(szFile:=sFileName , am:=ACCESS_MODE.AM_WRITE_PLUS , pResult:= ADR(pResultFileOpen2));//文件打开

    END_IF

        IF hFile<>RTS_INVALID_HANDLE  THEN

                udiPos := SysFileSetPos(hFile:=hFile, ulOffset:=0);

                udiBytesRead :=SysFileRead(hFile:=hFile , pbyBuffer:=ADR(sRead) , ulSize:=SIZEOF(sRead) , pResult:=ADR(pResultRead ));//文件读取

                sRead[udiBytesRead] := 0;

        END_IF


END_IF

IF NOT TEST_Read AND NOT TEST_Write THEN

        IF hFile<>RTS_INVALID_HANDLE AND hFile<>0 THEN

                SysFileClose(hFile:=hFile );//文件关闭

        END_IF

        hFile:=0;

        udiWrite:=0;

        udiBytesRead:=0;

END_IF