readSymbol

[ Funktion ]

Version 1.8

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

Version 1.12

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

Liest einen oder mehrere Werte von einem TwinCAT HMI Server Symbol.

Version 1.12

Wird die API in TypeScript-Code benutzt, so kann dem TypeScript-Compiler mitgeteilt werden, welchen Typ das Server-Symbol hat. Ein späterer Zugriff auf readValue in der Callback-Funktion hat dann automatisch den richtigen Typ. 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.

readSymbol 1:

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 abgefragt.

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.

readSymbol 2:

Verfügbar ab Version 1.8

Beispiel - JavaScript

// Read single symbol
TcHmi.Server.readSymbol('PLC1.MAIN.bTest', 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 does not know the value type
});
// Read multiple symbols
TcHmi.Server.readSymbol(['PLC1.MAIN.bTest', 'PLC1.MAIN.iTest'], 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 does not know the value type

    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 does not know the value type
});

Beispiel - TypeScript

// Read single symbol with type annotation
TcHmi.Server.readSymbol<string>('PLC1.MAIN.bTest', 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
});