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; } }
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; } }
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"); } }
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)); } }
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(); } } }); }
void IExternalControl.ProvocationButtonResponse(ComplexButtons Button) { _IoMain.ProvocationButtonResponse(Button); }
bool IExternalControl.GetButtonState(ComplexButtons Button) { return(_IoMain.GetButtonState(Button)); }
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); }
public void PostSafetyEvent(bool Alarm, ComplexSafety SafetyType, ComplexButtons Button) { EnumerateClients(Client => Client.SafetyHandler(Alarm, SafetyType, Button)); }
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)); }
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(); } } } }); }