CODESYS - the IEC 61131-3 automation software

Welcome to the official CODESYS Forum by 3S-Smart Software Solutions GmbH | A member of the CODESYS Group
Deutsche Version English version russian version 
It is currently Tue Oct 22, 2019 4:46 am

All times are UTC+01:00




Post new topic  Reply to topic  [ 1 post ] 
Author Message
PostPosted: Wed May 01, 2019 12:54 am 
Offline

Joined: Tue Apr 23, 2019 8:59 pm
Posts: 1
filrd.szSize is always read as zero, I am wondering why this is happening.

Also I am confused about what the how the pBuffer in filrd works. when I set the pBuffer to "" it is the a number 22 greater than the pBuffer for the initial write.

Any help with this issue would be appreciated thanks.


Code:
(* example of how to use the CAA_FILE-library - file standard function blocks *)
PROGRAM PLC_PRG
VAR
    xFileStdInit:   BOOL:=FALSE;
    uiFileStdState: UINT:=0;
    sFileName:  CAA.FILENAME:= '/home/pi/TestDirectory/newtester3.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.MODE.MRDWR;
        filop.xExclusive:=FALSE;
        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:=INT_TO_UINT(STANDARD.LEN(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



Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1 post ] 

All times are UTC+01:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited