예제 #1
0
파일: MROHelper.cs 프로젝트: hjlfmy/Rubezh
        public static void Create(List<Driver> drivers)
        {
            var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MRO);
            driver.HasConfigurationProperties = true;

            var property1 = new DriverProperty()
            {
                IsAUParameter = true,
                No = 0x82,
                Name = "Количество повторов",
                Caption = "Количество повторов",
                Default = "0",
                DriverPropertyType = DriverPropertyTypeEnum.IntType,
                Min = 0,
                Max = 255
            };
            driver.Properties.Add(property1);

            var property2 = new DriverProperty()
            {
                IsAUParameter = true,
                No = 0x88,
                Name = "Время отложенного пуска",
                Caption = "Время отложенного пуска",
                Default = "0",
                DriverPropertyType = DriverPropertyTypeEnum.IntType,
                Min = 0,
                Max = 255
            };
            driver.Properties.Add(property2);
        }
예제 #2
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MRO);
			driver.HasConfigurationProperties = true;

			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x82,
				Name = "Количество повторов",
				Caption = "Количество повторов",
				Default = "0",
				DriverPropertyType = DriverPropertyTypeEnum.IntType,
				Min = 0,
				Max = 255
			};
			driver.Properties.Add(property1);

			var property2 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x88,
				Name = "AU_Delay",
				Caption = "Задержка включения МРО, с",
				Default = "0",
				DriverPropertyType = DriverPropertyTypeEnum.IntType,
				Min = 0,
				Max = 1200
			};
			driver.Properties.Add(property2);

			//ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x80, "источник воспроизведения (только чтение)", 1, "память", "линейный вход");
		}
예제 #3
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MRO_2);
			if (driver != null)
			{
				driver.HasConfigurationProperties = true;
				//ConfigurationDriverHelper.AddIntProprety(driver, 0x80, "Проигрываемое сообщение", "Проигрываемое сообщение", 0, 1, 1, 8);
				ConfigurationDriverHelper.AddIntProprety(driver, 0x82, "Количество повторов", "Количество повторов", 0, 3, 0, 255);
				ConfigurationDriverHelper.AddIntProprety(driver, 0x83, "Сообщений в памяти", "Сообщений в памяти", 0, 1, 0, 255).IsReadOnly = true;
				ConfigurationDriverHelper.AddIntProprety(driver, 0x84, "Сопротивление выходной линии, 0.1 Ом", "Сопротивление выходной линии, 0.1 Ом", 0, 0, 0, 255).IsReadOnly = true;
                ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x87, "Режим работы", 0, "Ведомый", "Ведущий", 1, 0, 0, false, false, "1");
				//ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x80, "Источник воспроизведения", 1, "Внутренняя память", "Аналоговый вход", 0, 1, 2);
				ConfigurationDriverHelper.AddIntProprety(driver, 0x88, "Задержка включения, с", "Задержка включения, с", 0, 0, 0, 255);

				var property1 = new DriverProperty()
				{
					IsAUParameter = true,
					No = 0x89,
					Name = "Линейный вход",
					Caption = "Линейный вход",
					Default = "0"
				};
				ConfigurationDriverHelper.AddPropertyParameter(property1, "250мВ", 0);
				ConfigurationDriverHelper.AddPropertyParameter(property1, "500мВ", 1);
				ConfigurationDriverHelper.AddPropertyParameter(property1, "775мВ", 2);
				driver.Properties.Add(property1);

				ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x90, "Рабочее напряжение", 0, "12", "24", 0, 0, 0, false, false, "1");
			}
		}
예제 #4
0
		public BasePropertyViewModel(DriverProperty driverProperty, Device device)
		{
			DriverProperty = driverProperty;
			Device = device;
			if (Device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name) == null)
			{
				Save(driverProperty.Default, false);
			}
		}
예제 #5
0
 public StringPropertyViewModel(DriverProperty driverProperty, Device device)
     : base(driverProperty, device)
 {
     var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
     if (property != null)
         _text = property.Value;
     else
         _text = driverProperty.Default;
 }
예제 #6
0
		public BoolPropertyViewModel(DriverProperty driverProperty, Device device)
			: base(driverProperty, device)
		{
			var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (property != null)
				_isChecked = property.Value == "1" ? true : false;
			else
				_isChecked = (driverProperty.Default == "1") ? true : false;
		}
예제 #7
0
		public BasePropertyViewModel(DriverProperty driverProperty, Device device)
		{
			DriverProperty = driverProperty;
			Device = device;
			if (!Device.Properties.Any(x => x.Name == driverProperty.Name))
			{
				Save(driverProperty.Default, false);
			}
		}
예제 #8
0
		public EnumPropertyViewModel(DriverProperty driverProperty, Device device)
			: base(driverProperty, device)
		{
			if (driverProperty == null)
			{
				Logger.Error("EnumPropertyViewModel driverProperty = null");
				return;
			}
			if (device == null)
			{
				Logger.Error("EnumPropertyViewModel device = null");
				return;
			}
			if (driverProperty.Name == null)
			{
				Logger.Error("EnumPropertyViewModel driverProperty.Name = null");
				return;
			}
			if (device.Properties == null)
			{
				Logger.Error("EnumPropertyViewModel device.Properties = null");
				return;
			}
			if (driverProperty.Parameters == null)
			{
				Logger.Error("EnumPropertyViewModel driverProperty.Parameters = null");
				return;
			}

			var property = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (property != null)
			{
				if (property.Value == null)
				{
					Logger.Error("EnumPropertyViewModel property.Value = null " + device.PresentationAddressAndName + " - " + driverProperty.Name);
					return;
				}
				var driverPropertyParameter = driverProperty.Parameters.FirstOrDefault(x => x.Value == property.Value);
				if (driverPropertyParameter != null)
				{
					_selectedParameter = driverPropertyParameter;
				}
			}
			else
			{
				if (driverProperty.Default == null)
				{
					Logger.Error("EnumPropertyViewModel driverProperty.Default = null " + device.Driver.ShortName + "." + driverProperty.Name);
					return;
				}
				var enumdriverProperty = driverProperty.Parameters.FirstOrDefault(x => x.Value == driverProperty.Default);
				if (enumdriverProperty != null)
					_selectedParameter = enumdriverProperty;
				
			}
		}
