public DeviceExecutableCommandViewModel(GKDevice device, GKStateBit stateType)
		{
			ExecuteControlCommand = new RelayCommand(OnExecuteControl);
			Device = device;
			StateBit = stateType;
			Name = ((GKStateBit)stateType).ToDescription();
			if (Device.DriverType == GKDriverType.RSR2_Valve_DU || Device.DriverType == GKDriverType.RSR2_Valve_KV || Device.DriverType == GKDriverType.RSR2_Valve_KVMV)
			{
				switch (stateType)
				{
					case GKStateBit.TurnOn_InManual:
						Name = "Открыть";
						break;
					case GKStateBit.TurnOnNow_InManual:
						Name = "Открыть немедленно";
						break;
					case GKStateBit.TurnOff_InManual:
						Name = "Закрыть";
						break;
					case GKStateBit.Stop_InManual:
						Name = "Остановить";
						break;
				}
			}
		}
Exemplo n.º 2
0
		/* RG-890 (Включение табличек "Не входи", "Уходи", и "Сирена", если МПТ включается без задержки на включение)*/
		public void TestMptBoardsOnWhenMptTurnOnWithoutDelay(GKStateBit mode, int delay)
		{
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_RM_1);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_RM_1);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_RM_1);
			var mpt = new GKMPT {Name = "МПТ", No = 1, Delay = delay};
			var clause = new GKClause
			{
				ClauseOperationType = ClauseOperationType.AllDevices,
				StateType = GKStateBit.Failure,
				DeviceUIDs = { kauDevice11.UID }
			};
			mpt.MptLogic.OnClausesGroup.Clauses.Add(clause);
			mpt.MPTDevices.Add(new GKMPTDevice { MPTDeviceType = GKMPTDeviceType.DoNotEnterBoard, DeviceUID = device1.UID });
			mpt.MPTDevices.Add(new GKMPTDevice { MPTDeviceType = GKMPTDeviceType.ExitBoard, DeviceUID = device2.UID });
			mpt.MPTDevices.Add(new GKMPTDevice { MPTDeviceType = GKMPTDeviceType.Speaker, DeviceUID = device3.UID });
			GKManager.AddMPT(mpt);
			SetConfigAndRestartImitator();

			WaitWhileState(mpt, XStateClass.Off, 10000, "Ждем Норму в МПТ");
			Assert.IsTrue(mpt.State.StateClass == XStateClass.Off, "Проверка того, что МПТ Выключен");
			ConrtolGKBase(mpt, mode, "Включаем МПТ");
			WaitWhileState(mpt, XStateClass.On, 3000, "Ждем Включено в МПТ");
			Assert.IsTrue(mpt.State.StateClass == XStateClass.On, "Проверка того, что МПТ Включен");
			Assert.IsTrue(device1.State.StateClass == XStateClass.On, "Проверка того, что Табличка Не Входи Включена");
			Assert.IsTrue(device2.State.StateClass == XStateClass.On, "Проверка того, что Табличка Уходи Включена");
			Assert.IsTrue(device3.State.StateClass == XStateClass.On, "Проверка того, что Сирена Включена");
			CheckJournal(5, JournalItem(mpt, JournalEventNameType.Включено), JournalItem(device1, JournalEventNameType.Включено),
				JournalItem(device2, JournalEventNameType.Включено), JournalItem(device3, JournalEventNameType.Включено),
				JournalItem(Led("Устройство Включение ПУСК "), JournalEventNameType.Включено));
		}
