SysVsnprintf, imprimare variabilă la șir

Listă

Această pagină face parte din Manual de programare IEC 61131-3. Mergeți la index.

Această funcție se transferă la Str imprimarea formatată a unei variabile. Valoarea tipărită returnată în variabila șir nu poate depăși lungimea definită în Size, a se vedea, de asemenea, funcția SysCVsnprintf.

Șirul Format specifică formatul cu care să imprimați variabila. În timp ce intra VarType tipul variabilei este indicat în și VarAdd adresa lui.

Înlocuiește „SysVarsnprintf”

Înlocuiește funcția SysVarsnprintf schimbarea tipului de parametri de intrare de la string la pointer la string. Declarația anterioară:

i:=SysVarsnprintf(ADR(StringOut), SIZEOF(StringOut), 'Welcome, You are visitor Nr:%d$r$n', USINT_TYPE, ADR(VisitorNr));

devine:

i:=SysVsnprintf(ADR(StringOut), SIZEOF(StringOut), ADR('Visitor Nr:%d$r$n'), USINT_TYPE, ADR(VisitorNr));
Cercul de informații

funzione

CODESYS: Indisponibil

LogicLab: eLLabXUnified12Lib

Descriere

Str (@STRING) Indicatorul către variabila șir în care urmează să fie transferat rezultatul.
Size (UDINT) Numărul de caractere de transferat variabilei Str. Numărul definit include codul de la sfârșitul șirului”. Dacă lungimea șirului de ieșire depășește limita de Size byte, este trunchiat la numărul specificat de octeți.
Format (@STRING) Are două tipuri de argumente, caracterele obișnuite care sunt copiate în fluxul de ieșire și specificațiile de conversie, care se disting prin simbolul procentual (%) și printr-un caracter care specifică formatul în care se imprimă variabila definită (definiție).
VarType (VR_TYPE) Tip variabil de tipărit (definiție).
VarAdd (PVOID) Adresă variabilă.

Funcția returnează o variabilă (INT) care indică numărul de caractere transferate în Str excluzând terminatorul, este echivalent cu rezultatul obținut de Sysstrlen(Str). Dacă imprimarea formatată depășește dimensiunea definită în Size, este trunchiat și dimensiunea transferată este returnată. eEOF dacă eroare de definire a parametrilor.

Imagine F SysVsnprintf

Exemple

Cum se utilizează exemplele.
În exemplu, un server TCP este activat pe portul 1000, iar atunci când un client se conectează, i se trimite clientului un mesaj de bun venit cu numărul de vizitatori conectați și IP-ul de la care se conectează clientul.

LogicLab (Ptp116, ST_SysVsnprintf)
PROGRAM ST_SysVsnprintf
VAR
    Pulse : BOOL; (* Pulse flag *)
    VisitorNr : USINT; (* Visitor number *)
    NrOfChars : ARRAY[0..1] OF INT; (* Number of printed chars *)
    StringOut : ARRAY[0..127] OF USINT; (* String output *)
    Fp : eFILEP; (* File pointer array *)
    TCPServer : SysTCPServer; (* TCP server *)
    CInfos : SysGetPeerInfos; (* Client infos *)
    i : INT; (* Auxiliary variable *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysVsnprintf"
// *****************************************************************************
// Opens a TCP server on port 1000 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:=1000; //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

    // Visitor count and IP check.

    VisitorNr:=VisitorNr+1; //Visitor number
    CInfos(File:=Fp); //Client infos

    // Create welcome string.

    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 string to client.

    i:=Sysfwrite(ADR(StringOut), TO_INT(Sysstrlen(ADR(StringOut))), 1, Fp); 

// [End of file]
A fost util acest articol?