SysVfprintf, variable print to file

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

Questa funzione da eseguire in task Back, ritorna 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, eEOF in caso di errore.

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

Sostituisce “SysVarfprintf”

Sostituisce la funzione SysVarfprintf modificando il tipo di parametri in ingresso da stringa a puntatore a stringa. La precedente dichiarazione:

i:=SysVarfprintf(Fp, 'You are visitor Nr:%d$r$n', USINT_TYPE, ADR(VisitorNr));

Diventa:

i:=SysVfprintf(Fp, ADR('You are visitor Nr:%d$r$n'), USINT_TYPE, ADR(VisitorNr));
Information Circle

Funzione

CODESYS: Non disponibile

LogicLab: eLLabXUnified12Lib

Descrizione

File (eFILEP) Terminale di I/O (Stream) ritornato dalla funzione di apertura risorsa.
Format (@STRING) 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 (PVOID) Indirizzo variabile.

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

Immagine F SysVfprintf

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, ST_SysVfprintf)
PROGRAM ST_SysVfprintf
VAR
    Pulse : BOOL; (* Pulse flag *)
    VisitorNr : USINT; (* Visitor number *)
    Fp : eFILEP; (* File pointer array *)
    TCPServer : SysTCPServer; (* TCP server *)
    i : INT; (* Auxiliary variable *)
END_VAR

// *****************************************************************************
// PROGRAM "SysVfprintf"
// *****************************************************************************
// 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:=30; //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:=SysVfprintf(Fp, ADR('Welcome, You are visitor Nr:%d$r$n'), USINT_TYPE, ADR(VisitorNr));

// [End of file]
Was this article helpful?