Exemplo n.º 3
0
		void SetRegime(GKMPTDeviceType deviceType, GKStateBit stateBit)
		{
			var count = 0;
			foreach (var mptDevice in MPT.MPTDevices.Where(x => x.MPTDeviceType == deviceType && x.Device != null))
			{
				if (mptDevice.Device.Driver.IsCardReaderOrCodeReader)
				{
					if (mptDevice.CodeReaderSettings.MPTSettings.CanBeUsed)
					{
						FormulaHelper.AddCodeReaderLogic(Formula, mptDevice.CodeReaderSettings.MPTSettings, mptDevice.Device);
						if (count > 0)
							Formula.Add(FormulaOperationType.OR);
						count++;
					}
				}
				else
				{
					Formula.AddGetBit(GKStateBit.Fire1, mptDevice.Device);
					if (count > 0)
						Formula.Add(FormulaOperationType.OR);
					count++;
				}
			}
			if (count > 0)
			{
				Formula.Add(FormulaOperationType.BR, 1, 3);
				Formula.Add(FormulaOperationType.CONST, 0, 1);
				Formula.AddPutBit(stateBit, MPT);
				Formula.Add(FormulaOperationType.EXIT);
			}
		}
		public void ControlGKDevice(Guid clientUID, Guid deviceUid, GKStateBit command)
		{
			SafeOperationCall(() =>
			{
				var rubezhService = RubezhServiceFactory.Create(TimeSpan.FromMinutes(10));
				using (rubezhService as IDisposable)
					rubezhService.ControlGKDevice(clientUID, deviceUid, command);
			}, "ControlGKDevice");
		}
Exemplo n.º 5
0
		public bool GetStateBit(GKStateBit stateBit)
		{
			var stateBitViewModel = StateBits.FirstOrDefault(x => x.StateBit == stateBit);
			if (stateBitViewModel != null)
			{
				return stateBitViewModel.IsActive;
			}
			return false;
		}
Exemplo n.º 6
0
		public JsonResult OnExecuteCommand(GKStateBit commandName, Guid UID)
		{
			var device = GKManager.Devices.FirstOrDefault(dev => dev.UID == UID);
			if (device != null)
			{
				ClientManager.RubezhService.GKExecuteDeviceCommand(device, commandName, ClientManager.CurrentUser.Name);
			}
			return new JsonResult();
		}
Exemplo n.º 7
0
		public OperationResult<bool> ConrtolGKBase(Guid uid, GKStateBit command, bool isPim)
		{
			DescriptorViewModel descriptor;
			if (isPim)
				descriptor = MainViewModel.Current.Descriptors.FirstOrDefault(x => (x.GKBase is GKPim) && (x.GKBase as GKPim).DeviceUid == uid);
			else
				descriptor = MainViewModel.Current.Descriptors.FirstOrDefault(x => x.GKBase.UID == uid);
			if (descriptor == null)
				return OperationResult<bool>.FromError("Не найден элемент " + uid + " в конфигурации");
			if (!ValidateCommand(descriptor, command))
				return OperationResult<bool>.FromError("Команда " + command.ToDescription() + " для типа " + descriptor.GKBase.GetType() + " запрещена");
			switch (command)
			{
				case GKStateBit.Fire1:
					descriptor.SetFire1Command.Execute();
					break;
				case GKStateBit.Fire2:
					descriptor.SetFire2Command.Execute();
					break;
				case GKStateBit.Reset:
					descriptor.ResetFireCommand.Execute();
					break;
				case GKStateBit.TurnOn_InAutomatic:
					descriptor.TurnOnCommand.Execute();
					break;
				case GKStateBit.TurnOnNow_InAutomatic:
					descriptor.TurnOnNowCommand.Execute();
					break;
				case GKStateBit.TurnOff_InAutomatic:
					descriptor.TurnOffCommand.Execute();
					break;
				case GKStateBit.TurnOffNow_InAutomatic:
					descriptor.TurnOffNowCommand.Execute();
					break;
				case GKStateBit.SetRegime_Manual:
					descriptor.TurnOffCommand.Execute();
					break;
				case GKStateBit.TurnOn_InManual:
					descriptor.TurnOffCommand.Execute();
					break;
				case GKStateBit.TurnOnNow_InManual:
					descriptor.TurnOffCommand.Execute();
					break;
				case GKStateBit.TurnOff_InManual:
					descriptor.TurnOffCommand.Execute();
					break;
				case GKStateBit.TurnOffNow_InManual:
					descriptor.TurnOffCommand.Execute();
					break;
				default:
					return OperationResult<bool>.FromError("Команда " + command.ToDescription() + " ещё не реализована");
			}
			return new OperationResult<bool>(true);
		}
		void AddGuardDevicesLogic(IEnumerable<GKGuardZoneDevice> guardDevices, GKStateBit commandStateBit)
		{
			int count = DescriptorHelper.AddCodeReadersLogic(guardDevices, Formula, commandStateBit);
			switch (commandStateBit)
			{
				case GKStateBit.Fire1:
					if (count > 0)
					{
						if (ChangeGuardDevices.Count > 0)
							Formula.AddGetBit(GKStateBit.On, GuardZone.Pim);
						else
							Formula.AddGetBit(GKStateBit.Attention, GuardZone);
						Formula.Add(FormulaOperationType.OR);
						Formula.AddPutBit(GKStateBit.Fire1, GuardZone.ChangePim);
					}
					break;
				case GKStateBit.TurnOnNow_InAutomatic:
				case GKStateBit.TurnOffNow_InAutomatic:
					if (count > 0 || ChangeGuardDevices.Count > 0)
					{
						if (ChangeGuardDevices.Count > 0)
						{
							if (ChangeGuardDevices.Count > 0)
							{
								DescriptorHelper.AddChangeLogic(ChangeGuardDevices, Formula);
								if (commandStateBit == GKStateBit.TurnOnNow_InAutomatic)
								{
									Formula.AddGetBit(GKStateBit.Off, GuardZone);
									Formula.Add(FormulaOperationType.AND);
								}
								if (commandStateBit == GKStateBit.TurnOffNow_InAutomatic)
								{
									Formula.AddGetBit(GKStateBit.On, GuardZone);
									Formula.Add(FormulaOperationType.AND);
								}
							}
							if (count > 0 && ChangeGuardDevices.Count > 0)
							{
								Formula.Add(FormulaOperationType.OR);
							}
						}

						Formula.Add(FormulaOperationType.BR, 1, 3);
						Formula.Add(FormulaOperationType.CONST, 0, 1);
						Formula.AddPutBit(commandStateBit, GuardZone.ChangePim);
						Formula.Add(FormulaOperationType.EXIT);
					}
					break;
			}
		}
