public void TestFireZoneFire1()
		{
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_CombinedDetector);
			var zone = new GKZone { Name = "Пожарная зона", No = 1 };
			GKManager.AddZone(zone);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();
			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждем норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона находится в норме");
			ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка датчика1");
			ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка датчика2");
			WaitWhileState(zone, XStateClass.Fire1, 3000, "Ждем пожар1 в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что зона перешла в пожар1");
			ConrtolGKBase(device1, GKStateBit.Reset, "Сброс датчика1");
			ConrtolGKBase(device2, GKStateBit.Reset, "Сброс датчика2");
			CheckTime(() => Thread.Sleep(1000), "Ждем 1 секунду");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что зона еще в состоянии пожар1");
			ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны");
			WaitWhileState(zone, XStateClass.Norm, 3000, "Ждем норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в норму");
		}
		public ZoneDetailsViewModel(GKZone zone = null)
		{
			if (zone == null)
			{
				Title = "Создание новой зоны";

				Zone = new GKZone()
				{
					Name = "Новая зона",
					No = 1,
					Fire1Count = LastFire1Count,
					Fire2Count = LastFire2Count
				};
				if (GKManager.Zones.Count != 0)
					Zone.No = (GKManager.Zones.Select(x => x.No).Max() + 1);
			}
			else
			{
				Title = string.Format("Свойства зоны: {0}", zone.PresentationName);
				Zone = zone;
			}
			CopyProperties();


			var availableNames = new HashSet<string>();
			var availableDescription = new HashSet<string>();
			foreach (var existingZone in GKManager.Zones)
			{
				availableNames.Add(existingZone.Name);
				availableDescription.Add(existingZone.Description);
			}
			AvailableNames = new ObservableCollection<string>(availableNames);
			AvailableDescription = new ObservableCollection<string>(availableDescription);
		}
Exemple #3
0
		public GKState(GKZone zone)
			: this()
		{
			Zone = zone;
			UID = zone.UID;
			BaseObjectType = GKBaseObjectType.Zone;
		}
