SysVsnprintf, variabler Druck in Zeichenfolge

Liste

Diese Seite ist Teil der IEC 61131-3 Programmierhandbuch. Gehen Sie zum Index.

Diese Funktion wechselt zu Str formatierter Ausdruck einer Variablen. Der in der Zeichenfolgenvariablen zurückgegebene Druckwert darf die in definierte Länge nicht überschreiten Sizesiehe auch Funktion SysCVsnprintf.

Die Zeichenfolge Format Gibt das Format an, mit dem die Variable gedruckt werden soll. Während in VarType Der Variablentyp wird in und angegeben VarAdd seine Adresse.

Ersetzt "SysVarsnprintf"

Ersetzt die Funktion SysVarsnprintf Ändern des Typs der Eingabeparameter von Zeichenfolge zu Zeiger zu Zeichenfolge. Die vorherige Aussage:

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

Wird:

i:=SysVsnprintf(ADR(StringOut), SIZEOF(StringOut), ADR('Visitor Nr:%d$r$n'), USINT_TYPE, ADR(VisitorNr));
Informationskreis

Funktion

CODESYS: nicht verfügbar

LogikLab: eLLabXUnified12Lib

Beschreibung

Str (@STRING) Zeiger auf die String-Variable, an die das Ergebnis übergeben werden soll.
Size (UDINT) Anzahl der an die Variable zu übertragenden Zeichen Str. Die definierte Nummer enthält den Code am Ende der Zeichenfolge ". Wenn die Länge der ausgehenden Zeichenfolge das Limit von überschreitet Size Byte wird auf die angegebene Anzahl von Bytes gekürzt.
Format (@STRING) Es hat zwei Arten von Argumenten, die normalen Zeichen, die in den Ausgabestrom kopiert werden, und die Konvertierungsspezifikationen, die durch das Prozentzeichen (%) und durch ein Zeichen unterschieden werden, das das Format angibt, in dem die definierte Variable gedruckt werden soll (Definition).
VarType (VR_TYPE) Zu druckender Variablentyp (Definition).
VarAdd (PVOID) Variable Adresse.

Die Funktion gibt eine Variable zurück (INT), der die Anzahl der übertragenen Zeichen angibt Str Ohne den Terminator entspricht es dem Ergebnis von Sysstrlen(Str). Wenn der formatierte Ausdruck die in definierte Größe überschreitet Size, wird abgeschnitten und die übertragene Größe zurückgegeben. eEOF wenn Parameterdefinitionsfehler.

Bild F SysVsnprintf

Beispiele

Verwendung der Beispiele.
Im Beispiel wird ein TCP-Server auf Port 1000 aktiviert, und wenn sich ein Client verbindet, wird eine Willkommensnachricht an den Client mit der Anzahl der verbundenen Besucher und der IP gesendet, von der aus sich der Client verbindet.

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]
War dieser Artikel hilfreich?