Exemplo n.º 9
0
		public bool SetStateBit(GKStateBit stateBit, bool value, ImitatorJournalItem additionalJournalItem = null)
		{
			var stateBitViewModel = StateBits.FirstOrDefault(x => x.StateBit == stateBit);
			if (stateBitViewModel != null)
			{
				if (stateBitViewModel.IsActive != value)
				{
					stateBitViewModel.IsActive = value;
					OnStateBitChanged(stateBit, value, additionalJournalItem);
					NotifyIndicators(stateBit, value);
					return true;
				}
			}
			return false;
		}
Exemplo n.º 10
0
		void NotifyIndicators(GKStateBit stateBit, bool value)
		{
			var fireZoneCondition = GKBase is GKZone && (stateBit == GKStateBit.Attention || stateBit == GKStateBit.Fire1 || stateBit == GKStateBit.Fire2);
			var manualCondition = HasManualRegime && stateBit == GKStateBit.Norm;
			var ignoreCondition = HasIgnoreRegime && stateBit == GKStateBit.Ignore;
			if (GKBase is GKMPT || GKBase is GKPumpStation || GKBase is GKDirection)
			{
				if (stateBit == GKStateBit.On || stateBit == GKStateBit.TurningOn && (value || TurningState == TurningState.Paused))
					OnStateChanged(GKStateBit.Reserve1, value, GKBase.UID);
				OnStateChanged(GKStateBit.Reserve2, TurningState == TurningState.Paused, GKBase.UID);
			}
			if (fireZoneCondition ||  manualCondition || ignoreCondition || stateBit == GKStateBit.Failure)
			{
				if (OnStateChanged != null)
					OnStateChanged(stateBit, value, GKBase.UID);
			}
		}
Exemplo n.º 11
0
		public static int AddCodeReadersLogic(IEnumerable<GKGuardZoneDevice> guardDevices, FormulaBuilder Formula, GKStateBit commandStateBit)
		{
			var count = 0;
			foreach (var guardDevice in guardDevices)
			{
				if (commandStateBit == GKStateBit.TurnOnNow_InAutomatic || commandStateBit == GKStateBit.TurnOn_InAutomatic)
					FormulaHelper.AddCodeReaderLogic(Formula, guardDevice.CodeReaderSettings.SetGuardSettings, guardDevice.Device);
				if (commandStateBit == GKStateBit.TurnOffNow_InAutomatic || commandStateBit == GKStateBit.TurnOff_InAutomatic)
					FormulaHelper.AddCodeReaderLogic(Formula, guardDevice.CodeReaderSettings.ResetGuardSettings, guardDevice.Device);
				if (commandStateBit == GKStateBit.Fire1)
					FormulaHelper.AddCodeReaderLogic(Formula, guardDevice.CodeReaderSettings.AlarmSettings, guardDevice.Device);
				if (count > 0)
				{
					Formula.Add(FormulaOperationType.OR);
				}
				count++;
			}
			return count;
		}