Exemple #4
0
		/// <summary>
		/// Валидация того, что настройка количество датчиков для перехода в Пожар-1 больше, чем для перехода в Пожар-2
		/// </summary>
		/// <param name="zone"></param>
		void ValidateZoneFire1Fire2Count(GKZone zone)
		{
			if (zone.Fire1Count >= zone.Fire2Count)
			{
				AddError(zone, "Количество датчиков для сработки Пожар 1 должно быть меньше количества датчиков для сработки Пожар 2", ValidationErrorLevel.CannotWrite);
			}
		}
		/* Тестирование жизненного цикла датчиков и пожарной зоны в режиме Сработка2 */
		public void TestDeviceFire2(GKDriverType driver)
		{
			var device1 = AddDevice(kauDevice11, driver);
			var device2 = AddDevice(kauDevice11, driver);
			var device3 = AddDevice(kauDevice11, driver);
			var zone = new GKZone {Name = "Пожарная зона", No = 1};
			GKManager.AddZone(zone);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();

			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждём Норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона находится в Норме");
			ConrtolGKBase(device1, GKStateBit.Fire2, "Сработка2 в device");
			WaitWhileState(device1, XStateClass.Fire2, 3000, "Ожидаем пока device1 перейдёт в Сработка2");
			Assert.IsTrue(device1.State.StateClass == XStateClass.Fire2, "Проверка того, что device1 находится в Сработка2");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire2, "Проверка того, что пожараная зона перешла в Пожар2");
			CheckJournal(3, JournalItem(device1, JournalEventNameType.Сработка_2),
				JournalItem(zone, JournalEventNameType.Пожар_2), JournalItem(Led("Устройство Пожар 2 "), JournalEventNameType.Включено));
			ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire2, "Проверка того, что зона всё ещё в режиме Сработка2");
			ConrtolGKBase(device1, GKStateBit.Reset, "Сброс устройства1");
			WaitWhileState(device1, XStateClass.Norm, 3000, "Ожидаем пока device1 перейдёт в Норму");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire2, "Проверка того, что зона всё ещё в режиме Сработка2");
			CheckJournal(2, JournalItem(device1, JournalEventNameType.Норма));
			ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны");
			WaitWhileState(zone, XStateClass.Norm, 3000, "Ожидаем пока зона перейдёт в Норму");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в Норму");
			//CheckJournal(2, JournalItem(zone, JournalEventNameType.Норма), JournalItem(Led("Устройство Пожар 2"), JournalEventNameType.Выключено)); RG-1340 & RG-1341
		}
		public void Initialize(GKZone zone)
		{
			Zone = zone;
			var devices = new HashSet<GKDevice>();

			foreach (var device in GKManager.Devices)
			{
				if (device.Driver.HasZone)
				{
					if (device.ZoneUIDs.Contains(Zone.UID) && device.ZoneUIDs.Count != 0)
					{
						devices.Add(device);
					}
				}
			}

			Devices = new ObservableCollection<ZoneDeviceViewModel>();
			foreach (var device in devices)
			{
				var deviceViewModel = new ZoneDeviceViewModel(device)
				{
					IsBold = device.ZoneUIDs.Contains(Zone.UID)
				};
				Devices.Add(deviceViewModel);
			}

			OnPropertyChanged(() => Devices);
			SelectedDevice = Devices.FirstOrDefault();

		}
		public ZoneSelectionViewModel(GKZone zone)
		{
			Title = "Выбор зоны";
			Zones = new ObservableCollection<ZoneViewModel>();
			GKManager.Zones.ForEach(x => Zones.Add(new ZoneViewModel(x)));
			if (zone != null)
				SelectedZone = Zones.FirstOrDefault(x => x.Zone.UID == zone.UID);
			if (SelectedZone == null)
				SelectedZone = Zones.FirstOrDefault();
		}
		public void AddDeviceToZoneTest()
		{
			var device = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var zone = new GKZone();
			GKManager.AddZone(zone);
			GKManager.AddDeviceToZone(device, zone);
			Assert.IsTrue(device.ZoneUIDs.Contains(zone.UID));
			Assert.IsTrue(device.Zones.Contains(zone));
			Assert.IsTrue(zone.Devices.Contains(device));
		}
Exemple #9
0
		public ObjectViewModel(GKZone zone)
		{
			Zone = zone;
			Name = zone.PresentationName;
			ImageSource = "/Controls;component/Images/Zone.png";
			Address = "";
			PresentationZoneOrLogic = "";
			ObjectType = ObjectType.Zone;
			SortingName = "b " + zone.No;
		}
		public ZoneDetailsViewModel(GKZone zone)
		{
			Title = "Добавление зоны";
			if (zone == null)
				zone = new GKZone();
			Zone = zone;
			Name = Zone.Name;
			Description = Zone.Description;
			Fire1Count = Zone.Fire1Count;
			Fire2Count = Zone.Fire2Count;
		}
		public void TestFireZoneInMultiGk()
		{
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HandDetector);
			var device2 = AddDevice(kauDevice21, GKDriverType.RSR2_HandDetector);
			var zone = new GKZone();
			GKManager.Zones.Add(zone);
			device1.ZoneUIDs.Add(zone.UID);
			device2.ZoneUIDs.Add(zone.UID);
			var validator = new Validator();
			var errors = validator.Validate();
			Assert.IsTrue(errors.Any(x => x.ErrorLevel == ValidationErrorLevel.CannotWrite && x.Error == "Содержится в нескольких ГК"));
		}
Exemple #12
0
        public ZoneViewModel(GKZone zone)
		{
            Zone = zone;
			ZoneState = zone.State;
			_stateClass = zone.State.StateClass;
			State.StateChanged += new Action(OnStateChanged);
			No = zone.No;
			Name = zone.Name;
            SetIgnoreCommand = new RelayCommand(OnSetIgnore, CanSetIgnore);
            ResetIgnoreCommand = new RelayCommand(OnResetIgnore, CanResetIgnore);
            ResetFireCommand = new RelayCommand(OnResetFire, CanResetFire);
		}