예제 #9
0
		public static Property CreateProperty(int paramValue, DriverProperty driverProperty)
		{
			var offsetParamValue = paramValue;

			var highByteValue = paramValue / 256;
			var lowByteValue = paramValue - highByteValue * 256;

			if (driverProperty.HighByte)
				offsetParamValue = highByteValue;
			else if (driverProperty.LargeValue)
				offsetParamValue = paramValue;
			else
				offsetParamValue = lowByteValue;

			if (driverProperty.MinBit > 0)
			{
				byte byteOffsetParamValue = (byte)offsetParamValue;
				byteOffsetParamValue = (byte)(byteOffsetParamValue >> driverProperty.MinBit);
				byteOffsetParamValue = (byte)(byteOffsetParamValue << driverProperty.MinBit);
				offsetParamValue = byteOffsetParamValue;
			}

			if (driverProperty.MaxBit > 0)
			{
				byte byteOffsetParamValue = (byte)offsetParamValue;
				byteOffsetParamValue = (byte)(byteOffsetParamValue << 8 - driverProperty.MaxBit);
				byteOffsetParamValue = (byte)(byteOffsetParamValue >> 8 - driverProperty.MaxBit);
				offsetParamValue = byteOffsetParamValue;
			}

			if (driverProperty.BitOffset > 0)
			{
				offsetParamValue = offsetParamValue >> driverProperty.BitOffset;
			}

			if (driverProperty.Caption == "Задержка включения МРО, сек")
			{
				offsetParamValue = offsetParamValue * 5;
			}

			var property = new Property()
			{
				Name = driverProperty.Name,
				Value = offsetParamValue.ToString()
			};

			return property;
		}
예제 #10
0
		bool IsFakeTimeoutProperty(DriverProperty driverProperty)
		{
			switch (Device.Driver.DriverType)
			{
				case DriverType.RM_1:
				case DriverType.MRO:
				case DriverType.MRO_2:
				case DriverType.MDU:
				case DriverType.Valve:
				case DriverType.MPT:
					if (driverProperty.Name == "Timeout")
						return true;
					return false;
			}
			return false;
		}
예제 #11
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.AM1_T);
			driver.HasConfigurationProperties = true;

			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x81,
				Name = "Конфигурация",
				Caption = "Конфигурация",
				Default = "5"
			};
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Один контакт, нормально замкнутый", 4);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Один контакт, нормально разомкнутый", 5);
			driver.Properties.Add(property1);

		}
예제 #12
0
		public BaseAUPropertyViewModel(DriverProperty driverProperty, Device device)
		{
			DriverProperty = driverProperty;
			Device = device;

			if (!Device.SystemAUProperties.Any(x => x.Name == driverProperty.Name))
			{
				Save(driverProperty.Default, false);
			}
			var deviceProperty = Device.DeviceAUProperties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (deviceProperty != null)
			{
				DeviceAUParameterValue = deviceProperty.Value;
			}
			else
				DeviceAUParameterValue = "Неизвестно";

			UpdateDeviceParameterMissmatchType();
		}
예제 #13
0
		public EnumAUPropertyViewModel(DriverProperty driverProperty, Device device)
			: base(driverProperty, device)
		{
			var property = device.SystemAUProperties.FirstOrDefault(x => x.Name == driverProperty.Name);
			if (property != null)
			{
				var driverPropertyParameter = driverProperty.Parameters.FirstOrDefault(x => x.Value == property.Value);
				if (driverPropertyParameter != null)
				{
					_selectedParameter = driverPropertyParameter;
				}
			}
			else
			{
				var enumdriverProperty = driverProperty.Parameters.FirstOrDefault(x => x.Value == driverProperty.Default);
				if (enumdriverProperty != null)
					_selectedParameter = enumdriverProperty;	
			}
		}
예제 #14
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.AM1_O);
			driver.HasConfigurationProperties = true;

			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x81,
				Name = "Конфигурация",
				Caption = "Конфигурация",
				Default = "6",
				BitOffset = 4
			};
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Охранный шлейф 300 мс", 6);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Охранный шлейф 70 мс", 7);

			driver.Properties.Add(property1);
			driver.PresenterKeyPropertyName = "GuardType";
		}
예제 #15
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.RM_1);
			driver.HasConfigurationProperties = true;

			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x82,
				Name = "Конфигурация релейного модуля",
				Caption = "Конфигурация релейного модуля",
				Default = "1"
			};
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Отключено/Замкнуто", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Отключено/Мерцает", 2);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Замкнуто/Отключено", 3);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Замкнуто/Мерцает", 4);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Мерцает/Отключено", 5);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Мерцает/Замкнуто", 6);
			driver.Properties.Add(property1);

			ConfigurationDriverHelper.AddIntProprety(driver, 0x83, "Задержка на пуск, с", "AU_Delay", 0, 0, 0, 250);
			ConfigurationDriverHelper.AddIntProprety(driver, 0x83, "Время удержания, с", "AU_Time", 0, 0, 0, 250, false, true);

			var property2 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x85,
				Name = "Контроль выхода",
				Caption = "Контроль выхода",
				MinBit = 0,
				MaxBit = 4,
				Default = "1"
			};
			ConfigurationDriverHelper.AddPropertyParameter(property2, "Не контролируется", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property2, "На обрыв", 2);
			ConfigurationDriverHelper.AddPropertyParameter(property2, "На КЗ", 3);
			ConfigurationDriverHelper.AddPropertyParameter(property2, "На КЗ и обрыв", 4);
			driver.Properties.Add(property2);
		}
예제 #16
0
		private static void AddLogic(Driver driver, byte no, string propertyName, string defaultValue)
		{
			var property = new DriverProperty()
			{
				IsAUParameter = true,
				No = no,
				Name = propertyName,
				Caption = propertyName,
				Default = defaultValue,
				BitOffset = 4,
				UseMask = true
			};
			ConfigurationDriverHelper.AddPropertyParameter(property, "Не включать", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Включить сразу", 2);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Включить после паузы", 3);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Включить на заданное время", 4);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Включить после паузы на заданное время и выключить", 5);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Переключать постоянно", 6);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Начать переключение после паузы", 7);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Переключать заданное время и оставить включенным", 8);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Начать переключение после паузы, переключать заданное время и оставить включенным", 9);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Переключать заданное время и оставить выключенным", 10);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Начать переключение после паузы, переключать заданное время и оставить выключенным", 11);
			driver.Properties.Add(property);
		}
