subscribe
[ Funktion ]
Version 1.8
public static subscribe(
commands: TcHmi.Server.ICommand[],
interval: number,
callback?: null | (
(data: TcHmi.Server.IResultObject) => void
)
): number | null;
Version 1.12
public static subscribe<R = any>(
commands: TcHmi.Server.ICommand[],
interval: number,
callback?: null | (
(data: TcHmi.Server.IResultObject<unknown, R>) => void
)
): number | null;
Meldet eine Subscription auf eine Liste von Kommandos an.
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.
Greift man auf mehrere Symbole mit unterschiedlichen Typen, so kann man den Typen händisch auf any setzen.
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 |
---|---|---|
commands | Ein Array von ICommand Objekten. | |
interval | Die Zeit nach der der TwinCAT HMI Server frühestens Änderungen überträgt. | |
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
var commands = [
{
'symbol': 'PLC1.MAIN.bTest'
},
{
'symbol': 'PLC1.MAIN.nTest'
}
];
TcHmi.Server.subscribe(commands, 500, 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;
}
for (var i = 0, ii = commands.length; i < ii; i++) {
var command = commands[i];
if (command === undefined) {
return;
}
if (command.error !== undefined) {
// Handle TwinCAT HMI Server command level error here.
return;
}
// Handle result...
TcHmi.Log.debugEx(command.symbol, ':', command.readValue);
}
});
Beispiel - TypeScript
// subscription with type annotation
var commands = [
{
'symbol': 'PLC1.MAIN.bTest'
},
{
'symbol': 'PLC1.MAIN.bTest2'
}
];
TcHmi.Server.subscribe<boolean>(commands, 500, 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;
}
for (var i = 0, ii = commands.length; i < ii; i++) {
var command = commands[i];
if (command === undefined) {
return;
}
if (command.error !== undefined) {
// Handle TwinCAT HMI Server command level error here.
return;
}
// Handle result...
TcHmi.Log.debugEx(command.symbol, ':', command.readValue); // TS knows this is a boolean
}
});