2.9.1  Odczyt stanu alarmów aktywnych

 

Dostęp do aktualnego stanu systemu alarmów zapewnia grupa metod interfejsu IApplication. Podstawowe funkcje to: GetActiveAlarms zwracająca kolekcję identyfikatorów alarmów znajdujących się aktualnie w logu alarmów aktywnych, GetDefinedAlarms pozwalająca na dostęp do wszystkich zdefiniowanych alarmów, oraz GetAlarm zwracająca referencją do interfejsu IAlarm. Właściwości i metody tego interfejsu pozwalają na odczyt wszystkich danych dotyczących konkretnego alarmu – jego definicji i aktualnego stanu.

Przedstawiony przykład pokazuje sposób stworzenia prostego raportu, w którym zapisywane są podstawowe informacje o wszystkich alarmach aktywnych w momencie wykonania skryptu.

Skrypt wymaga podania dwóch parametrów: nazwy domeny i nazwy pliku wynikowego.

C#

using System;

using System.IO;

using System.Windows.Forms;

using Askom.AsixEvo.Scripting;

 

public class AlarmReport : IScript

{

    public bool Initialize(string[] aParameters, IApplication aApplication)

    {

        try

        {

            StreamWriter sw = new StreamWriter

                                      (aParameters[1], false, System.Text.Encoding.UTF8);

            foreach (string aid in aApplication.GetActiveAlarms(aParameters[0]))

            {

                IAlarm alarm = aApplication.GetAlarm(aid);

                if (alarm.AlarmState.IsActive && !alarm.AlarmState.IsFinished)

                {

                    String desc = String.Format

                        ("{0:dd-MM-yyyy hh:mm:ss.fff} {1,10} {2,-40} {3}",

                        alarm.AlarmState.BeginTimeStamp, alarm.Id,

                        alarm.AlarmState.FormattedBeginText, alarm.AlarmState.BeginExprValue);

                    sw.WriteLine(desc);

                }

            }

            sw.Close();

        }

        catch (Exception)

        {

        }

 

        return true;

    }

 

    public void FinalizeScript()

    {

    }

}

 

VB

Imports System

Imports System.IO

Imports System.Windows.Forms

Imports Askom.AsixEvo.Scripting

 

Public Class AlarmReportVB

    Implements IScript

 

    Public Function Initialize(ByVal aParameters() As StringByVal aApplication _       

                                    As IApplication) As Boolean Implements IScript.Initialize

 

        Try

            Dim sw As StreamWriter = New StreamWriter _

                                         (aParameters(1), False, System.Text.Encoding.UTF8)

            For Each aid As String In aApplication.GetActiveAlarms(aParameters(0))

 

                Dim alarm As IAlarm = aApplication.GetAlarm(aid)

                If alarm.AlarmState.IsActive And Not alarm.AlarmState.IsFinished Then

 

                    Dim desc As String = String.Format _

                        ("{0:dd-MM-yyyy hh:mm:ss.fff} {1,10} {2,-40} {3}", _

                        alarm.AlarmState.BeginTimeStamp, alarm.Id, _

                        alarm.AlarmState.FormattedBeginText, alarm.AlarmState.BeginExprValue)

                    sw.WriteLine(desc)

 

                End If

 

            Next aid

            sw.Close()

        Catch a As Exception

        End Try

 

        Return True

    End Function

 

    Public Sub FinalizeScript() Implements IScript.FinalizeScript

 

    End Sub

 

End Class  

 

Funkcja GetActiveAlarms  zwraca kolekcję identyfikatorów wszystkich alarmów z wybranej domeny, które znajdują się w danym momencie w logu alarmów aktywnych. Następnie dla każdego z tych alarmów, funkcją GetAlarm pobierana jest referencja do obiektu IAlarm. Poprzez tę referencję pobierane są wszystkie dane o alarmie. W instrukcji if sprawdzane jest, czy alarm jest aktywny. Test AlarmState.IsActive sprawdza, czy alarm jest w logu alarmów aktywnych. Druga część testu  używa właściwości AlarmState.IsFinished w celu określenia, czy alarm nie jest już zakończony – w logu alarmów aktywnych mogą być przez pewien czas przechowywane dane o alarmie niedawno zakończonym. Po stwierdzeniu, że alarm jest na pewno aktywny, wybrane informacje o alarmie są zapisywane do pliku.