예제 #17
0
		private static void AddRegime(Driver driver, byte no, string propertyName, string defaultValue)
		{
			var property = new DriverProperty()
			{
				IsAUParameter = true,
				No = no,
				Name = propertyName,
				Caption = propertyName,
				Default = defaultValue,
				MaxBit = 3,
				UseMask = true
			};
			ConfigurationDriverHelper.AddPropertyParameter(property, "Сирена", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Табличка «Уходи»", 2);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Табличка «Не входи»", 3);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Табличка «Автоматика отключена»", 4);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Выход АУП", 5);
			driver.Properties.Add(property);
		}
예제 #18
0
		private static void AddControlType(Driver driver, byte no, string propertyName)
		{
			var property = new DriverProperty()
			{
				IsAUParameter = true,
				No = no,
				Name = propertyName,
				Caption = propertyName,
				Default = "4",
				UseMask = true,
				MinBit = 0,
				MaxBit = 3
			};
			ConfigurationDriverHelper.AddPropertyParameter(property, "Состояние цепи не контролируется", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Цепь контролируется только на обрыв", 2);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Цепь контролируется только на КЗ", 3);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Цепь контролируется на КЗ и на обрыв", 4);
			driver.Properties.Add(property);
		}
예제 #19
0
파일: MPTHelper.cs 프로젝트: hjlfmy/Rubezh
        public static void Create(List<Driver> drivers)
        {
            var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MPT);
            driver.HasConfigurationProperties = true;

            AddControlType(driver, 0x87, "Тип контроля выхода 1");
            AddControlType(driver, 0x88, "Тип контроля выхода 2");
            AddControlType(driver, 0x89, "Тип контроля выхода 3");
            AddControlType(driver, 0x8A, "Тип контроля выхода 4");
            AddControlType(driver, 0x8B, "Тип контроля выхода 5");

            AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Масса", 0);
            AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Давление", 2);
            AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Двери-Окна", 4);

            ConfigurationDriverHelper.AddIntProprety(driver, 0xAB, "время включенного состояния выхода 1", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xAC, "время включенного состояния выхода 2", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xAD, "время включенного состояния выхода 3", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xAE, "время включенного состояния выхода 4", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xAF, "время включенного состояния выхода 5", 0, 0, 0, 255, true);

            ConfigurationDriverHelper.AddIntProprety(driver, 0xB1, "период переключения выхода 1", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xB2, "период переключения выхода 2", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xB3, "период переключения выхода 3", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xB4, "период переключения выхода 4", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xB5, "период переключения выхода 5", 0, 0, 0, 255, true);

            ConfigurationDriverHelper.AddIntProprety(driver, 0xC1, "Время задержки включения выхода 1", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xC2, "Время задержки включения выхода 2", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xC3, "Время задержки включения выхода 3", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xC4, "Время задержки включения выхода 4", 0, 0, 0, 255, true);
            ConfigurationDriverHelper.AddIntProprety(driver, 0xC5, "Время задержки включения выхода 5", 0, 0, 0, 255, true);

            AddRegime(driver, 0xBB, "режим работы выхода 1");
            AddRegime(driver, 0xBC, "режим работы выхода 2");
            AddRegime(driver, 0xBD, "режим работы выхода 3");
            AddRegime(driver, 0xBE, "режим работы выхода 4");
            AddRegime(driver, 0xBF, "режим работы выхода 5");

            AddLogic(driver, 0xBB, "логика работы выхода 1");
            AddLogic(driver, 0xBC, "логика работы выхода 2");
            AddLogic(driver, 0xBD, "логика работы выхода 3");
            AddLogic(driver, 0xBE, "логика работы выхода 4");
            AddLogic(driver, 0xBF, "логика работы выхода 5");

            ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Приоритет запуска", 0,
                "происходит отмена задержки запуска при нарушении датчика «Двери-окна» и рестарт после восстановления датчика «Двери-окна»",
                "не происходит отмена задержки запуска при нарушении датчика «Двери-окна»", 1, 1, 2, true);

            ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Блокировка выключения режима «Автоматика включена» при неисправности", 2,
                "режим «Автоматика включена» отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»",
                "режим «Автоматика включена» не отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»", 1, 3, 4, true);

            ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Восстановление режима «Автоматика включена»", 4,
                "режим восстанавливается после восстановления датчика «Двери-окна»",
                "режим не восстанавливается после восстановления  датчика «Двери-окна», восстановление возможно по протоколу RSR", 1, 5, 6, true);

            ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Состояние  режима «Автоматика включена» после включения питания", 6,
                "после включения питания  режим «Автоматика включена» включен",
                "после включения питания  режим «Автоматика включена» отключен", 1, 7, 8, true);

            var property1 = new DriverProperty()
            {
                IsAUParameter = true,
                No = 0x8C,
                Name = "Статус МПТ",
                Caption = "Статус МПТ",
                Default = "1",
                BitOffset = 6,
                UseMask = true
            };
            ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведущий", 1);
            ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведомый", 2);
            driver.Properties.Add(property1);
        }
예제 #20
0
파일: MPTHelper.cs 프로젝트: hjlfmy/Rubezh
 static void AddLogic(Driver driver, byte no, string propertyName)
 {
     var property = new DriverProperty()
     {
         IsAUParameter = true,
         No = no,
         Name = propertyName,
         Caption = propertyName,
         Default = "1",
         MptHighByte = true
     };
     ConfigurationDriverHelper.AddPropertyParameter(property, "1 Не включать", 1);
     ConfigurationDriverHelper.AddPropertyParameter(property, "2 Включить сразу", 2);
     ConfigurationDriverHelper.AddPropertyParameter(property, "3 Включить после паузы", 3);
     ConfigurationDriverHelper.AddPropertyParameter(property, "4 Включить на заданное время", 4);
     ConfigurationDriverHelper.AddPropertyParameter(property, "5 Включить после паузы на заданное время и выключить", 5);
     ConfigurationDriverHelper.AddPropertyParameter(property, "6 Переключать постоянно", 6);
     ConfigurationDriverHelper.AddPropertyParameter(property, "7 Начать переключение после паузы", 7);
     ConfigurationDriverHelper.AddPropertyParameter(property, "8 Переключать заданное время и оставить выключенным", 8);
     ConfigurationDriverHelper.AddPropertyParameter(property, "9 Начать переключение после паузы, переключать заданное время и оставить выключенным", 9);
     ConfigurationDriverHelper.AddPropertyParameter(property, "10 Переключать заданное время и оставить выключенным", 10);
     ConfigurationDriverHelper.AddPropertyParameter(property, "11 Начать переключение после паузы, переключать заданное время и оставить выключенным", 11);
     driver.Properties.Add(property);
 }
