03-15-2024, 01:23 PM
Если в теге больше одного сигнала, то функция WNApplicationTagHelper.getLastTagValue возвращает значение только того сигнала, у которого стоит галочка "Определяет значение тега".
Если в теге заполнено поле "Значение при выполнении условий", то функция WNApplicationTagHelper.getLastTagValue возвращает то, что заполнено в этом поле.
Если нужно получать значения всех сигналов, то нужно последовательно выполнить getLastTagValue, затем получить имена сигналов тега через WNModelingHelper.getSignals, затем для каждого сигнала получить значения WNConnectorHelper.getSignal.
Ниже пример функции, которая вернет и текущее состояние тега, и значение, и значения каждого сигнала тега.
Формат ответа функции thisGetLastTagValue следующий:
Hello World!:
- Сообщений не найдено.
Если в теге заполнено поле "Значение при выполнении условий", то функция WNApplicationTagHelper.getLastTagValue возвращает то, что заполнено в этом поле.
Если нужно получать значения всех сигналов, то нужно последовательно выполнить getLastTagValue, затем получить имена сигналов тега через WNModelingHelper.getSignals, затем для каждого сигнала получить значения WNConnectorHelper.getSignal.
Ниже пример функции, которая вернет и текущее состояние тега, и значение, и значения каждого сигнала тега.
Код:
thisGetLastTagValue( appid, pid, tid, startTime, endTime, timeout_mills, function ( result ){
console.log ( result );
});
function thisGetLastTagValue( appid, pid, tid, startTime, endTime, timeout_mills, callBackFunc){
var result = {};
result.data = [];
baseSdkUtils.service.WNApplicationTagHelper.getLastTagValue(appid, pid, tid, endTime, timeout_mills, function( data ){
if ( baseSdkUtils.isSuccess( data ) ){
var item = data.getElementsByTagName('item')[ 0 ];
var tag_status = baseSdkUtils.decode(item.getAttribute('success'));
var tag_value = baseSdkUtils.decode(item.getAttribute('value'));
result.tagStatus = tag_status;
result.tagValue = tag_value;
thisGetSignals( pid , tid, function ( signals ){
if ( baseSdkUtils.isSuccess( signals ) ){
var index = 0;
for ( var i = 0; i < signals.getElementsByTagName('item').length; i++ ){
var item = signals.getElementsByTagName('item')[ i ];
var asciiPartNumber = baseSdkUtils.decode(item.getAttribute('asciiPartNumber'));
thisGetLastSignal( pid, asciiPartNumber, timeout_mills, function( signals_value ){
index++;
result.data.push( signals_value );
if ( index == signals.getElementsByTagName('item').length ){
if ( callBackFunc ){
callBackFunc.call( this, result );
}
}
});
}
}
});
}
});
}
function thisGetSignals( pid, tid, callBackFunct){
baseSdkUtils.service.WNModelingHelper.getSignals(
pid,
tid,
function( data ){
if ( callBackFunct ){
callBackFunct.call( this, data);
}
});
}
function thisGetLastSignal( pid, ascii, timeout_mills, callBackFunct){
var result = {};
var nDate = new Date();
baseSdkUtils.service.WNFactory.getPersistable( pid , function( product_data ){
if ( baseSdkUtils.isSuccess( product_data ) ){
var item = product_data.getElementsByTagName('item')[ 0 ];
var ProductUUID = baseSdkUtils.decode(item.getAttribute('ProductUUID'));
baseSdkUtils.service.WNConnectorHelper.getSignal(
ProductUUID,
ascii,
true,
true,
'',
'',
1,
function( data ){
if ( baseSdkUtils.isSuccess( data ) ){
var item = data.getElementsByTagName('item')[ 0 ];
result.value = baseSdkUtils.decode(item.getAttribute('value'));
result.event_time = baseSdkUtils.decode(item.getAttribute('event_time'));
result.signal_id = item.getAttribute('signal_id');
var event_time_date = Date.parse( result.event_time );
var diff = nDate.getTime() - event_time_date;
if ( diff > timeout_mills){
result.value = undefined;
}
if ( callBackFunct ){
callBackFunct.call( this, result);
}
}
}
);
}
});
}Формат ответа функции thisGetLastTagValue следующий:
Код:
{
"data": [
{
"value": "35",
"event_time": "2024-03-15 16:21:53.000",
"signal_id": "A397"
},
{
"value": "29",
"event_time": "2024-03-15 16:21:53.000",
"signal_id": "A398"
}
],
"tagStatus": "true",
"tagValue": "2"
}Hello World!:
- Сообщений не найдено.

