Page 1 of 1
Deactivate Alarm in runtime
Posted: Fri Aug 23, 2013 4:11 am
by bjornidar
Hi,
is it possible by scripting to deactivate an alarm? So that it doesn't apper in the alarmviewer?
Re: Deactivate Alarm in runtime
Posted: Mon Aug 26, 2013 8:44 am
by mark.monroe
Have you tried:
Globals.AlarmServer.Default_AlarmItem0.IsEnabled = false;
Where AlarmItem0 is the name of the alarm you want to disable.
Re: Deactivate Alarm in runtime
Posted: Mon Aug 26, 2013 11:36 pm
by bjornidar
Hi, and thank you!
I will give it a try and loop through AlarmItems
Re: Deactivate Alarm in runtime
Posted: Tue Aug 27, 2013 11:51 pm
by bjornidar
Hi,
could you look throug my code? It doesn't seem to disable the alarm from the alarm-window. Should it be deactivated before the void AlarmServer fires?
I'm just using staic AlarmItem300 for testing.
It should be done inside the second while-loop.
Code:
Code: Select all
public partial class AlarmServer
{
SmsHandling sms = new SmsHandling(9600, 1);
// Alarm oppstår
void AlarmServer_AlarmActive(System.Object sender, System.EventArgs e)
{
// Deaktiverer alarm (til test.)
Globals.AlarmServer.Default_AlarmItem300.IsEnabled = false;
// Oppretter spørring for databasetilkobling
SqlConnection setupConnection = new SqlConnection("Data Source=(local)\\SQLEXPRESS;Initial Catalog=trysilfjellet_alarmer;Integrated Security=SSPI;");
// Oppretter SQL-spørring for telefonnummer
SqlCommand sqlTlf = new SqlCommand("SELECT * FROM alarminnstillinger ORDER BY id DESC", setupConnection);
// Åpner SQL-forbindelse mot alarminnstillinger
setupConnection.Open();
SqlDataReader tlfReader = sqlTlf.ExecuteReader();
// Variabler for telefonnummer
int dag = 0;
int natt = 0;
// DateTime-variabler for arbeidstid og klokkeslett nå
DateTime arbstart = DateTime.Now;
DateTime arbslutt = DateTime.Now;
DateTime naa = DateTime.Now;
// Henter telefonnummer og arbeidstid og legger de i lokale variabler
while(tlfReader.Read())
{
dag = (int)tlfReader["dagvakt"];
natt = (int)tlfReader["nattvakt"];
DateTime.TryParse(tlfReader["tid_arb_start"].ToString(), out arbstart);
DateTime.TryParse(tlfReader["tid_arb_slutt"].ToString(), out arbslutt);
}
// Lukker SQL-forbindelse mot alarminnstillinger
setupConnection.Close();
// Henter informasjon fra aktiv alarm
Neo.ApplicationFramework.Interfaces.IAlarmEvent alarmEvent = (Neo.ApplicationFramework.Interfaces.IAlarmEvent)sender;
string alarmText = alarmEvent.Text;
string alarmID = alarmEvent.AlarmItemDisplayName;
// Lager variabel for hvilket telefonnummer alarm skal sendes til
int nummer;
// Sjekk for tid på døgnet mot lagret arbeidstid
if ((naa.TimeOfDay > arbstart.TimeOfDay) && (naa.TimeOfDay < arbslutt.TimeOfDay))
{
nummer = dag;
}
else
{
nummer = natt;
}
// Oppretter spørring for databasetilkobling
SqlConnection alarmConnection = new SqlConnection("Data Source=(local)\\SQLEXPRESS;Initial Catalog=trysilfjellet_alarmer;Integrated Security=SSPI;");
// Oppretter SQL-spørring for alarmer
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM alarmer WHERE alarm_item = '" + alarmID + "'", alarmConnection);
// Åpner SQL-forbindelse mot alarmtabell
alarmConnection.Open();
// Lager SQL-reader som benyttes for å hente ut verdier fra SQL-base
SqlDataReader alarmReader = sqlCmd.ExecuteReader();
// Leser igjennom alarmdatabase og semder SMS dersom prioritet = 2
while (alarmReader.Read())
{
string alarmTekst = replceAlarmTekst(alarmReader["alarm_tekst"].ToString());
string aktiv = Convert.ToString(alarmReader["aktiv"]);
if(aktiv == "2")
{
sms.SendSms("0047" + nummer, "Alarm system: " + alarmReader["stasjon"] + "\n\rFeil: " + alarmTekst);
System.Threading.Thread.Sleep(5000);
}
}
// Lukker SQL-forbindelse mot alarmtabell
alarmConnection.Close();
}
// Erstatter æøå i alarmtekst
static string replceAlarmTekst(string p)
{
StringBuilder b = new StringBuilder(p);
b.Replace("æ", "ae");
b.Replace("ø", "o");
b.Replace("å", "aa");
b.Replace("Æ", "Ae");
b.Replace("Ø", "O");
b.Replace("Å", "AA");
return b.ToString();
}
}
Re: Deactivate Alarm in runtime
Posted: Wed Aug 28, 2013 8:14 am
by mark.monroe
When you disable the alarm, it will never go active. First try putting your
// Deaktiverer alarm (til test.)
Globals.AlarmServer.Default_AlarmItem300.IsEnabled = false;
code on a button and see if you can disable/enable the alarm.
I believe that if you disable the alarm on the alarm active event, the alarm will not fire the next time it is triggered. But since you are in the Alarm active event, it has already been activated, and you will get the alarm.
Re: Deactivate Alarm in runtime
Posted: Mon Sep 02, 2013 7:55 am
by bjornidar
Hi,
I've read the post's about looping through tags and how you can use a variable as a "AlarmItem"/ tag, but I can't figure out how to do it.
if(Convert.ToInt16(comboBox1.SelectedItem.ToString()) == 0)
{
Globals.AlarmServer.Default_globalalarmItem.IsEnabled = false;
}
where globalalarmItem contains "AlarmItemXX"
This gives me error; Can't find any definition for Default_globalalarmItem,...
Re: Deactivate Alarm in runtime
Posted: Fri Sep 06, 2013 8:28 am
by mark.monroe
Here is an example. Alarms have to be in a group, so their name is always prefaced with the name of the group they are in.
Code: Select all
namespace Neo.ApplicationFramework.Generated
{
using System.Windows.Forms;
using System;
using System.Drawing;
using Neo.ApplicationFramework.Tools;
using Neo.ApplicationFramework.Common.Graphics.Logic;
using Neo.ApplicationFramework.Controls;
using Neo.ApplicationFramework.Interfaces;
using Neo.ApplicationFramework.Tools.Alarm;
using Neo.ApplicationFramework.Tools.OpcClient;
using System.Reflection;
public partial class Screen1
{
void Button1_Click(System.Object sender, System.EventArgs e)
{
AlarmItem alm = StringToAlarm("Default_AlarmItem0");
alm.IsEnabled = false;
}
public static AlarmItem StringToAlarm(string almName)
{
string typeName = (new AlarmItem()).GetType().Name;
PropertyInfo[] props = Globals.AlarmServer.GetType().GetProperties();
foreach (PropertyInfo prop in props) {
if (prop.PropertyType.Name.Equals(typeName)) {
Globals.Tags.Tag2.Value = prop.Name;
if (prop.Name.Equals(almName, StringComparison.CurrentCultureIgnoreCase)) {
return (AlarmItem)prop.GetValue(Globals.AlarmServer, null);
}
}
}
return null;
}
}
}
- Snap 2013-09-06 at 08.26.52.jpg (53.9 KiB) Viewed 12486 times
Re: Deactivate Alarm in runtime
Posted: Wed Sep 18, 2013 12:21 am
by bjornidar
Thank you! Works like a charm!