예제 #21
0
		private static void AddAM(Driver driver)
		{
			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x81,
				Name = "Тип шлейфа",
				Caption = "Тип шлейфа",
				Default = "0",
				BitOffset = 4,
				UseMask = true
			};
			var property1Parameter1 = new DriverPropertyParameter()
			{
				Name = "Шлейф дымовых датчиков с определением двойной сработки",
				Value = "0"
			};
			var property1Parameter2 = new DriverPropertyParameter()
			{
				Name = "Комбинированный шлейф дымовых и тепловых датчиков без определения двойной сработки тепловых датчиков и с определением двойной сработки дымовых",
				Value = "1"
			};
			var property1Parameter3 = new DriverPropertyParameter()
			{
				Name = "Шлейф тепловых датчиков с определением двойной сработки",
				Value = "2"
			};
			var property1Parameter4 = new DriverPropertyParameter()
			{
				Name = "Комбинированный шлейф дымовых и тепловых датчиков без определения двойной сработки и без контроля короткого замыкания ШС",
				Value = "3"
			};
			
			
			property1.Parameters.Add(property1Parameter1);
			property1.Parameters.Add(property1Parameter2);
			property1.Parameters.Add(property1Parameter3);
			property1.Parameters.Add(property1Parameter4);

			//var property1Parameter6 = new DriverPropertyParameter()
			//{
			//    Name = "Охранная конфигурация",
			//    Value = "6"
			//};
			//var property1Parameter7 = new DriverPropertyParameter()
			//{
			//    Name = "Охранная конфигурация с дополнительным резистором",
			//    Value = "7"
			//};
			//property1.Parameters.Add(property1Parameter6);
			//property1.Parameters.Add(property1Parameter7);
			
			driver.Properties.Add(property1);

			var property2 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x81,
				Name = "Тип включения выхода при пожаре",
				Caption = "Тип включения выхода при пожаре",
				Default = "2",
				MaxBit=3,
				UseMask=true
			};
			var property2Parameter1 = new DriverPropertyParameter()
			{
				Name = "Выключено",
				Value = "0"
			};
			var property2Parameter2 = new DriverPropertyParameter()
			{
				Name = "Мерцает",
				Value = "1"
			};
			var property2Parameter3 = new DriverPropertyParameter()
			{
				Name = "Включено",
				Value = "2"
			};
			property2.Parameters.Add(property2Parameter1);
			property2.Parameters.Add(property2Parameter2);
			property2.Parameters.Add(property2Parameter3);
			driver.Properties.Add(property2);
		}
예제 #22
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MDU);
			driver.HasConfigurationProperties = true;

			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x82,
				Name = "Время переключения в положение НОРМА, с",
				Caption = "Время переключения в положение НОРМА, с",
				Default = "180",
				DriverPropertyType = DriverPropertyTypeEnum.IntType,
				Min = 0,
				Max = 250
			};
			driver.Properties.Add(property1);

			var property2 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x83,
				Name = "Время переключения электропривода в положение ЗАЩИТА, с",
				Caption = "Время переключения электропривода в положение ЗАЩИТА, с",
				Default = "180",
				DriverPropertyType = DriverPropertyTypeEnum.IntType,
				Min = 0,
				Max = 250
			};
			driver.Properties.Add(property2);

			var property3 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x84,
				Name = "AU_Delay",
				Caption = "Время задержки перед началом движения электропривода в положение ЗАЩИТА, с",
				Default = "0",
				DriverPropertyType = DriverPropertyTypeEnum.IntType,
				Min = 0,
				Max = 250
			};
			driver.Properties.Add(property3);

			var property4 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x86,
				Name = "Отказ обмена, с",
				Caption = "Отказ обмена, с",
				Default = "0",
				DriverPropertyType = DriverPropertyTypeEnum.IntType,
				Min = 0,
				Max = 250
			};
			driver.Properties.Add(property4);

			var property6 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x85,
				Name = "Тип привода",
				Caption = "Тип привода",
				Default = "2",
				MinBit = 0,
				MaxBit = 3
			};

			var property6Parameter1 = new DriverPropertyParameter()
			{
				Name = "Реверсивный ДУ",
				Value = "0"
			};
			var property6Parameter2 = new DriverPropertyParameter()
			{
				Name = "Реверсивный ОЗ",
				Value = "1"
			};
			var property6Parameter3 = new DriverPropertyParameter()
			{
				Name = "Пружинный ДУ",
				Value = "2"
			};
			var property6Parameter4 = new DriverPropertyParameter()
			{
				Name = "Пружинный ОЗ",
				Value = "3"
			};
			var property6Parameter5 = new DriverPropertyParameter()
			{
				Name = "Ручной ДУ",
				Value = "4"
			};
			var property6Parameter6 = new DriverPropertyParameter()
			{
				Name = "Ручной ОЗ",
				Value = "5"
			};

			property6.Parameters.Add(property6Parameter1);
			property6.Parameters.Add(property6Parameter2);
			property6.Parameters.Add(property6Parameter3);
			property6.Parameters.Add(property6Parameter4);
			property6.Parameters.Add(property6Parameter5);
			property6.Parameters.Add(property6Parameter6);
			driver.Properties.Add(property6);

			ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0x85, "начальное положение для привода пружинный ДУ", 7,
				"защита",
				"норма", 0, 0, 0, false, false, "0");

			var property7 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x87,
				Name = "Установленные концевики",
				Caption = "Установленные концевики",
				ToolTip = "Установленные на приводе концевики. Применима только для ручного привода",
				Default = "0",
				MinBit = 0,
				MaxBit = 2,
				IsFFInLowByte = true
			};

			var property7Parameter1 = new DriverPropertyParameter()
			{
				Name = "Норма и защита",
				Value = "0"
			};
			var property7Parameter2 = new DriverPropertyParameter()
			{
				Name = "Только защита",
				Value = "1"
			};
			var property7Parameter3 = new DriverPropertyParameter()
			{
				Name = "Только норма",
				Value = "2"
			};

			property7.Parameters.Add(property7Parameter1);
			property7.Parameters.Add(property7Parameter2);
			property7.Parameters.Add(property7Parameter3);
			driver.Properties.Add(property7);

			var property8 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x87,
				Name = "Контроль эл. магнита",
				Caption = "Контроль эл. магнита",
				ToolTip = "Отключение контроля только в сработавшем состоянии (в защите). Применима только для ручного привода",
				Default = "0",
				MinBit = 2,
				MaxBit = 3,
				IsFFInLowByte = true
			};

			var property8Parameter1 = new DriverPropertyParameter()
			{
				Name = "Вкл",
				Value = "0"
			};
			var property8Parameter2 = new DriverPropertyParameter()
			{
				Name = "Выкл",
				Value = "4"
			};

			property8.Parameters.Add(property8Parameter1);
			property8.Parameters.Add(property8Parameter2);
			driver.Properties.Add(property8);
		}