Exemple #13
0
		public static void RemoveDeviceFromZone(GKDevice device, GKZone zone)
		{
			if (zone != null)
			{
				device.Zones.Remove(zone);
				device.ZoneUIDs.Remove(zone.UID);
				zone.Devices.Remove(device);
				zone.OutputDependentElements.Remove(device);
				device.InputDependentElements.Remove(zone);
				zone.OnChanged();
				device.OnChanged();
			}
		}
		public ZoneDetailsViewModel(GKZone zone)
		{
			ShowCommand = new RelayCommand(OnShow);
			ShowJournalCommand = new RelayCommand(OnShowJournal);
			ResetFireCommand = new RelayCommand(OnResetFire, CanResetFire);
			SetIgnoreCommand = new RelayCommand(OnSetIgnore, CanSetIgnore);
			ResetIgnoreCommand = new RelayCommand(OnResetIgnore, CanResetIgnore);

			Zone = zone;
			Title = Zone.PresentationName;
			State.StateChanged += new Action(OnStateChanged);
			PlanLinks = new PlanLinksViewModel(Zone);
		}
Exemple #15
0
		/// <summary>
		/// Валидация того, что количество подключенных к зоне датчиков для перехода в соответствующее состояние меньше заданного в настройке зоны
		/// </summary>
		/// <param name="zone"></param>
		void ValidateZoneDetectorCount(GKZone zone)
		{
			var fire1Count = zone.Devices.Count(x => x.Driver.AvailableStateBits.Contains(GKStateBit.Fire1));
			var fire2Count = zone.Devices.Count(x => x.Driver.AvailableStateBits.Contains(GKStateBit.Fire2));
			if (fire2Count == 0 && fire1Count < zone.Fire1Count)
			{
				AddError(zone, "Количество подключенных к зоне датчиков меньше количества датчиков для сработки Пожар 1", ValidationErrorLevel.CannotWrite);
				return;
			}
			if (fire2Count == 0 && fire1Count < zone.Fire2Count)
			{
				AddError(zone, "Количество подключенных к зоне датчиков меньше количества датчиков для сработки Пожар 2", ValidationErrorLevel.Warning);
			}
		}
		/* RG-1004 (Включение НС по условию - пожар1 в зоне)*/
		public void TestPumpStaitionStartLogicWithFirezone()
		{
			var pumpStaition = new GKPumpStation {Name = "Насосная станция", No = 1};
			var zone = new GKZone {Name = "Пожарная зона", No = 1};
			var clause = new GKClause
			{
				ClauseOperationType = ClauseOperationType.AllZones,
				StateType = GKStateBit.Fire1,
				ZoneUIDs = {zone.UID}
			};
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var pump = AddDevice(kauDevice11, GKDriverType.RSR2_Bush_Fire);
			var gkpim = AddPim(gkDevice1);
			var kaupim = AddPim(kauDevice11);
			pumpStaition.StartLogic.OnClausesGroup.Clauses.Add(clause);
			pumpStaition.NSDeviceUIDs.Add(pump.UID);
			pumpStaition.NSDevices.Add(pump);
			pumpStaition.Delay = 3;
			GKManager.AddZone(zone);
			GKManager.AddPumpStation(pumpStaition);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();

			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждем Норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона в Норме");
			TurnOnPim(gkpim);
			TurnOnPim(kaupim);
			ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 у датчика1");
			WaitWhileState(zone, XStateClass.Attention, 4000, "Ждем пока зона не перейдёт во Внимание");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Attention, "Проверка того, что зона во Внимание");
			Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.Off, "Проверка того, что НС Выключен");
			CheckJournal(3, JournalItem(device1, JournalEventNameType.Сработка_1),
				JournalItem(zone, JournalEventNameType.Внимание), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Включено));
			ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 у датчика2");
			WaitWhileState(zone, XStateClass.Fire1, 3000, "Ждем пока зона не перейдёт в Пожар");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что зона перешла в Пожар");
			Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.TurningOn, "Проверка того, что НС Включается");
			WaitWhileState(zone, XStateClass.On, 4000, "Ждем пока НС не Включится");
			Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.On, "Проверка того, что НС Включен");
			Assert.IsTrue(pump.State.StateClass == XStateClass.On, "Проверка того, что насос Включен");
			CheckJournal(8, JournalItem(device2, JournalEventNameType.Сработка_1), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Выключено),
				JournalItem(zone, JournalEventNameType.Пожар_1), JournalItem(pumpStaition, JournalEventNameType.Включается),
				JournalItem(Led("Устройство Включение ПУСК "), JournalEventNameType.Включено), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено),
				JournalItem(pumpStaition, JournalEventNameType.Включено), JournalItem(pump, JournalEventNameType.Включено));
		}
