SysVarfprintf, variable print to file

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Gestione terminali (Streams) di I/O
  6. SysVarfprintf, variable print to file

La funzione esegue la stampa formattata di una variabile nel buffer di uscita (Trasmissione) del terminale di I/O (Stream) indicato dal parametro File, precedentemente aperto dalla relativa funzione di apertura risorsa. I caratteri caricati nel buffer saranno effettivamente trasmessi dopo il tempo di flush definito, per la trasmissione immediata utilizzare la SysFOBfFlush.

La stringa Format specifica il formato con il quale stampare la variabile. In VarType è indicato il tipo di variabile ed in VarAdd il suo indirizzo. La funzione ritorna il numero di caratteri trasferiti nello stream, EOF in caso di errore.

Nota: La dimensione della stringa stampata non può superare la dimensione del buffer di uscita dello stream e comunque i 1024 caratteri.

Function
CODESYS: Non disponibile
LogicLab: eLLabXUnified12Lib

File (FILEP) Terminale di I/O (Stream) ritornato dalla funzione di apertura risorsa.

Format (STRING[80]) Ha due tipi di argomenti, i caratteri ordinari che vengono copiati nello stream di uscita, e le specifiche di conversione, contraddistinte dal simbolo percentuale (%) e da un carattere che specifica il formato con il quale stampare la variabile definita (Vedi formato).

VarType (VR_TYPE) Tipo variabile (Vedi definizione).

VarAdd (UDINT)) Indirizzo variabile.

La funzione ritorna un (INT) con il numero di caratteri trasferiti nel buffer di uscita, EOF se errore.

Errori

In caso di errore la funzione torna EOF, 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.
Al primo loop di esecuzione viene istanziato un server TCP in ascolto sulla porta 1100. Quando un client si connette viene inviato al client un messaggio di benvenuto con il numero di visitatori connessi.

LogicLab (Ptp116)
PROGRAM ST_SysVarfprintf
VAR
    i : INT; (* Auxiliary variable *)
    Pulse : BOOL; (* Pulse flag *)
    VisitorNr : USINT; (* Visitor number *)
    Fp : FILEP; (* File pointer array *)
    TCPServer : SysTCPServer; (* TCP server *)
END_VAR

// *****************************************************************************
// PROGRAM "SysVarfprintf"
// *****************************************************************************
// Opens a TCP server on port 1100 and send to the client a welcome message.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // TCPServer initialization.

    IF (SysFirstLoop) THEN
        TCPServer.FilesArr:=ADR(Fp); //Files array
        TCPServer.LocalAdd:=ADR('0.0.0.0'); //Local address
        TCPServer.LocalPort:=1100; //Local port 
        TCPServer.MaxConn:=1; //Accepted connections
        TCPServer.FlushTm:=50; //Flush time (mS)
        TCPServer.LifeTm:=0; //Life time (S)
        TCPServer.RxSize:=128; //Rx buffer size
        TCPServer.TxSize:=128; //Tx buffer size
    END_IF;

    // Manage the TCP server.

    TCPServer(Enable:=TRUE); //TCPServer management

    // -------------------------------------------------------------------------
    // WELCOME MESSAGE
    // -------------------------------------------------------------------------
    // Check if a client is been connected.

    IF NOT(SysFIsOpen(Fp)) THEN Pulse:=FALSE; RETURN; END_IF;
    IF (Pulse) THEN RETURN; END_IF;
    Pulse:=TRUE; //Pulse flag

    // Send welcome string.

    VisitorNr:=VisitorNr+1; //Visitor number
    i:=SysVarfprintf(Fp, 'Welcome, You are visitor Nr:%d$r$n', VR_TYPE#USINT_TYPE, ADR(VisitorNr));

// [End of file]

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 22 Agosto 2019