예제 #23
0
		public PresenterKeyViewModel(DriverProperty property)
		{
			Title = "Ключ представления";
			Property = property;
		}
예제 #24
0
		public static string SetConfigurationParameters(DriverProperty property, Device device)
		{
			var binProperties = new List<BinProperty>();
			var binProperty = new BinProperty();
			var driverProperties = device.Driver.Properties.FindAll(x => x.No == property.No);
			foreach (var driverProperty in driverProperties)
			{
				var value = device.Properties.FirstOrDefault(x => x.Name == driverProperty.Name).Value;
				if (driverProperty != null && driverProperty.IsAUParameter)
				{
					binProperty = binProperties.FirstOrDefault(x => x.No == driverProperty.No);
					if (binProperty == null)
					{
						binProperty = new BinProperty()
										  {
											  No = driverProperty.No
										  };
						binProperties.Add(binProperty);
					}
					int intValue = 0;
					if (driverProperty.DriverPropertyType == DriverPropertyTypeEnum.EnumType)
					{
						var driverPropertyParameterValue =
							driverProperty.Parameters.FirstOrDefault(x => x.Value == value);
						if (driverPropertyParameterValue != null)
						{
							intValue = int.Parse(driverPropertyParameterValue.Value);
						}
					}
					else if (driverProperty.DriverPropertyType == DriverPropertyTypeEnum.BoolType)
					{
						intValue = Convert.ToInt32(value);
					}
					else
					{
						intValue = Convert.ToInt32(value);
						if (driverProperty.Caption == "Задержка включения МРО, сек")
						{
							intValue = (int)Math.Truncate((double)intValue / 5);
						}
					}

					if (driverProperty.BitOffset > 0)
					{
						intValue = intValue << driverProperty.BitOffset;
					}

					if (driverProperty.UseMask)
					{
						binProperty.HighByte += intValue;
						binProperty.LowByte = 0xFF;
					}
					else if (driverProperty.HighByte)
						binProperty.LowByte += intValue;
					else if (driverProperty.LargeValue)
					{
						var HighVal = intValue / 256;
						var LowVal = intValue - HighVal * 256;
						binProperty.LowByte = HighVal;
						binProperty.HighByte = LowVal;
					}
					else
						binProperty.HighByte += intValue;
				}
			}
			return binProperty.ToString();
		}
예제 #25
0
		private static void AddDetectorState(Driver driver, byte no, string propertyName, byte offset, byte minBit, byte maxBit, string defaultValue)
		{
			var property = new DriverProperty()
			{
				IsAUParameter = true,
				No = no,
				Name = propertyName,
				Caption = propertyName,
				Default = defaultValue,
				BitOffset = offset,
				MinBit = minBit,
				MaxBit = maxBit,
				UseMask = true
			};
			ConfigurationDriverHelper.AddPropertyParameter(property, "Замкнутое", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property, "Разомкнутое", 2);
			driver.Properties.Add(property);
		}
예제 #26
0
파일: MPTHelper.cs 프로젝트: hjlfmy/Rubezh
 static void AddDetectorState(Driver driver, byte no, string propertyName, byte offset)
 {
     var property = new DriverProperty()
     {
         No = no,
         Name = propertyName,
         Caption = propertyName,
         Default = "1",
         BitOffset = offset,
         UseMask = true
     };
     ConfigurationDriverHelper.AddPropertyParameter(property, "Замкнутое", 1);
     ConfigurationDriverHelper.AddPropertyParameter(property, "Разомкнутое", 2);
     driver.Properties.Add(property);
 }