Exemple #17
0
		public static void AddDeviceToZone(GKDevice device, GKZone zone)
		{
			if (!device.Zones.Contains(zone))
			{
				device.Zones.Add(zone);
			}
			if (!device.ZoneUIDs.Contains(zone.UID))
				device.ZoneUIDs.Add(zone.UID);
			if (!device.InputDependentElements.Contains(zone))
				device.InputDependentElements.Add(zone);
			if (!zone.OutputDependentElements.Contains(device))
				zone.OutputDependentElements.Add(device);
			zone.Devices.Add(device);
			zone.OnChanged();
			device.OnChanged();
		}
Exemple #18
0
		public ZoneViewModel(GKZone zone)
		{
			ResetFireCommand = new RelayCommand(OnResetFire, CanResetFire);
			SetIgnoreCommand = new RelayCommand(OnSetIgnore, CanSetIgnore);
			ResetIgnoreCommand = new RelayCommand(OnResetIgnore, CanResetIgnore);
			SetIgnoreAllCommand = new RelayCommand(OnSetIgnoreAll, CanSetIgnoreAll);
			ResetIgnoreAllCommand = new RelayCommand(OnResetIgnoreAll, CanResetIgnoreAll);
			ShowOnPlanCommand = new RelayCommand(OnShowOnPlan, CanShowOnPlan);
			ShowJournalCommand = new RelayCommand(OnShowJournal);
			ShowPropertiesCommand = new RelayCommand(OnShowProperties);
			ShowOnPlanOrPropertiesCommand = new RelayCommand(OnShowOnPlanOrProperties);

			Zone = zone;
			State.StateChanged += new System.Action(OnStateChanged);
			OnStateChanged();
		}
		/* RG-1015 (Если у НС задан Режим после удержания "Включено", то после окончания отсчета удержания он не должен переходить в режим "Включается")*/
		public void TestPumpStationDelayRegime(DelayRegime regime, XStateClass state, JournalEventNameType eventname)
		{
			var pumpStaition = new GKPumpStation { Name = "Насосная станция", No = 1 };
			var zone = new GKZone { Name = "Пожарная зона", No = 1 };
			var clause = new GKClause
			{
				ClauseOperationType = ClauseOperationType.AllZones,
				StateType = GKStateBit.Fire1,
				ZoneUIDs = { zone.UID }
			};
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var pump = AddDevice(kauDevice11, GKDriverType.RSR2_Bush_Fire);
			var gkpim = AddPim(gkDevice1);
			var kaupim = AddPim(kauDevice11);
			pumpStaition.StartLogic.OnClausesGroup.Clauses.Add(clause);
			pumpStaition.NSDeviceUIDs.Add(pump.UID);
			pumpStaition.NSDevices.Add(pump);
			pumpStaition.Delay = 3;
			pumpStaition.Hold = 3;
			pumpStaition.DelayRegime = regime;
			GKManager.AddZone(zone);
			GKManager.AddPumpStation(pumpStaition);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();

			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждем Норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона в Норме");
			TurnOnPim(gkpim);
			TurnOnPim(kaupim);
			ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 у датчика1");
			ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 у датчика2");
			WaitWhileState(pumpStaition, XStateClass.On, 5000, "Ждем пока НС не Включится");
			Assert.IsTrue(pumpStaition.State.StateClass == XStateClass.On, "Проверка того, что НС Включен");
			WaitWhileState(pumpStaition, XStateClass.TurningOn, 6000, "Ждем 6 секунд, НС не должен перейти в режим Включается");
			Assert.IsFalse(pumpStaition.State.StateClass == XStateClass.TurningOn, "Проверка того, что НС не перешёл в режим Включается");
			Assert.IsTrue(pumpStaition.State.StateClass == state, "Проверка того, что НС Включен/Выключен");
			Assert.IsTrue(pump.State.StateClass == state, "Проверка того, что насос Включен/Выключен");
			WaitWhileState(Led("Устройство Включение ПУСК "), state, 2000,"Ждём пока индикатор не будет Включен/Выключен");
			// RG-1340 CheckJournal(3, JournalItem(pumpStaition, eventname), JournalItem(pump, eventname), JournalItem(Led("Устройство Включение ПУСК "), eventname));
		}
		//[TestCase(GKDriverType.RSR2_Button)] устройство не поддерживается
		/* Тестирование жизненного цикла датчиков и пожарной зоны в режиме Сработка1 */
		public void TestDeviceFire1(GKDriverType driver)
		{
			var device1 = AddDevice(kauDevice11, driver);
			var device2 = AddDevice(kauDevice11, driver);
			var device3 = AddDevice(kauDevice11, driver);
			var zone = new GKZone {Name = "Пожарная зона", No = 1};
			GKManager.AddZone(zone);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();

			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждём Норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона находится в Норме");
			ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 в device");
			WaitWhileState(device1, XStateClass.Fire1, 3000, "Ожидаем пока device1 перейдёт в Сработка1");
			Assert.IsTrue(device1.State.StateClass == XStateClass.Fire1, "Проверка того, что device1 находится в Сработка1");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Attention, "Проверка того, что пожараная зона перешла во Внимание");
			CheckJournal(3, JournalItem(device1, JournalEventNameType.Сработка_1),
				JournalItem(zone, JournalEventNameType.Внимание), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Включено));
			ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 в device2");
			WaitWhileState(device2, XStateClass.Fire1, 3000, "Ожидаем пока device2 перейдёт в Сработка1");
			Assert.IsTrue(device2.State.StateClass == XStateClass.Fire1, "Проверка того, что device2 находится в Сработка1");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Fire1, "Проверка того, что пожараная зона перешла в Пожар1");
			CheckJournal(4, JournalItem(device2, JournalEventNameType.Сработка_1),
				JournalItem(Led("Устройство Внимание "), JournalEventNameType.Выключено),
				JournalItem(zone, JournalEventNameType.Пожар_1), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено));
			ConrtolGKBase(device1, GKStateBit.Reset, "Сброс device1");
			ConrtolGKBase(zone, GKStateBit.Reset, "Сброс зоны");
			WaitWhileState(device1, XStateClass.Norm, 3000, "Ожидаем пока device1 перейдёт в Норму");
			Assert.IsTrue(device1.State.StateClass == XStateClass.Norm, "Проверка того, что device1 перешёл в Норму");
			Assert.IsTrue(zone.State.StateClasses.Contains(XStateClass.Attention), "Проверка того, что зона перешла во Внимание");
			/*CheckJournal(5, JournalItem(device1, JournalEventNameType.Норма), JournalItem(zone, JournalEventNameType.Норма),
				JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Выключено), JournalItem(zone, JournalEventNameType.Внимание),
				JournalItem(Led("Устройство Внимание "), JournalEventNameType.Включено)); RG-1340*/
			ConrtolGKBase(device2, GKStateBit.Reset, "Сброс device2");
			WaitWhileState(device2, XStateClass.Norm, 3000, "Ожидаем пока device2 перейдёт в Норму");
			Assert.IsTrue(device2.State.StateClass == XStateClass.Norm, "Проверка того, что device2 перешёл в Норму");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в Норму");
			/*CheckJournal(3, JournalItem(device2, JournalEventNameType.Норма),
				JournalItem(zone, JournalEventNameType.Норма), JournalItem(Led("Устройство Внимание "), JournalEventNameType.Выключено)); RG-1340*/
		}