Exemplo n.º 12
0
		public void ClientCommand(GKStateBit stateBit)
		{
			switch (stateBit)
			{
				case GKStateBit.SetRegime_Automatic:
					OnSetAutomaticRegime();
					CommandManager.InvalidateRequerySuggested();
					break;

				case GKStateBit.SetRegime_Manual:
					OnSetManualRegime();
					CommandManager.InvalidateRequerySuggested();
					break;

				case GKStateBit.SetRegime_Off:
					OnSetIgnoreRegime();
					CommandManager.InvalidateRequerySuggested();
					break;

				case GKStateBit.TurnOn_InManual:
					if (Regime == Regime.Manual)
						OnTurnOn();
					break;

				case GKStateBit.TurnOnNow_InManual:
					if (Regime == Regime.Manual)
						OnTurnOnNow();
					break;

				case GKStateBit.TurnOff_InManual:
					if (Regime == Regime.Manual)
						OnTurnOff();
					break;

				case GKStateBit.TurnOffNow_InManual:
					if (Regime == Regime.Manual)
						OnTurnOffNow();
					break;

				case GKStateBit.TurnOn_InAutomatic:
					if (Regime == Regime.Automatic)
						OnTurnOn();
					break;

				case GKStateBit.TurnOnNow_InAutomatic:
					if (Regime == Regime.Automatic)
						OnTurnOnNow();
					break;

				case GKStateBit.TurnOff_InAutomatic:
					if (Regime == Regime.Automatic)
						OnTurnOff();
					break;

				case GKStateBit.TurnOffNow_InAutomatic:
					if (Regime == Regime.Automatic)
						OnTurnOffNow();
					break;

				case GKStateBit.Stop_InManual:
					if (Regime == Regime.Manual)
						OnPauseTurnOn();
					break;

				case GKStateBit.Fire1:
				case GKStateBit.Fire2:
				case GKStateBit.Reset:
						OnResetFire();
					break;
			}
		}
Exemplo n.º 13
0
		void OnStateBitChanged(GKStateBit stateBit, bool isActive, ImitatorJournalItem additionalJournalItem = null)
		{
			ImitatorJournalItem journalItem = null;
			if (stateBit == GKStateBit.Failure)
			{
				journalItem = new ImitatorJournalItem(2, 6, (byte)(isActive ? 1 : 0), (byte)(isActive ? 1 : 0));
				AddJournalItem(additionalJournalItem ?? journalItem);
			}
			else if (stateBit == GKStateBit.Test)
			{
				journalItem = new ImitatorJournalItem(2, 5, 255, (byte)(isActive ? 1 : 0));
				AddJournalItem(additionalJournalItem ?? journalItem);
			}
			else if (isActive)
			{
				if (stateBit != GKStateBit.Norm)
				{
					CurrentOnDelay = 0;
					CurrentOffDelay = 0;
					CurrentHoldDelay = 0;
					TurningState = TurningState.None;
				}
				if (stateBit == GKStateBit.On)
				{
					journalItem = new ImitatorJournalItem(2, 9, 2, 0);
					if (HoldDelay != 0 && !(GKBase is GKDoor && Regime == Regime.Manual))
					{
						CurrentHoldDelay = HoldDelay;
						TurningState = TurningState.Holding;
					}
				}

				if (stateBit == GKStateBit.TurningOn)
				{
					journalItem = new ImitatorJournalItem(2, 9, 4, 0);
					if (OnDelay != 0)
					{
						CurrentOnDelay = OnDelay;
						TurningState = TurningState.TurningOn;
					}
				}

				if (stateBit == GKStateBit.TurningOff)
				{
					journalItem = new ImitatorJournalItem(2, 9, 5, 0);
					if (OffDelay != 0)
					{
						CurrentOffDelay = OffDelay;
						TurningState = TurningState.TurningOff;
						SetStateBit(GKStateBit.Fire1, false);
						SetStateBit(GKStateBit.Fire2, false);
					}
				}

				if (stateBit == GKStateBit.Off)
				{
					AdditionalShortParameters[0] = 0;
					AdditionalShortParameters[1] = 0;
					AdditionalShortParameters[2] = 0;
					journalItem = new ImitatorJournalItem(2, 9, 3, 3);
					SetStateBit(GKStateBit.Attention, false);
					SetStateBit(GKStateBit.Fire1, false);
					SetStateBit(GKStateBit.Fire2, false);
				}

				if (stateBit == GKStateBit.Norm)
				{
					journalItem = new ImitatorJournalItem(2, 14, 0, 0);
				}

				if (stateBit == GKStateBit.Fire1)
				{
					journalItem = new ImitatorJournalItem(2, 2, 0, 0);
				}

				if (stateBit == GKStateBit.Fire2)
				{
					journalItem = new ImitatorJournalItem(2, 3, 0, 0);
				}

				if (stateBit == GKStateBit.Ignore)
				{
					journalItem = new ImitatorJournalItem(2, 10, 2, 0);
				}

				if (stateBit == GKStateBit.Attention)
				{
					journalItem = new ImitatorJournalItem(2, 4, 0, 0);
				}

				AddJournalItem(additionalJournalItem ?? journalItem);
			}

			if (additionalJournalItem != null || journalItem != null)
				RecalculateOutputLogic();
		}
