Hello good sirs. I'm currently working on a project where I'm simulating a patientmonitor. Im using background worker to update the values every second. I got a treshhold on the values receives, so lets say that pulse = 140, its > 120, so it sends an alarm message to the sentral. All this works, but the problem is that i keep on sending "alarm on" messages. How can i fix, so that if the value stays the same, it only sends one message?

Some of the code:

private int _pulse

public int Pulse { get { return _pulse; } set { _pulse = value; } }

public void Alarm()
{
    MinMaxPulse= ("0-120");
    string[] splittp = MinMaxPulse.Split('-');
    int minpulse = Int32.Parse(splittp[0]);
    int maxpulse = Int32.Parse(splittp[1]);
    if (_pulse > maxpulse || _pulse < minpulse)
            {
                alarmPulse = true;
                alarmPActive = true; 
                SendAlarmOnToSentral(Alarm.PULSE);

            }
            else
            {
                alarmPuls = false;
                if (alarmPActive == true && alarmPulse == false)
                {
                    SendAlarmStopToSentral(Alarm.PULSE);
                    alarmPactiv = false;
                }

            }

}

Regards, asotop

Edited 3 Years Ago by Asotop: Fixed

Add a boolean that is set to true once the alarm is triggered, and adjust the alarm if-statements accordingly to only run when it is false?

Once the value falls back into the threshold it can be reset ready for the next time?

Edited 3 Years Ago by Mike Askew

Don't know if it is of any imortance but on line 20 you have alarmPuls instead of what it should be alarmPulse

Just a typo, the code works. But I didnt manage to fix it with your answer Mikey.

The problem is that, as long as the value keeps updating, it keeps sending a message. We're using a simulator which the teacher provided, and updating it with backgroundworker. I just want 1 message if the alarm went on.

Edited 3 Years Ago by Asotop

Hey Mikey, this was the solution. Added a counter :

private int p_counter = 0;
if (_pulse > maxpulse || _pulse < minpulse)
{
                alarmPulse = true;
                alarmPActive = true;
                if(p_counter < 1)
                {
                    SendAlarmToSentral(Alarm.PULSE);
                    p_counter++;
                }

}
            else
            {
                alarmPulse = false;
                if (alarmPActive == true && alarmPulse == false)
                {
                    SendAlarmStopToSentral(Alarm.PULSE);
                    alarmPActive = false;
                    p_counter = 0;
                }    
            }
This question has already been answered. Start a new discussion instead.