Exemple #21
0
        public FireZone(GKZone gkZone)
			: base(gkZone)
		{
			StateIcon = Convert.ToString(gkZone.State.StateClass);
			Name = gkZone.Name;
			Fire1Count = gkZone.Fire1Count;
			Fire2Count = gkZone.Fire2Count;
			ImageSource = gkZone.ImageSource.Replace("/Controls;component/", "");
			No = gkZone.No;
			StateColor = "'#" +
						 new XStateClassToColorConverter2().Convert(gkZone.State.StateClass, null, null, null)
							 .ToString()
							 .Substring(3) + "'";
			StateMessage = gkZone.State.StateClass.ToDescription();
			CanSetIgnore = !gkZone.State.StateClasses.Contains(XStateClass.Ignore);
			CanResetIgnore = gkZone.State.StateClasses.Contains(XStateClass.Ignore);
			CanResetFire = gkZone.State.StateClasses.Contains(XStateClass.Fire2) 
				|| gkZone.State.StateClasses.Contains(XStateClass.Fire1) 
				|| gkZone.State.StateClasses.Contains(XStateClass.Attention);
			GKDescriptorNo = gkZone.GKDescriptorNo;
		}
		public void TestFireZoneAttention()
		{
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HandDetector);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_CombinedDetector);
			var zone = new GKZone { Name = "Пожарная зона", No = 1 };
			GKManager.AddZone(zone);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();
			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждем норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона находится в норме");
			ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка датчика");
			WaitWhileState(zone, XStateClass.Attention, 3000, "Ждем внимание в зоне");
			CheckJournal(JournalItem(device1, JournalEventNameType.Сработка_1), JournalItem(zone, JournalEventNameType.Внимание));
			Assert.IsTrue(zone.State.StateClass == XStateClass.Attention, "Проверка того, что зона перешла во внимание");
			ConrtolGKBase(device1, GKStateBit.Reset, "Сброс датчика");
			WaitWhileState(zone, XStateClass.Norm, 3000, "Ждем норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона перешла в норму");
		}