Exemplo n.º 14
0
		public StateTypeViewModel(ClauseOperationType clauseOperationType, GKStateBit stateBit)
		{
			StateBit = stateBit;
			Name = GKClause.ClauseToString(clauseOperationType, stateBit);
		}
Exemplo n.º 15
0
		public void ControlGKDevice(Guid deviceUid, GKStateBit command)
		{
			ControlGKDevice(RubezhServiceFactory.UID, deviceUid, command);
		}
Exemplo n.º 16
0
		public void GKExecuteDeviceCommand(GKDevice device, GKStateBit stateBit, string userName = null)
		{
			SafeOperationCall(() =>
			{
				var rubezhService = RubezhServiceFactory.Create(TimeSpan.FromMinutes(10));
				using (rubezhService as IDisposable)
					rubezhService.GKExecuteDeviceCommand(RubezhServiceFactory.UID, device.UID, stateBit,userName);
			}, "GKExecuteDeviceCommand");
		}
Exemplo n.º 17
0
		public OperationResult<bool> ConrtolGKBase(Guid uid, GKStateBit command, bool isPim = false)
		{
			var imitatorService = ImitatorServiceFactory.Create();
			return imitatorService.ConrtolGKBase(uid, command, isPim);
		}
Exemplo n.º 18
0
		public static void SendControlCommand(GKBase gkBase, GKStateBit stateBit, string description)
		{
			var code = 0x80 + (int)stateBit;
			SendControlCommand(gkBase, (byte)code, description);
		}
Exemplo n.º 19
0
		public StateBitViewModel(DescriptorViewModel descriptorViewModel, GKStateBit stateBit, bool isActive = false)
		{
			DescriptorViewModel = descriptorViewModel;
			StateBit = stateBit;
			_isActive = isActive;
		}
Exemplo n.º 20
0
		bool CanDo(GKStateBit stateBit)
		{
			var onState = StateBits.FirstOrDefault(x => x.StateBit == GKStateBit.On);
			var turningOnState = StateBits.FirstOrDefault(x => x.StateBit == GKStateBit.TurningOn);
			var offState = StateBits.FirstOrDefault(x => x.StateBit == GKStateBit.Off);
			var turningOffState = StateBits.FirstOrDefault(x => x.StateBit == GKStateBit.TurningOff);
			var fire1State = StateBits.FirstOrDefault(x => x.StateBit == GKStateBit.Fire1);
			var fire2State = StateBits.FirstOrDefault(x => x.StateBit == GKStateBit.Fire2);
			if (stateBit == GKStateBit.TurnOn_InManual)
				return onState != null && !onState.IsActive && (turningOnState == null || !turningOnState.IsActive);
			if (stateBit == GKStateBit.TurnOnNow_InManual)
				return onState != null && !onState.IsActive;
			if (stateBit == GKStateBit.TurnOff_InManual)
				return offState != null && !offState.IsActive && (turningOffState == null || !turningOffState.IsActive);
			if (stateBit == GKStateBit.TurnOffNow_InManual)
				return offState != null && !offState.IsActive;
			if (stateBit == GKStateBit.Fire1)
				return fire1State != null && !fire1State.IsActive;
			if (stateBit == GKStateBit.Fire2)
				return fire2State != null && !fire2State.IsActive;
			return false;
		}
