protected void Save(string value, bool useSaveService = true) { if (useSaveService) { ServiceFactory.SaveService.GKChanged = true; } var systemProperty = Device.Properties.FirstOrDefault(x => x.Name == DriverProperty.Name); if (systemProperty != null) { systemProperty.Name = DriverProperty.Name; systemProperty.StringValue = value; } else { var newProperty = new XProperty() { Name = DriverProperty.Name, StringValue = value }; Device.Properties.Add(newProperty); } UpdateDeviceParameterMissmatchType(); Device.OnChanged(); }
protected void SaveStringValue(string value) { var property = _xDevice.Properties.FirstOrDefault(x => x.Name == _xDriverProperty.Name); if (property == null) { property = new XProperty() { Name = _xDriverProperty.Name }; _xDevice.Properties.Add(property); } property.StringValue = value; ServiceFactory.SaveService.XDevicesChanged = true; }
void OnCopy() { DriverCopy = Device.Driver; PropertiesCopy = new List<XProperty>(); foreach (var property in Device.Properties) { var driverProperty = Device.Driver.Properties.FirstOrDefault(x => x.Name == property.Name); if (driverProperty != null && driverProperty.IsAUParameter) { var propertyCopy = new XProperty() { StringValue = property.StringValue, Name = property.Name, Value = property.Value, DriverProperty = driverProperty }; PropertiesCopy.Add(propertyCopy); } } }
public static void InitializeMissingDefaultProperties() { foreach (var device in DeviceConfiguration.Devices) { foreach (var driverProperty in device.Driver.Properties) { if (device.Properties.Any(x => x.Name == driverProperty.Name) == false) { var property = new XProperty() { Name = driverProperty.Name, Value = driverProperty.Default }; device.Properties.Add(property); } } } }
static void ReadDevices(IEnumerable<XDevice> devices) { var errorLog = ""; DescriptorsManager.Create(); var i = 0; LoadingService.AddCount(devices.Count()); foreach (var device in devices) { if (LoadingService.IsCanceled) break; i++; LoadingService.DoStep("Запрос параметров объекта " + i); var result = FiresecManager.FiresecService.GKGetSingleParameter(device); if (!result.HasError) { foreach (var property in result.Result) { var deviceProperty = device.DeviceProperties.FirstOrDefault(x => x.Name == property.Name); if (deviceProperty == null) { deviceProperty = new XProperty() { Name = property.Name, DriverProperty = device.Driver.Properties.FirstOrDefault(x => x.Name == property.Name) }; device.DeviceProperties.Add(deviceProperty); } deviceProperty.Value = property.Value; deviceProperty.StringValue = property.StringValue; } device.OnAUParametersChanged(); } else { errorLog += "\n" + device.PresentationName; } } LoadingService.Close(); if (errorLog != "") MessageBoxService.ShowError("Ошибка при получении параметров следующих устройств:" + errorLog); }
static bool IsPropertyValid(XProperty property, XDriverProperty driverProperty) { int value; return driverProperty != null && driverProperty.IsAUParameter && driverProperty.DriverPropertyType == XDriverPropertyTypeEnum.IntType && (!int.TryParse(Convert.ToString(property.Value), out value) || (value < driverProperty.Min || value > driverProperty.Max)); }
public void InitializeDefaultProperties() { if (Driver != null) foreach (var driverProperty in Driver.Properties) { if (Properties.Any(x => x.Name == driverProperty.Name) == false) { var property = new XProperty() { Name = driverProperty.Name, Value = driverProperty.Default }; Properties.Add(property); } } }
bool Parse(List<byte> bytes, int descriptorNo) { var internalType = BytesHelper.SubstructShort(bytes, 0); var controllerAdress = BytesHelper.SubstructShort(bytes, 2); var adressOnController = BytesHelper.SubstructShort(bytes, 4); var physicalAdress = BytesHelper.SubstructShort(bytes, 6); if(internalType == 0) return true; var description = BytesHelper.BytesToStringDescription(bytes); var driver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == internalType); if (internalType == 0x70) { if (description[0] == 'П') driver = XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.FirePump); if (description[0] == 'Ж') driver = XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.JockeyPump); if (description[0] == 'Д') driver = XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.DrainagePump); } if (driver != null) { if (driver.DriverType == XDriverType.GK && descriptorNo > 1) { driver = XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.KAU); if (bytes[0x3a] == 1) { driver = XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.RSR2_KAU); } } if (driver.DriverType == XDriverType.GKIndicator && descriptorNo > 14) driver = XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.KAUIndicator); var shleifNo = (byte)(physicalAdress / 256) + 1; var device = new XDevice { Driver = driver, DriverUID = driver.UID, IntAddress = (byte)(physicalAdress % 256), }; if (driver.DriverType == XDriverType.GK) { device.Properties.Add(new XProperty{Name = "IPAddress",StringValue = IpAddress}); ControllerDevices.Add(controllerAdress, device); DeviceConfiguration.RootDevice.Children.Add(device); GkDevice = device; } if (driver.IsKauOrRSR2Kau) { device.IntAddress = (byte)(controllerAdress % 256); var modeProperty = new XProperty { Name = "Mode", Value = (byte)(controllerAdress / 256) }; device.DeviceProperties.Add(modeProperty); ControllerDevices.Add(controllerAdress, device); GkDevice.Children.Add(device); for (int i = 0; i < 8; i++) { var shleif = new XDevice(); shleif.Driver = driver.DriverType == XDriverType.KAU ? XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.KAU_Shleif) : XManager.Drivers.FirstOrDefault(x => x.DriverType == XDriverType.RSR2_KAU_Shleif); shleif.DriverUID = shleif.Driver.UID; shleif.IntAddress = (byte)(i + 1); device.Children.Add(shleif); } } if (driver.DriverType != XDriverType.GK && !driver.IsKauOrRSR2Kau && driver.DriverType != XDriverType.System) { var controllerDevice = ControllerDevices.FirstOrDefault(x => x.Key == controllerAdress); if (controllerDevice.Value != null) { if(1 <= shleifNo && shleifNo <= 8 && physicalAdress != 0) { var shleif = controllerDevice.Value.Children.FirstOrDefault(x => (x.DriverType == XDriverType.KAU_Shleif || x.DriverType == XDriverType.RSR2_KAU_Shleif) && x.IntAddress == shleifNo); shleif.Children.Add(device); } else { if (controllerDevice.Value.Driver.DriverType == XDriverType.GK) device.IntAddress = (byte) (controllerDevice.Value.Children.Where(x => !x.Driver.HasAddress).Count() + 2); else device.IntAddress = (byte)(controllerDevice.Value.Children.Where(x => !x.Driver.HasAddress).Count() + 1); controllerDevice.Value.Children.Add(device); } } } return true; } if(internalType == 0x100 || internalType == 0x106) { var isPumpStation = false; ushort no; try { if (description[0] == '0') isPumpStation = true; no = (ushort)Int32.Parse(description.Substring(0, description.IndexOf("."))); description = description.Substring(description.IndexOf(".") + 1); } catch { Error = "Невозможно получить номер объекта с дескриптором " + descriptorNo; return false; } if (internalType == 0x100) { var zone = new XZone { Name = description, No = no, GkDatabaseParent = GkDevice }; DeviceConfiguration.Zones.Add(zone); return true; } if (internalType == 0x106) { if (isPumpStation) { var pumpStation = new XPumpStation() { Name = description, No = no, GkDatabaseParent = GkDevice }; DeviceConfiguration.PumpStations.Add(pumpStation); } else { var direction = new XDirection { Name = description, No = no, GkDatabaseParent = GkDevice }; DeviceConfiguration.Directions.Add(direction); } return true; } } return true; }
void Invalidate() { if (XManager.ParameterTemplates.Count == 0) { var parameterTemplate = new XParameterTemplate() { Name = "По умолчанию" }; XManager.ParameterTemplates.Add(parameterTemplate); } foreach (var parameterTemplate in XManager.ParameterTemplates) { foreach (var deviceParameterTemplate in parameterTemplate.DeviceParameterTemplates) { deviceParameterTemplate.XDevice.Driver = XManager.Drivers.FirstOrDefault(x => x.UID == deviceParameterTemplate.XDevice.DriverUID); } parameterTemplate.DeviceParameterTemplates.RemoveAll(x => x.XDevice.Driver == null); foreach (var driver in XManager.Drivers) { if (driver.Properties.Any(x => x.IsAUParameter)) { var deviceParameterTemplate = parameterTemplate.DeviceParameterTemplates.FirstOrDefault(x => x.XDevice.DriverUID == driver.UID); if (deviceParameterTemplate == null) { deviceParameterTemplate = new XDeviceParameterTemplate() { XDevice = new XDevice() { DriverUID = driver.UID, Driver = driver } }; parameterTemplate.DeviceParameterTemplates.Add(deviceParameterTemplate); } var properties = new List<XProperty>(); foreach (var driverProperty in driver.Properties) { if (driverProperty.IsAUParameter) { var property = deviceParameterTemplate.XDevice.Properties.FirstOrDefault(x => x.Name == driverProperty.Name); if (property == null || parameterTemplate.Name == "По умолчанию") { property = new XProperty() { Name = driverProperty.Name, Value = driverProperty.Default, DriverProperty = driverProperty }; deviceParameterTemplate.XDevice.Properties.Add(property); } property.DriverProperty = driverProperty; properties.Add(property); } } deviceParameterTemplate.XDevice.Properties = properties; } } } }