예제 #27
0
		public static void Create(List<Driver> drivers)
		{
			var driver = drivers.FirstOrDefault(x => x.DriverType == DriverType.MPT);
			driver.HasConfigurationProperties = true;

			AddControlType(driver, 0x87, "Тип контроля выхода 1");
			AddControlType(driver, 0x88, "Тип контроля выхода 2");
			AddControlType(driver, 0x89, "Тип контроля выхода 3");
			AddControlType(driver, 0x8A, "Тип контроля выхода 4");
			AddControlType(driver, 0x8B, "Тип контроля выхода 5");

			AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Масса", 0, 0, 2, "2");
			AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Давление", 2, 2, 4, "2");
			AddDetectorState(driver, 0x8C, "Нормальное состояние датчика Двери-Окна", 4, 4, 6, "1");

			ConfigurationDriverHelper.AddIntProprety(driver, 0xAB, "время включенного состояния выхода 1, с", "AU_TimeExit1", 0, 2, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xAC, "время включенного состояния выхода 2, с", "AU_TimeExit2", 0, 2, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xAD, "время включенного состояния выхода 3, с", "AU_TimeExit3", 0, 2, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xAE, "время включенного состояния выхода 4, с", "AU_TimeExit4", 0, 2, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xAF, "время включенного состояния выхода 5, с", "AU_TimeExit5", 0, 2, 0, 255, true);

			ConfigurationDriverHelper.AddIntProprety(driver, 0xB1, "период переключения выхода 1, с", "AU_PeriodExit1", 0, 1, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xB2, "период переключения выхода 2, с", "AU_PeriodExit2", 0, 1, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xB3, "период переключения выхода 3, с", "AU_PeriodExit3", 0, 1, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xB4, "период переключения выхода 4, с", "AU_PeriodExit4", 0, 1, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xB5, "период переключения выхода 5, с", "AU_PeriodExit5", 0, 1, 0, 255, true);

			ConfigurationDriverHelper.AddIntProprety(driver, 0xC1, "задержка включения выхода 1, с", "AU_DelayExit1", 0, 3, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xC2, "задержка включения выхода 2, с", "AU_DelayExit2", 0, 3, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xC3, "задержка включения выхода 3, с", "AU_DelayExit3", 0, 3, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xC4, "задержка включения выхода 4, с", "AU_DelayExit4", 0, 3, 0, 255, true);
			ConfigurationDriverHelper.AddIntProprety(driver, 0xC5, "задержка включения выхода 5, с", "AU_Delay", 0, 60, 0, 255, true);

			AddRegime(driver, 0xBB, "логика работы выхода 1", "1");
			AddRegime(driver, 0xBC, "логика работы выхода 2", "3");
			AddRegime(driver, 0xBD, "логика работы выхода 3", "4");
			AddRegime(driver, 0xBE, "логика работы выхода 4", "2");
			AddRegime(driver, 0xBF, "логика работы выхода 5", "5");

			AddLogic(driver, 0xBB, "режим работы выхода 1", "2");
			AddLogic(driver, 0xBC, "режим работы выхода 2", "6");
			AddLogic(driver, 0xBD, "режим работы выхода 3", "6");
			AddLogic(driver, 0xBE, "режим работы выхода 4", "6");
			AddLogic(driver, 0xBF, "режим работы выхода 5", "10");

			ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Приоритет запуска", 0,
				"происходит отмена задержки запуска при нарушении датчика «Двери-окна» и рестарт после восстановления датчика «Двери-окна»",
				"не происходит отмена задержки запуска при нарушении датчика «Двери-окна»", 1, 0, 2, true, false, "1");

			ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Блокировка выключения режима «Автоматика включена» при неисправности", 2,
				"отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»",
				"не отключается при неисправности источника питания прибора, при неисправности ШС, при нарушении датчика «Двери-окна»", 1, 2, 4, true, false, "1");

			ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Восстановление режима «Автоматика включена»", 4,
				"восстанавливается после восстановления датчика «Двери-окна»",
				"не восстанавливается после восстановления  датчика «Двери-окна», восстановление возможно по протоколу RSR", 1, 4, 6, true, false, "2");

			//ConfigurationDriverHelper.AddPlainEnumProprety(driver, 0xC6, "Состояние  режима «Автоматика включена» после включения питания", 6,
			//    "после включения питания  режим «Автоматика включена» включен",
			//    "после включения питания  режим «Автоматика включена» отключен", 1, 7, 8, true);

			var property1 = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x8C,
				Name = "Статус МПТ",
				Caption = "Статус МПТ",
				Default = "1",
				BitOffset = 6,
				UseMask = true
			};
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведущий", 1);
			ConfigurationDriverHelper.AddPropertyParameter(property1, "Ведомый", 2);
			driver.Properties.Add(property1);

			var eduProperty = new DriverProperty()
			{
				IsAUParameter = true,
				No = 0x87,
				Name = "Количество ЭДУ-ПТ",
				Caption = "Количество ЭДУ-ПТ",
				Default = "0",
				MinBit = 4,
				MaxBit = 7
			};

			var eduPropertyParameter1 = new DriverPropertyParameter()
			{
				Name = "0",
				Value = "0"
			};
			var eduPropertyParameter2 = new DriverPropertyParameter()
			{
				Name = "1",
				Value = "16"
			};
			var eduPropertyParameter3 = new DriverPropertyParameter()
			{
				Name = "2",
				Value = "32"
			};
			var eduPropertyParameter4 = new DriverPropertyParameter()
			{
				Name = "3",
				Value = "64"
			};
			var eduPropertyParameter5 = new DriverPropertyParameter()
			{
				Name = "4",
				Value = "128"
			};

			eduProperty.Parameters.Add(eduPropertyParameter1);
			eduProperty.Parameters.Add(eduPropertyParameter2);
			eduProperty.Parameters.Add(eduPropertyParameter3);
			eduProperty.Parameters.Add(eduPropertyParameter4);
			eduProperty.Parameters.Add(eduPropertyParameter5);
			driver.Properties.Add(eduProperty);
		}
 public DeviceCommandViewModel(Device device, DriverProperty driverProperty)
 {
     ExecuteCommand = new RelayCommand(OnExecute);
     Device = device;
     DriverProperty = driverProperty;
 }
예제 #29
0
 public BasePropertyViewModel(DriverProperty driverProperty, Device device)
 {
     _driverProperty = driverProperty;
     _device = device;
 }