Exemplo n.º 21
0
		void ChangeIndicatorStates(DescriptorViewModel indicator, GKStateBit stateBit)
		{
			if (activeStateBits.Any(x => x.Item2 == stateBit))
			{
				if (indicator.GetStateBit(GKStateBit.Off))
					indicator.TurnOnNowCommand.Execute();
			}
			else
			{
				if (indicator.GetStateBit(GKStateBit.On))
					indicator.TurnOffNowCommand.Execute();
			}
		}
Exemplo n.º 22
0
		public static void GKExecuteDeviceCommand(GKDevice device, GKStateBit stateBit, string userName)
		{
			Watcher.SendControlCommand(device, stateBit, stateBit.ToDescription());
			AddGKMessage(JournalEventNameType.Команда_оператора, JournalEventDescriptionType.NULL, stateBit.ToDescription(), device, userName);
		}
Exemplo n.º 23
0
		void AddGuardDevicesLogic(IEnumerable<GKDevice> devices, GKStateBit commandStateBit)
		{
			var count = DescriptorHelper.AddFireOrFailureLogic(devices, Formula);
			switch (commandStateBit)
			{
				case GKStateBit.Fire1:
					if (count > 0 || SetAlarmPimDevices.Any())
					{
						if (UsePim)
							Formula.AddGetBit(GKStateBit.TurningOn, GuardZone.Pim);
						else
							Formula.AddGetBit(GKStateBit.Attention, GuardZone);

						if (count > 0)
							Formula.Add(FormulaOperationType.OR);

						if (SetAlarmPimDevices.Any())
						{
							Formula.AddGetBit(GKStateBit.Fire1, GuardZone.ChangePim);
							int count2 = DescriptorHelper.AddCodeReadersLogic(SetAlarmPimDevices, Formula, commandStateBit);
							if (count2 > 0)
								Formula.Add(FormulaOperationType.AND);
							Formula.Add(FormulaOperationType.OR);
						}
						Formula.AddPutBit(GKStateBit.Attention, GuardZone);
					}
					break;
				case GKStateBit.TurnOn_InAutomatic:
				case GKStateBit.TurnOff_InAutomatic:
					var useChangePimLogic = ChangeGuardPimDevices.Count > 0
						|| (commandStateBit == GKStateBit.TurnOn_InAutomatic && SetGuardPimDevices.Any())
						|| (commandStateBit == GKStateBit.TurnOff_InAutomatic && ResetGuardPimDevices.Any());
					if (count > 0 || useChangePimLogic)
					{
						if (useChangePimLogic)
						{
							DescriptorHelper.AddChangeLogic(ChangeGuardPimDevices, Formula);
							int count2 = 0;
							if (commandStateBit == GKStateBit.TurnOn_InAutomatic)
							{
								count2 = DescriptorHelper.AddCodeReadersLogic(SetGuardPimDevices, Formula, commandStateBit);
								if (ChangeGuardPimDevices.Count > 0 && count2 > 0)
									Formula.Add(FormulaOperationType.OR);
								Formula.AddGetBit(GKStateBit.On, GuardZone.ChangePim);
							}
							else
							{
								count2 = DescriptorHelper.AddCodeReadersLogic(ResetGuardPimDevices, Formula, commandStateBit);
								if (ChangeGuardPimDevices.Count > 0 && count2 > 0)
									Formula.Add(FormulaOperationType.OR);
								Formula.AddGetBit(GKStateBit.Off, GuardZone.ChangePim);
							}
							Formula.Add(FormulaOperationType.AND);

							if (count > 0)
								Formula.Add(FormulaOperationType.OR);
						}
						if (commandStateBit == GKStateBit.TurnOn_InAutomatic)
							AddMissedLogic();
						Formula.Add(FormulaOperationType.BR, 1, 3);
						Formula.Add(FormulaOperationType.CONST, 0, 1);
						Formula.AddPutBit(commandStateBit, GuardZone);
						Formula.Add(FormulaOperationType.EXIT);
					}
					break;
			}
		}
