La funzione permette l'apertura del collegamento tra la risorsa indicata dal parametro FName, ed un flusso di dati I/O stream da impiegare nelle successive chiamate alle funzioni di I/O. La funzione ritorna il puntatore alla risorsa.

Se la risorsa indicata è già aperta oppure il nome della risorsa è errato, la funzione ritorna NULL. Se si sta aprendo un file su disco per crearlo, accertarsi che il disco sia formattato.

Function
CODESYS: Non disponibile
LogicLab: eLLabXUnified12Lib

FName (STRING[20]) Occorre indicare il nome della risorsa da utilizzare. Nel caso di un file su disco occorre indicare il file con il percorso completo.

Mode (STRING[4]) Occorre indicare il modo in cui la risorsa è aperta: r=read; w=write ; a=append. Per creare un file su disco, occorre eseguire l'apertura in 'w' o 'a'. Per le porte seriali definire 'rw'.

La funzione ritorna un (FILEP) con il puntatore alla risorsa. NULL in caso di errore.

Errori

In caso di errore si attiva l'uscita Fault, eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.

ST_Sysfopen: Al primo loop di esecuzione viene aperto in lettura il file "C:/Logs.txt" e se presente vengono letti alcuni caratteri dal file e trasferiti nel buffer RData.

ST_PenDriveUse: Questo esempio da utilizzarsi su SlimLine  Raspberry dimostra come gestire un pen drive connesso al sistema. Ne viene controllata la presenza e all'inserimento nel sistema se sul pen drive è presente il file desiderato ne viene letta parte del contenuto. Il sistema Raspberry può montare i più comuni file  systems (FAT, NTFS, and HFS+), il disco viene di default montato nella cartella /media/pi/<HARD-DRIVE-LABEL>.

LogicLab (Ptp116)
PROGRAM ST_Sysfopen
VAR
    i : UDINT; (* Auxiliary counter *)
    Fp : FILEP; (* File pointer *)
    RData : STRING[ 32 ]; (* Read data *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_Sysfopen"
// *****************************************************************************
// It's opened the "C:/System/Logs.txt" file and readed some character from it.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // FILE READ
    // -------------------------------------------------------------------------
    // On First program loop open file and read from it.

    IF (SysFirstLoop) THEN 
        Fp:=Sysfopen('C:/Logs.txt', 'r'); //File pointer
        
        IF (SysFIsOpen(Fp)) THEN
            i:=Sysfread(ADR(RData), TO_INT(SIZEOF(RData)), 1, Fp);
            i:=Sysfclose(Fp);
        END_IF;
    END_IF;

// [End of file]
LogicLab (Ptp116)

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 3 Febbraio 2020