subscribeEx
[ Function ]
Version 1.10
public static subscribeEx(
commands: TcHmi.Server.ICommand[],
interval: number,
requestOptions: Server.IRequestOptions,
callback?: null | (
(data: TcHmi.Server.IResultObject) => void
)
): number | null;
Version 1.12
public static subscribeEx<R = any>(
commands: TcHmi.Server.ICommand[],
interval: number,
requestOptions: Server.IRequestOptions,
callback?: null | (
(data: TcHmi.Server.IResultObject<unknown, R>) => void
)
): number | null;
Registers a subscription on a list of commands.
![]() | Version 1.12 |
If the API is used in TypeScript code, the TypeScript compiler can be notified of the server symbol type. A subsequent access to readValue in the callback function then automatically has the correct type.
When accessing several symbols with different types, the type can be manually set to any.
![]() | This is a merely an auxiliary programming feature. The browser does not recognize this "type annotation". No check or conversion takes place at runtime. |
Parameter
Name | Type | Description |
---|---|---|
commands | An array of ICommand objects. | |
interval | The earliest time after which the TwinCAT HMI server transmits changes. | |
requestOptions | Options | |
callback [ optional ] | null, (data: TcHmi.Server.IResultObject) => void | Asynchronous callback function that is triggered when the operation was terminated. |
Return value
Type | Description |
---|---|
The request ID as number or null in the event of an error. |
![]() | Available from version 1.10 |
Sample - JavaScript
var commands = [
{
'symbol': 'PLC1.MAIN.bTest'
},
{
'symbol': 'PLC1.MAIN.nTest'
}
];
TcHmi.Server.subscribeEx(commands, 500, { 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;
}
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);
}
});
Sample - TypeScript
// subscription with type annotation
var commands = [
{
'symbol': 'PLC1.MAIN.bTest'
},
{
'symbol': 'PLC1.MAIN.bTest1'
}
];
TcHmi.Server.subscribeEx<boolean>(commands, 500, { 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;
}
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
}
});