Exemple #1
0
 internal void ProvocationButtonResponse(ComplexButtons Button)
 {
     //провоцируем срабатывание кнопки Button
     switch (Button)
     {
     //требуется провоцировать срабатывание только кнопки "Стоп" и только ради случая SCTU из-за подключения её системы безопасности как аппаратной кнопки "Стоп"
     case (ComplexButtons.ButtonStop):
         bool nButton4 = ReadRegister(REG_SENSOR4, true) != 0;
         FireButtonEvent(ComplexButtons.ButtonStop, nButton4);
         SystemHost.Journal.AppendLog(ComplexParts.Gateway, LogMessageType.Info, "Provocation button 'Stop' response");
         break;
     }
 }
Exemple #2
0
        private void FireSafetyEvent(bool Alarm, ComplexButtons Button)
        {
            //уведомляем UI о наступлении события срабатывания механической шторки или SCTU шторки
            switch (m_SafetyType)
            {
            case (ComplexSafety.Mechanical):
                SystemHost.Journal.AppendLog(ComplexParts.Commutation, LogMessageType.Info, string.Format("Mechanical safety system alarm={0}. Button {1}", Alarm, Button));
                m_Communication.PostSafetyEvent(Alarm, ComplexSafety.Mechanical, Button);
                break;

            case (ComplexSafety.AsButtonStop):
                SystemHost.Journal.AppendLog(ComplexParts.Commutation, LogMessageType.Info, string.Format("AsButtonStop safety system alarm={0}. Button {1}", Alarm, Button));
                m_Communication.PostSafetyEvent(Alarm, ComplexSafety.AsButtonStop, Button);
                break;
            }
        }
Exemple #3
0
        internal bool GetButtonState(ComplexButtons Button)
        {
            switch (Button)
            {
            case ComplexButtons.ButtonSC1:
                return(m_IsGatewayEmulation || Sensor1);

            case ComplexButtons.ButtonSC2:
                return(m_IsGatewayEmulation || Sensor2);

            case ComplexButtons.ButtonStart:
                return(!m_IsGatewayEmulation && Sensor3);

            case ComplexButtons.ButtonStop:
                return(!m_IsGatewayEmulation && Sensor4);

            default:
                throw new ArgumentOutOfRangeException("Button");
            }
        }
Exemple #4
0
        internal bool GetButtonState(ComplexButtons Button)
        {
            switch (Button)
            {
            //true  - зажим стоит в рабочем положении
            //false - зажим выдвинут из рабочего положения
            case ComplexButtons.ClampSlidingSensor:
                if (m_IsClampingEmulation)
                {
                    return(true);
                }
                else
                {
                    return(ReadRegister(REG_SLIDING_SENSOR) != 0);
                }

            default:
                string mess = String.Format("Realization does not know Button={0}.", Button.ToString());
                throw new Exception(string.Format("{0}.{1}.{2}", GetType().Name, MethodBase.GetCurrentMethod().Name, mess));
            }
        }
Exemple #5
0
        public void AddButtonPressedEvent(ComplexButtons Button, bool State)
        {
            m_ActionQueue.Enqueue(delegate
            {
                if (State && (Button == ComplexButtons.ButtonStartFTDI || Button == ComplexButtons.ButtonStart))
                {
                    if (Equals(Cache.Main.mainFrame.Content, Cache.UserTest))
                    {
                        Cache.UserTest.StartFirst();
                    }
                    else if (Equals(Cache.Main.mainFrame.Content, Cache.Gate))
                    {
                        Cache.Gate.Start();
                    }
                    else if (Equals(Cache.Main.mainFrame.Content, Cache.SL))
                    {
                        Cache.SL.Start();
                    }
                    else if (Equals(Cache.Main.mainFrame.Content, Cache.Bvt))
                    {
                        Cache.Bvt.Start();
                    }
                }

                if (State && (Button == ComplexButtons.ButtonStopFTDI || Button == ComplexButtons.ButtonStop))
                {
                    Cache.Net.StopByButtonStop();
                }

                if (Button == ComplexButtons.ButtonSC1)
                {
                    Cache.Main.IsSafetyBreakIconVisible = !State;

                    if (!State)
                    {
                        Cache.Net.Stop();
                    }
                }
            });
        }
Exemple #6
0
 void IExternalControl.ProvocationButtonResponse(ComplexButtons Button)
 {
     _IoMain.ProvocationButtonResponse(Button);
 }
