writeSymbolEx

[ Funktion ]

Version 1.10

public static writeSymbolEx(
    symbolName: string | string[],
    value: any | any[],
    requestOptions: Server.IRequestOptions,
    callback?: null | (
        (data: TcHmi.Server.IResultObject) => void
    ) = null
): number | null;

Version 1.12

public static writeSymbolEx<W = any, R = W>(
    symbolName: string | string[],
    value: W | W[],
    requestOptions: Server.IRequestOptions<W, R>,
    callback?: null | (
        (data: TcHmi.Server.IResultObject) => void
    ) = null
): number | null;

Schreibt Werte auf ein oder mehrere TwinCAT HMI Server Symbole. Sollen mehrere Symbole geschrieben werden, so müssen die gewünschten Symbolnamen als Array übergeben werden und der Werte-Parameter als Array die exakt gleiche Größe erhalten.

writeSymbolEx 1:

Version 1.12

Wird die API in TypeScript-Code benutzt, so erkennt der TypeScript-Compiler, welchen Typ das Server-Symbol hat. Ein späterer Zugriff auf readValue in der Callback-Funktion hat dann automatisch den richtigen Typ.

Dies kann jedoch auch überschrieben werden. Hierbei wird zuerst der Typ des Wertes beim Schreiben (Write) angegeben und danach optional der Typ des zu lesenden Wertes (Read).

Beim Zugriff auf mehrere Symbole mit unterschiedlichen Typen, kann der Typ händisch auf any gesetzt werden.

writeSymbolEx 2:

Dies ist eine reine Hilfe für die Programmierung. Der Browser kennt diese „Typeannotation“ nicht. Es findet keine Prüfung oder Konvertierung zur Laufzeit statt.

Parameter

Name

Typ

Beschreibung

symbolName

string, string[]

Der Name eines TwinCAT HMI Server Symbols. Wird ein String-Array übergeben, so werden mehrere Symbole gleichzeitig geschrieben.

value

string, number, boolean, Object, Array

Der zu schreibende Wert oder ein Array der zu schreibenden Werte.

requestOptions

Server.IRequestOptions

Optionen

callback [ Optional ]

null, (data: TcHmi.Server.IResultObject) => void

Asynchrone Callback Funktion, die ausgelöst wird, wenn die Operation beendet wurde.

Rückgabewert

Typ

Beschreibung

number, null

Die Request-ID als number oder null im Falle eines Fehlers.

writeSymbolEx 3:

Verfügbar ab Version 1.10

Beispiel - JavaScript

// Write single symbol
TcHmi.Server.writeSymbolEx('PLC1.MAIN.bTest', true, { timeout: 2000 }, function(data){
    if(data.error !== TcHmi.Errors.NONE){
        // Handle TcHmi.Server class level error here.
        return;
    }
    var response = data.response;
    if (!response || response.error !== undefined) {
        // Handle TwinCAT HMI Server response level error here.
        return;
    }
    var commands = response.commands;
    if(commands === undefined){
        return;
    }
    var command = commands[0];
    if(command === undefined){
        return;
    }
    if(command.error !== undefined){
        // Handle TwinCAT HMI Server command level error here.
        return;
    }
    // Handle result...
    TcHmi.Log.debugEx('PLC1.MAIN.bTest:', command.readValue); // Editor knows this will be a boolean
});
// Write multiple symbols (since version 1.8.714.0)
TcHmi.Server.writeSymbolEx(['PLC1.MAIN.bTest', 'PLC1.MAIN.iTest'], [true, 1], { timeout: 2000 }, function(data){
    if(data.error !== TcHmi.Errors.NONE){
        // Handle TcHmi.Server class level error here.
        return;
    }
    var response = data.response;
    if (!response || response.error !== undefined) {
        // Handle TwinCAT HMI Server response level error here.
        return;
    }
    var commands = response.commands;
    if(commands === undefined){
        return;
    }
    var command = commands[0];
    if(command === undefined){
        return;
    }
    if(command.error !== undefined){
        // Handle TwinCAT HMI Server command level error here.
        return;
    }
    // Handle result...
    TcHmi.Log.debugEx('PLC1.MAIN.bTest:', command.readValue); // Editor thinks this will be a boolean or number

    var command1 = commands[1];
    if(command1 === undefined){
        return;
    }
    if(command1.error !== undefined){
        // Handle TwinCAT HMI Server command level error here.
        return;
    }
    // Handle result...
    TcHmi.Log.debugEx('PLC1.MAIN.iTest:', command1.readValue); // Editor thinks this will be a boolean or number
});

Beispiel 1 - TypeScript

// Write symbol with different write and read value types
TcHmi.Server.writeSymbolEx<boolean, string>('PLC1.MAIN.bTest', true, { timeout: 2000 }, function(data){
    if(data.error !== TcHmi.Errors.NONE){
        // Handle TcHmi.Server class level error here.
        return;
    }
    var response = data.response;
    if (!response || response.error !== undefined) {
        // Handle TwinCAT HMI Server response level error here.
        return;
    }
    var commands = response.commands;
    if(commands === undefined){
        return;
    }
    var command = commands[0];
    if(command === undefined){
        return;
    }
    if(command.error !== undefined){
        // Handle TwinCAT HMI Server command level error here.
        return;
    }
    // Handle result...
    TcHmi.Log.debugEx('PLC1.MAIN.bTest:', command.readValue); // Editor knows this is a string
});