Exemple #23
0
		/// <summary>
		/// Удаление зоны
		/// </summary>
		/// <param name="zone"></param>
		public static void RemoveZone(GKZone zone)
		{
			Zones.Remove(zone);
			zone.OutputDependentElements.ForEach(x =>
			{
				x.InputDependentElements.Remove(zone);
				if (x is GKDevice)
				{
					x.Invalidate(DeviceConfiguration);
					x.OnChanged();
				}
				x.UpdateLogic(DeviceConfiguration);
				x.OnChanged();
			});

			foreach (var device in zone.Devices)
			{
				device.Zones.Remove(zone);
				device.ZoneUIDs.Remove(zone.UID);
				device.OnChanged();
			}

			zone.OnChanged();
		}
		public void TestZone()
		{
			var device = AddDevice(kauDevice, GKDriverType.RSR2_HandDetector);
			var zone = new GKZone();
			GKManager.Zones.Add(zone);
			device.ZoneUIDs.Add(zone.UID);
			Test(zone, GKDriverType.FireZonesMirror);
		}
		public void TestFirefightingZone()
		{
			var device = AddDevice(kauDevice, GKDriverType.RSR2_HandDetector);
			var zone = new GKZone();
			GKManager.Zones.Add(zone);
			device.ZoneUIDs.Add(zone.UID);
			var direction = new GKDirection();
			GKManager.AddDirection(direction);
			TestFirefightingZone(zone, direction);
		}
		public void RemoveGroupDeviceTest()
		{
			var device = AddDevice(kauDevice11, GKDriverType.RSR2_OPSZ);
			GKManager.UpdateConfiguration();
			var zone = new GKZone();
			GKManager.AddZone(zone);
			GKManager.AddDeviceToZone(device.Children[1], zone);
			Assert.IsTrue(device.Children[1].Zones.Contains(zone));
			Assert.IsTrue(zone.Devices.Contains(device.Children[1]));
			GKManager.RemoveDevice(device);
			Assert.IsFalse(zone.Devices.Any());
		}