Exemple #7
0
 bool IExternalControl.GetButtonState(ComplexButtons Button)
 {
     return(_IoMain.GetButtonState(Button));
 }
Exemple #8
0
 private void FireButtonEvent(ComplexButtons Button, bool State)
 {
     SystemHost.Journal.AppendLog(ComplexParts.Gateway, LogMessageType.Info, string.Format("Gateway button {0}, state {1}", Button, State));
     m_Communication.PostButtonPressedEvent(Button, State);
 }
Exemple #9
0
 public void PostSafetyEvent(bool Alarm, ComplexSafety SafetyType, ComplexButtons Button)
 {
     EnumerateClients(Client => Client.SafetyHandler(Alarm, SafetyType, Button));
 }
Exemple #10
0
 public void PostButtonPressedEvent(ComplexButtons Button, bool State)
 {
     EnumerateClients(Client => Client.GatewayButtonPressHandler(Button, State));
 }
 public void ProvocationButtonResponse(ComplexButtons Button)
 {
     Channel.ProvocationButtonResponse(Button);
 }
 public bool GetButtonState(ComplexButtons Button)
 {
     return(Channel.GetButtonState(Button));
 }
Exemple #13
0
        public void AddSafetyHandlerEvent(bool Alarm, ComplexSafety SafetyType, ComplexButtons Button)
        {
            m_ActionQueue.Enqueue(delegate
            {
                //максимально быстро реагируем на возникший Safety Alarm
                if (Alarm)
                {
                    Cache.Net.Stop();
                }

                //показываем или прячем иконку состояния системы Safety
                Cache.Main.IsSafetyBreakIconVisible = Alarm;

                if (Alarm)
                {
                    //вывешиваем пользователю форму с сообщением о сработавшей системе безопасности
                    string Message;

                    //определяемся с тем, какая система безопасности сработала чтобы выдать пользователю вразумительное сообщение
                    switch (SafetyType)
                    {
                    case ComplexSafety.Optical:
                        //принятый параметр Button для случая оптической шторки не имеет никакого значения
                        Message = Resources.SafetyOpticalAlarm;
                        break;

                    case ComplexSafety.Mechanical:
                        //дописываем какой датчик сработал
                        Message = Resources.CloseSafetyHood + " (" + Button.ToString() + ").";
                        break;

                    default:
                        Message = "Unknown safety system is in alarm, realization fault.";
                        break;
                    }

                    var dw = new DialogWindow(Resources.Information, Message);

                    dw.ButtonConfig(DialogWindow.EbConfig.OK);
                    dw.ShowDialog();

                    if (dw.DialogResult ?? false)
                    {
                        //пользователь нажал в появившемся диалоговом окне кнопку OK
                        //сбрасываем состояние SafetyTrig. справедливо и для оптической и механической шторки. только после этого можно разжимать пресс
                        Cache.Net.ClearSafetyTrig();

                        //разжимаем зажимное устройство
                        Cache.Clamp.IsRunning = false;
                        Cache.Clamp.Unclamp();

                        //прячем иконку Safety
                        Cache.Main.IsSafetyBreakIconVisible = false;

                        //строим строку с именами устройств, которые не готовы к очередному измерению
                        string NotReadyDevicesToStart        = Cache.Net.NotReadyDevicesToStart();
                        string NotReadyDevicesToStartDynamic = Cache.Net.NotReadyDevicesToStartDynamic();

                        if (NotReadyDevicesToStartDynamic != "")
                        {
                            if (NotReadyDevicesToStart != "")
                            {
                                NotReadyDevicesToStart = NotReadyDevicesToStart + ", ";
                            }

                            NotReadyDevicesToStart = NotReadyDevicesToStart + NotReadyDevicesToStartDynamic;
                        }

                        //проверяем есть ли блоки, которые не готовы к проведению очередного измерения
                        if (NotReadyDevicesToStart != "")
                        {
                            //ругаемся, т.к. есть блоки, которые не готовы выполнить очередное измерение
                            //вывешиваем пользователю форму с сообщением о не готовых к очередному измерению блоках
                            dw = new DialogWindow(Resources.Information, "Блоки: " + NotReadyDevicesToStart + " не готовы для проведения измерений.");

                            dw.ButtonConfig(DialogWindow.EbConfig.OK);
                            dw.ShowDialog();
                        }
                    }
                }
            });
        }