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 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(); } } } }); }