예제 #30
0
		public static Driver Convert(Firesec.Models.Metadata.config coreDriversConfig, drvType innerDriver)
		{
			var driver = new Driver()
			{
				UID = new Guid(innerDriver.id),
				StringUID = innerDriver.id,
				Name = innerDriver.name,
				ShortName = innerDriver.shortName,
				HasAddress = innerDriver.ar_no_addr != "1",
				IsAutoCreate = innerDriver.acr_enabled == "1",
				MinAutoCreateAddress = int.Parse(innerDriver.acr_from),
				MaxAutoCreateAddress = int.Parse(innerDriver.acr_to),
				HasAddressMask = innerDriver.addrMask != null,
				IsAlternativeUSB = innerDriver.altIntf != null,
				ChildAddressMask = innerDriver.childAddrMask,
				IsZoneDevice = ((innerDriver.minZoneCardinality == "0") && (innerDriver.maxZoneCardinality == "0")) == false,
				IsDeviceOnShleif = innerDriver.addrMask != null && (innerDriver.addrMask == "[8(1)-15(2)];[0(1)-7(255)]" || innerDriver.addrMask == "[0(1)-8(30)]")
			};

			var driverData = DriversHelper.DriverDataList.FirstOrDefault(x => x.DriverId == innerDriver.id && x.IgnoreLevel < 2);
			if (driverData != null)
				driver.DriverType = driverData.DriverType;

			if (innerDriver.options != null)
			{
				driver.DisableAutoCreateChildren = innerDriver.options.Contains("DisableAutoCreateChildren");
				driver.IsZoneLogicDevice = innerDriver.options.Contains("ExtendedZoneLogic");
				driver.CanDisable = innerDriver.options.Contains("Ignorable");
				driver.IsPlaceable = innerDriver.options.Contains("Placeable") && driver.DriverType != DriverType.Computer;
				driver.IsOutDevice = innerDriver.options.Contains("OutDevice");
				driver.IgnoreInZoneState = innerDriver.options.Contains("IgnoreInZoneState");
				driver.IsNotValidateZoneAndChildren = innerDriver.options.Contains("NotValidateZoneAndChildren");
				driver.IsSingleInParent = innerDriver.options.Contains("Single");
				driver.IsSingleInZone = innerDriver.options.Contains("SingleInZone");
				driver.CanMonitoringDisable = innerDriver.options.Contains("CannotDisable") == false;

				driver.CanWriteDatabase = innerDriver.options.Contains("DeviceDatabaseWrite");
				driver.CanReadDatabase = innerDriver.options.Contains("DeviceDatabaseRead");
				driver.CanReadJournal = innerDriver.options.Contains("EventSource")
					&& driver.DriverType != DriverType.MS_1
					&& driver.DriverType != DriverType.MS_2
					&& driver.DriverType != DriverType.IndicationBlock
					&& driver.DriverType != DriverType.MS_3
					&& driver.DriverType != DriverType.MS_4
					&& driver.DriverType != DriverType.PDU
					&& driver.DriverType != DriverType.PDU_PT
					&& driver.DriverType != DriverType.UOO_TL;
				driver.CanSynchonize = innerDriver.options.Contains("HasTimer");
				driver.CanReboot = innerDriver.options.Contains("RemoteReload");
				driver.CanGetDescription = innerDriver.options.Contains("DescriptionString");
				driver.CanSetPassword = innerDriver.options.Contains("PasswordManagement");
				driver.CanUpdateSoft = innerDriver.options.Contains("SoftUpdates");
				driver.CanExecuteCustomAdminFunctions = innerDriver.options.Contains("CustomIOCTLFunctions");
			}
			if (driver.DriverType == DriverType.Exit)
				driver.IsPlaceable = false;

			var metadataClass = [email protected](x => x.clsid == innerDriver.clsid);
			if (metadataClass != null)
			{
				driver.DeviceClassName = metadataClass.param.FirstOrDefault(x => x.name == "DeviceClassName").value;
			}
            

			driver.CanEditAddress = true;
			if (innerDriver.ar_no_addr != null)
			{
				if (innerDriver.ar_no_addr == "1")
					driver.CanEditAddress = false;

				if (innerDriver.acr_enabled == "1")
					driver.CanEditAddress = false;
			}

			driver.ShleifCount = 0;
			if (innerDriver.childAddrMask != null)
			{
				switch (innerDriver.childAddrMask)
				{
					case "[8(1)-15(2)];[0(1)-7(255)]":
						driver.ShleifCount = 2;
						break;

					case "[8(1)-15(4)];[0(1)-7(255)]":
						driver.ShleifCount = 4;
						break;

					case "[8(1)-15(10)];[0(1)-7(255)]":
						driver.ShleifCount = 10;
						break;
				}
			}
			if (driver.DriverType == DriverType.BUNS)
				driver.ShleifCount = 2;
			if (driver.DriverType == DriverType.USB_BUNS)
				driver.ShleifCount = 2;

			driver.HasShleif = driver.ShleifCount == 0 ? false : true;

			if (innerDriver.name == "Насосная Станция")
				driver.UseParentAddressSystem = false;
			else
				driver.UseParentAddressSystem = innerDriver.options != null && innerDriver.options.Contains("UseParentAddressSystem");

			driver.IsChildAddressReservedRange = innerDriver.res_addr != null;
			driver.ChildAddressReserveRangeCount = driver.IsChildAddressReservedRange ? int.Parse(innerDriver.res_addr) : 0;

			if (innerDriver.addrMask == "[0(1)-8(8)]")
				driver.IsRangeEnabled = true;
			else
				driver.IsRangeEnabled = innerDriver.ar_enabled == "1";

			if (innerDriver.addrMask == "[0(1)-8(8)]")
				driver.MinAddress = 1;
			else
				driver.MinAddress = int.Parse(innerDriver.ar_from);

			if (innerDriver.addrMask == "[0(1)-8(8)]")
				driver.MaxAddress = 8;
			else
				driver.MaxAddress = int.Parse(innerDriver.ar_to);

			driver.IsBUtton = false;
			switch (driver.DriverType)
			{
				case DriverType.StopButton:
				case DriverType.StartButton:
				case DriverType.AutomaticButton:
				case DriverType.ShuzOffButton:
				case DriverType.ShuzOnButton:
				case DriverType.ShuzUnblockButton:
					driver.IsBUtton = true;
					break;
			}

			driver.Category = (DeviceCategoryType)int.Parse(innerDriver.cat);
			driver.CategoryName = driver.Category.ToDescription();

			driver.DeviceType = DeviceType.FireSecurity;
			if (innerDriver.options != null)
			{
				if (innerDriver.options.Contains("FireOnly"))
					driver.DeviceType = DeviceType.Fire;

				if (innerDriver.options.Contains("SecOnly"))
					driver.DeviceType = DeviceType.Sequrity;

				if (innerDriver.options.Contains("TechOnly"))
					driver.DeviceType = DeviceType.Technoligical;
			}
			driver.DeviceTypeName = driver.DeviceType.ToDescription();

			var driverdata = DriversHelper.DriverDataList.FirstOrDefault(x => (x.DriverId == innerDriver.id));
			if (driverdata != null)
			{
				driver.IsIgnore = driverdata.IgnoreLevel > 1;
				driver.IsAssadIgnore = driverdata.IgnoreLevel > 0;
			}
			else
			{
				return null;
			}

			var allChildren = new List<drvType>();
			foreach (var childDriver in coreDriversConfig.drv)
			{
				var childClass = [email protected](x => x.clsid == childDriver.clsid);
				if (childClass != null && childClass.parent != null && childClass.parent.Any(x => x.clsid == innerDriver.clsid))
				{
					if (childDriver.lim_parent != null && childDriver.lim_parent != innerDriver.id)
						continue;

					allChildren.Add(childDriver);
				}
			}
			try
			{
				driver.Children = new List<Guid>(
					from drvType childInnerDriver in allChildren
					where (DriversHelper.DriverDataList.FirstOrDefault(x => x.DriverId == childInnerDriver.id) != null &&
					DriversHelper.DriverDataList.FirstOrDefault(x => x.DriverId == childInnerDriver.id).IgnoreLevel == 0)
					select new Guid(childInnerDriver.id));
			}
			catch (Exception e)
			{
				Logger.Error(e);
			}

			driver.AvaliableChildren = new List<Guid>(
				from drvType childInnerDriver in allChildren
				where childInnerDriver.acr_enabled != "1"
				select new Guid(childInnerDriver.id));
			if (driver.DisableAutoCreateChildren)
			{
				driver.AutoCreateChildren = new List<Guid>();
			}
			else
			{
				driver.AutoCreateChildren = new List<Guid>(
				from drvType childInnerDriver in allChildren
				where childInnerDriver.acr_enabled == "1"
				select new Guid(childInnerDriver.id));
			}

			driver.CanAddChildren = driver.AvaliableChildren.Count > 0;

			if (innerDriver.child_id != null)
			{
				driver.AutoChild = new Guid(innerDriver.child_id);
				driver.AutoChildCount = int.Parse(innerDriver.child_count);
			}

			driver.CanAutoDetect = allChildren.Any(x => (x.options != null) && (x.options.Contains("CanAutoDetectInstances")));

			driver.Properties = new List<DriverProperty>();
			if (innerDriver.propInfo != null && driver.DriverType != DriverType.PumpStation)
			{
				foreach (var internalProperty in innerDriver.propInfo)
				{
					if ((internalProperty.hidden == "1") && (driver.DriverType != DriverType.UOO_TL))
						continue;
					if (internalProperty.caption == "Заводской номер" || internalProperty.caption == "Версия микропрограммы")
						continue;
					if (internalProperty.name.StartsWith("Config$"))
						continue;
					if (internalProperty.name == "DeviceCountSecDev")
						continue;

					var driverProperty = new DriverProperty()
					{
						Name = internalProperty.name,
						Caption = internalProperty.caption,
						ToolTip = internalProperty.hint,
						Default = internalProperty.@default,
						Visible = internalProperty.hidden == "0" && internalProperty.showOnlyInState == "0",
						IsHidden = internalProperty.hidden == "1",
						BlockName = internalProperty.blockName
					};

					if (internalProperty.name.StartsWith("Control$"))
					{
						//driverProperty.Name = internalProperty.name.Replace("Control$", "");
						driverProperty.IsControl = true;
					}

					driverProperty.Parameters = new List<DriverPropertyParameter>();
					if (internalProperty.param != null)
					{
						foreach (var firesecParameter in internalProperty.param)
						{
							driverProperty.Parameters.Add(new DriverPropertyParameter()
							{
								Name = firesecParameter.name,
								Value = firesecParameter.value
							});
						}
					}

					if (internalProperty.param != null)
					{
						driverProperty.DriverPropertyType = DriverPropertyTypeEnum.EnumType;
					}
					else
					{
						switch (internalProperty.type)
						{
							case "String":
								driverProperty.DriverPropertyType = DriverPropertyTypeEnum.StringType;
								break;

							case "Int":
							case "Double":
								driverProperty.DriverPropertyType = DriverPropertyTypeEnum.IntType;
								break;

							case "Byte":
								driverProperty.DriverPropertyType = DriverPropertyTypeEnum.ByteType;
								break;

							case "Bool":
								driverProperty.DriverPropertyType = DriverPropertyTypeEnum.BoolType;
								break;

							case "Empty":
								driverProperty.DriverPropertyType = DriverPropertyTypeEnum.Empty;
								break;

							default:
								continue;
						}
					}
					driver.Properties.Add(driverProperty);
				}
			}

			driver.Parameters = new List<Parameter>();
			if (innerDriver.paramInfo != null)
			{
				foreach (var innerParameter in innerDriver.paramInfo)
				{
					driver.Parameters.Add(new Parameter()
					{
						Name = innerParameter.name,
						Caption = innerParameter.caption,
						//Visible = innerParameter.hidden == "0" && innerParameter.showOnlyInState == "1"
                        Visible = innerParameter.showOnlyInState == "1"
					});
				}
			}

			driver.States = new List<DriverState>();
			if (innerDriver.state != null)
			{
				var codes = new HashSet<string>();
				foreach (var innerState in innerDriver.state)
				{
					if (codes.Add(innerState.code) == false)
					{
						innerState.code += "_" + Guid.NewGuid().ToString();
					}
					if (innerState.name == null)
						continue;
					if (innerState.code == null)
						continue;
					driver.States.Add(new DriverState()
					{
						Id = innerState.id,
						Name = innerState.name,
						AffectChildren = innerState.affectChildren == "1" ? true : false,
						AffectParent = innerState.AffectedParent == "1" ? true : false,
						StateType = (StateType)int.Parse(innerState.@class),
						IsManualReset = innerState.manualReset == "1" ? true : false,
						CanResetOnPanel = innerState.CanResetOnPanel == "1" ? true : false,
						//IsAutomatic = innerState.type == "Auto" ? true : false,
						IsAutomatic = (innerState.code.Contains("AutoOff") || innerState.code.Contains("Auto_Off") || innerState.code.Contains("Auto_off")),
						Code = innerState.code
					});
				}
			}
			return driver;
		}