Triggers an action
Yess; 16.1.04

в Alarm Logging создал Analog Alarm на превышение уставок датчиков.

в одиночных сообщениях поставил triggers an action,
на них вызывается GmsgFunction.
эту функцию я переписал под необходимые действия.
Они все выполняются как нужно мне, но функция вызывается без конца
пока авария еще существует.
как сделать чтоб GmsgFunction выполнялась один раз ?

в принципе можно сделать чтоб функция вызывалась один раз,
создать переменную или тэг,
которая будет взводится при первом выполнение.
но как потом её сбросить когда аварию устранят?


я не силён в Си, подскажите какое-нибудь решение

можно ли получить через какую-либо функцию номер одиночного сообщения
которое вызвало GmsgFunction ?



Re: Triggers an action
Макс Прилепский, ОАО "ЗСМК"; 19.1.04

Можно в GMsgFunction анализировать сообщения только по состоянию "пришло"


функция GMsgFunction:

... разбор строки функцией sscanf и заполнение структуры mRT, имеющей тип MSG_RTDATA_STRUCT (код функции по умолчанию)...

if(mRT.dwMsgState==MSG_STATE_COME)
{
здесь выполняются необходимые действия
}

Тогда, при исчезновении сообщения из очереди сообщений никакие действия выполняться не будут. А номер сообщения, которое инициировало вызов функции находится в элементе dwMsgNr структуры mRT.

Например:

SetTagDWord("Current_Msg",mRT.dwMsgNr); //Номер сообщения записывается в тег<<br>