Questa funzione trasferisce in Str la stampa formattata di una variabile. Il valore stampato ritornato nella variabile stringa non può superare la lunghezza definita in Size, vedere anche funzione SysCVsnprintf.
La stringa Format specifica il formato con il quale stampare la variabile. Mentre in VarType è indicato il tipo di variabile ed in VarAdd il suo indirizzo.
Sostituisce “SysVarsnprintf”
Sostituisce la funzione SysVarsnprintf modificando il tipo di parametri in ingresso da stringa a puntatore a stringa. La precedente dichiarazione:
i:=SysVarsnprintf(ADR(StringOut), SIZEOF(StringOut), 'Welcome, You are visitor Nr:%d$r$n', USINT_TYPE, ADR(VisitorNr));
Diventa:
i:=SysVsnprintf(ADR(StringOut), SIZEOF(StringOut), ADR('Visitor Nr:%d$r$n'), USINT_TYPE, ADR(VisitorNr));
Descrizione
Str (@STRING) Pointer alla variabile stringa dove deve essere trasferito il risultato.
Size (UDINT) Numero di caratteri da trasferire nella variabile Str. Il numero definito è comprensivo del codice di fine stringa ”. Se la lunghezza della stringa in uscita supera il limite di Size byte, viene troncata al numero di byte indicato.
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 (Definizione).
VarType (VR_TYPE) Tipo variabile da stampare (Definizione).
VarAdd (PVOID) Indirizzo variabile.
La funzione ritorna una variabile (INT) che indica il numero di caratteri trasferiti in Str escluso il terminatore, equivale al risultato ottenuto da Sysstrlen(Str). Se la stampa formattata supera la dimensione definita in Size, viene troncata ed è ritornata la dimensione trasferita. eEOF se errore definizione parametri.

Esempi
Come utilizzare gli esempi.
Nell’esempio è attivato un server TCP sulla porta definita, e quando un client si connette viene inviato al client un messaggio di benvenuto con il numero di visitatori connessi e l’IP dal quale il client si connette.
LogicLab (Ptp116, ST_SysVsnprintf)
PROGRAM ST_SysVsnprintf
VAR
Pulse : BOOL; (* Pulse flag *)
VisitorNr : USINT; (* Visitor number *)
Fp : eFILEP; (* File pointer array *)
StringOut : STRING[ 128 ]; (* String output *)
NrOfChars : ARRAY[0..1] OF INT; (* Number of printed chars *)
TCPServer : SysTCPServer; (* TCP server *)
CInfos : SysGetPeerInfos; (* Client infos *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_SysVsnprintf"
// *****************************************************************************
// The program opens a TCP server on defined port, and when a client connects,
// it sends a welcome message to the client.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// First loop initializations.
IF (SysFirstLoop) THEN
TCPServer.FilesArr:=ADR(Fp); //Files array
TCPServer.LocalAdd:=ADR('0.0.0.0'); //Local address
TCPServer.LocalPort:=1060; //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 has been connected.
IF NOT(SysFIsOpen(Fp)) THEN Pulse:=FALSE; RETURN; END_IF;
IF (Pulse) THEN RETURN; END_IF;
Pulse:=TRUE; //Pulse flag
// Visitor count and IP check.
VisitorNr:=VisitorNr+1; //Visitor number
CInfos(File:=Fp); //Client infos
// Create welcome message.
NrOfChars[0]:=SysVsnprintf(ADR(StringOut), SIZEOF(StringOut), ADR('Welcome, You are visitor Nr:%d$r$n'), USINT_TYPE, ADR(VisitorNr));
NrOfChars[1]:=SysCVsnprintf(ADR(StringOut), SIZEOF(StringOut), ADR('Your IP:%s$r$n'), STRING_TYPE, CInfos.PeerIP);
// Send welcome message to client.
eTO_JUNK(Sysfwrite(ADR(StringOut), TO_INT(Sysstrlen(ADR(StringOut))), 1, Fp));
// [End of file]