Exemple #27
0
		public void AddDeviceToZone()
		{
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_SmokeDetector);
			var zone = new GKZone();
			GKManager.AddZone(zone);
			GKManager.UpdateConfiguration();

			var zonesViewModel = new ZonesViewModel();
			zonesViewModel.Initialize();
			zonesViewModel.OnShow();
			Assert.IsTrue(zonesViewModel.ZoneDevices.Devices.Count == 0);
			Assert.IsTrue(zonesViewModel.ZoneDevices.AvailableDevices.Count == 3);
			zonesViewModel.ZoneDevices.AddCommand.Execute(zonesViewModel.ZoneDevices.AvailableDevices.Where(x => x.Device.UID == device1.UID).ToList());
			Assert.IsTrue(zonesViewModel.ZoneDevices.Devices.Count == 1);
			Assert.IsTrue(zonesViewModel.ZoneDevices.AvailableDevices.Count == 2);
			Assert.IsTrue(zone.Devices.Count == 1);
			Assert.IsTrue(device1.Zones.Count == 1);
		}
Exemple #28
0
		public ZoneDescriptor(GKZone zone)
			: base(zone)
		{
			DescriptorType = DescriptorType.Zone;
			Zone = zone;
		}
		/* RG-1015 (Если у задержки задан Режим после удержания "Включено", то после окончания отсчета удержания она не должена переходить в режим "Включается")*/
		public void TestDelayRegimeDelay(DelayRegime regime, XStateClass state)
		{
			var delay = new GKDelay { Name = "Задержка", No = 1 };
			var zone = new GKZone { Name = "Пожарная зона", No = 1 };
			var clause = new GKClause
			{
				ClauseOperationType = ClauseOperationType.AllZones,
				StateType = GKStateBit.Fire1,
				ZoneUIDs = { zone.UID }
			};
			var device1 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var device2 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			var device3 = AddDevice(kauDevice11, GKDriverType.RSR2_HeatDetector);
			delay.Logic.OnClausesGroup.Clauses.Add(clause);
			delay.DelayTime = 3;
			delay.Hold = 3;
			delay.DelayRegime = regime;
			GKManager.AddZone(zone);
			GKManager.AddDelay(delay);
			GKManager.AddDeviceToZone(device1, zone);
			GKManager.AddDeviceToZone(device2, zone);
			GKManager.AddDeviceToZone(device3, zone);
			SetConfigAndRestartImitator();

			WaitWhileState(zone, XStateClass.Norm, 10000, "Ждем Норму в зоне");
			Assert.IsTrue(zone.State.StateClass == XStateClass.Norm, "Проверка того, что зона в Норме");
			ConrtolGKBase(device1, GKStateBit.Fire1, "Сработка1 у датчика1");
			ConrtolGKBase(device2, GKStateBit.Fire1, "Сработка1 у датчика2");
			WaitWhileState(delay, XStateClass.On, 5000, "Ждем пока задрежка не Включится");
			Assert.IsTrue(delay.State.StateClass == XStateClass.On, "Проверка того, что задержка Включена");
			WaitWhileState(delay, XStateClass.TurningOn, 6000, "Ждем 6 секунд, задрежка не должена перейти в режим Включается");
			Assert.IsFalse(delay.State.StateClass == XStateClass.TurningOn, "Проверка того, что задрежка не перешла в режим Включается");
			Assert.IsTrue(delay.State.StateClass == state, "Проверка того, что задрежка Включена/Выключена");
			if (delay.DelayRegime == DelayRegime.On)
				CheckJournal(3, JournalItem(delay, JournalEventNameType.Включается), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено), JournalItem(delay, JournalEventNameType.Включено));
			else
				CheckJournal(4, JournalItem(delay, JournalEventNameType.Включается), JournalItem(Led("Устройство Пожар 1 "), JournalEventNameType.Включено), JournalItem(delay, JournalEventNameType.Включено), JournalItem(delay, JournalEventNameType.Выключено));
		}
Exemple #30
0
		/// <summary>
		/// Редактирование зоны
		/// </summary>
		/// <param name="zone"></param>
		public static void EditZone(GKZone zone)
		{
			zone.OnChanged();
			zone.OutputDependentElements.ForEach(x => x.OnChanged());
		}