Exemplo n.º 24
0
		bool ValidateCommand(DescriptorViewModel descriptor, GKStateBit command)
		{
			var availableCommands = new List<GKStateBit>();
			if (descriptor.HasAutomaticRegime)
				availableCommands.Add(GKStateBit.SetRegime_Automatic);
			if (descriptor.HasManualRegime)
				availableCommands.Add(GKStateBit.SetRegime_Manual);
			if (descriptor.HasIgnoreRegime)
				availableCommands.Add(GKStateBit.Ignore);
			if (descriptor.HasReset || descriptor.HasResetFire)
				availableCommands.Add(GKStateBit.Reset);
			if (descriptor.HasSetFireHandDetector || descriptor.HasFire12)
				availableCommands.Add(GKStateBit.Fire2);
			if (descriptor.HasSetFireSmoke || descriptor.HasSetFireTemperature || descriptor.HasSetFireTemperatureGradient || descriptor.HasFire12 || descriptor.HasFire1)
				availableCommands.Add(GKStateBit.Fire1);
			if (descriptor.HasTest)
				availableCommands.Add(GKStateBit.Test);
			if (descriptor.HasTurnOn)
			{ 
				availableCommands.Add(GKStateBit.TurnOn_InManual);
				availableCommands.Add(GKStateBit.TurnOn_InAutomatic);
			}
			if (descriptor.HasTurnOnNow)
			{
				availableCommands.Add(GKStateBit.TurnOnNow_InManual);
				availableCommands.Add(GKStateBit.TurnOnNow_InAutomatic);
			}
			if (descriptor.HasTurnOff)
			{
				availableCommands.Add(GKStateBit.TurnOff_InManual);
				availableCommands.Add(GKStateBit.TurnOff_InAutomatic);
			}
			if (descriptor.HasTurnOffNow)
			{
				availableCommands.Add(GKStateBit.TurnOffNow_InManual);
				availableCommands.Add(GKStateBit.TurnOffNow_InAutomatic);
			}
			if (descriptor.HasAlarm)
				availableCommands.Add(GKStateBit.Fire1);

			return availableCommands.Contains(command);
		}
Exemplo n.º 25
0
		void InitIndicatorsStates(GKStateBit stateBit, bool value, Guid objectUid)
		{
			if (stateBit == GKStateBit.Norm)
				value = !value;
			var activeStateBit = activeStateBits.FirstOrDefault(x => x.Item1 == objectUid && x.Item2 == stateBit);
			
			if (activeStateBit == null && value)
				activeStateBits.Add(new Tuple<Guid, GKStateBit>(objectUid, stateBit));
			else if (!value)
				activeStateBits.RemoveAll(x => x.Item1 == objectUid && x.Item2 == stateBit);

			ChangeIndicatorStates(failureIndicator, GKStateBit.Failure);
			ChangeIndicatorStates(fire1Indicator, GKStateBit.Fire1);
			ChangeIndicatorStates(fire2Indicator, GKStateBit.Fire2);
			ChangeIndicatorStates(attentionIndicator, GKStateBit.Attention);
			ChangeIndicatorStates(startIndicator, GKStateBit.Reserve1);
			ChangeIndicatorStates(ignoreIndicator, GKStateBit.Ignore);
			ChangeIndicatorStates(manualIndicator, GKStateBit.Norm);
			ChangeIndicatorStates(suspendIndicator, GKStateBit.Reserve2);
		}
Exemplo n.º 26
0
		void AddStateBit(GKStateBit stateBit, bool isActive = false)
		{
			if(StateBits.All(x => x.StateBit != stateBit))
				StateBits.Add(new StateBitViewModel(this, stateBit, isActive));
		}
