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.
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 | 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 |
---|---|
Die Request-ID als number oder null im Falle eines Fehlers. |
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
});