fsFilePosition (Function)

Top  Previous  Next

Architecture:

X32 / NX32 / NX32L

Firmware version:

1.00 / 1.00.00


This will return the position of the FILE data pointer. The function can be used to determine the size of the file in conjunction with fsFileSeek (with offset set to -1). All data is addressed as 8 bit, and after each successful read or write operation, the file data pointer is automatically incremented.

 

 

Input:                

fd : FILE

FILE descriptor for the file retrieved from fsFileOpen or fsFileCreate.

 

Returns: DINT

Position of file pointer.

 

Declaration:

FUNCTION fsFilePosition : DINT;
VAR_INPUT
  fd : FILE;
END_VAR;

 

 

Example:

...
IF fsFileExists(name := "\gpslog.dat") THEN
   fdGpslog := fsFileOpen(name := "\gpslog.dat");
   IF fsFileStatus(fd := fdGpslog) = 0 THEN
      // Is file empty?
      IF fsFilePosition(fd := fdGpslog) > 0 THEN
         rc := fsFileSeek(fd := fsGpslogoffset := 0);
         IF rc = 0 THEN
            // Iterate file
            REPEAT
               // Read data fields
               len1 := fsFileRead(fd := fdGpslogbuffer := ADDR(linsec), length := SIZEOF(linsec));
               len2 := fsFileRead(fd := fdGpslogbuffer := ADDR(lat), length := SIZEOF(lat));
               len3 := fsFileRead(fd := fdGpslogbuffer := ADDR(lon), length := SIZEOF(lon));
               // Is data valid?
               IF len1 = SIZEOF(linsec) AND len2 = SIZEOF(lat) AND len3 = SIZEOF(lon) THEN
                  // Data is read
                  ...
               END_IF;
            UNTIL len1 <> SIZEOF(linsec) OR len2 <> SIZEOF(lat) OR len3 <> SIZEOF(lon)
            END_REPEAT;
         ELSE
            // Error
         END_IF;
      ELSE
         // No data
      END_IF;
      fsFileClose(fd := fdGpslog);
   ELSE
      // Could not open file
   END_IF;
ELSE
   // File dont exist
END_IF;
...