Exemplo n.º 27
0
		public static string ClauseToString(ClauseOperationType clauseOperationType, GKStateBit stateBit)
		{
			switch (clauseOperationType)
			{
				case ClauseOperationType.AllZones:
				case ClauseOperationType.AnyZone:
					switch (stateBit)
					{
						case GKStateBit.Fire1:
							return "Пожар 1";

						case GKStateBit.Fire2:
							return "Пожар 2";

						case GKStateBit.Attention:
							return "Внимание";
					}
					break;

				case ClauseOperationType.AllGuardZones:
				case ClauseOperationType.AnyGuardZone:
					switch (stateBit)
					{
						case GKStateBit.On:
							return "На охране";

						case GKStateBit.Off:
							return "Не на охране";

						case GKStateBit.Fire1:
							return "Тревога";
					}
					break;

				case ClauseOperationType.AllDoors:
				case ClauseOperationType.AnyDoor:
					switch (stateBit)
					{
						case GKStateBit.Fire1:
							return "Тревога";
					}
					break;
			}

			return stateBit.ToDescription();
		}
Exemplo n.º 28
0
		public static void AddAvailableStateBits(GKDriver driver, GKStateBit stateType)
		{
			if (driver.AvailableStateBits.Count == 0)
			{
				driver.AvailableStateBits.Add(GKStateBit.Norm);
				driver.AvailableStateBits.Add(GKStateBit.Failure);
				driver.AvailableStateBits.Add(GKStateBit.Ignore);
			}
			driver.AvailableStateBits.Add(stateType);
		}
Exemplo n.º 29
0
		CommandType XStateBitToCommandType(GKStateBit stateString)
		{
			if (GKDeviceArgument.ExplicitValue.Device != null)
			{
				switch (stateString)
				{
					case GKStateBit.SetRegime_Automatic:
						return CommandType.SetRegime_Automatic;
					case GKStateBit.SetRegime_Manual:
						return CommandType.SetRegime_Manual;
					case GKStateBit.SetRegime_Off:
						return CommandType.SetRegime_Off;
					case GKStateBit.TurnOn_InManual:
						return CommandType.TurnOn_InManual;
					case GKStateBit.TurnOnNow_InManual:
						return CommandType.TurnOnNow_InManual;
					case GKStateBit.TurnOff_InManual:
						return CommandType.TurnOff_InManual;
					case GKStateBit.Stop_InManual:
						return CommandType.Stop_InManual;
					case GKStateBit.Reset:
						return CommandType.Reset;
					case GKStateBit.ForbidStart_InManual:
						return CommandType.ForbidStart_InManual;
					case GKStateBit.TurnOffNow_InManual:
						return CommandType.TurnOffNow_InManual;
					case GKStateBit.TurnOn_InAutomatic:
						return CommandType.TurnOn_InAutomatic;
					case GKStateBit.TurnOnNow_InAutomatic:
						return CommandType.TurnOnNow_InAutomatic;
					case GKStateBit.TurnOff_InAutomatic:
						return CommandType.TurnOff_InAutomatic;
					case GKStateBit.TurnOffNow_InAutomatic:
						return CommandType.TurnOffNow_InAutomatic;
					default:
						return CommandType.Unknown;
				}
			}
			switch (stateString)
			{
				case GKStateBit.SetRegime_Automatic:
					return CommandType.SetRegime_Automatic;
				case GKStateBit.SetRegime_Manual:
					return CommandType.SetRegime_Manual;
				case GKStateBit.SetRegime_Off:
					return CommandType.SetRegime_Off;
				case GKStateBit.TurnOn_InManual:
					return CommandType.TurnOn_InManual;
				case GKStateBit.TurnOnNow_InManual:
					return CommandType.TurnOnNow_InManual;
				case GKStateBit.TurnOff_InManual:
					return CommandType.TurnOff_InManual;
				case GKStateBit.Stop_InManual:
					return CommandType.Stop_InManual;
				case GKStateBit.Reset:
					return CommandType.Reset;
				case GKStateBit.ForbidStart_InManual:
					return CommandType.ForbidStart_InManual;
				case GKStateBit.TurnOffNow_InManual:
					return CommandType.TurnOffNow_InManual;
				case GKStateBit.TurnOnNow_InAutomatic:
					return CommandType.TurnOnNow_InAutomatic;
				case GKStateBit.TurnOffNow_InAutomatic:
					return CommandType.TurnOffNow_InAutomatic;
				default:
					return CommandType.Unknown;
			}
		}
Exemplo n.º 30
0
		public void ControlGKDevice(Guid clientUID, Guid deviceUid, GKStateBit command)
		{
			ProcedureHelper.ControlGKDevice(clientUID, deviceUid, command);
		}