override public bool ReadConfiguration(GKDevice mirrorDevice, Guid clientUID) { MirrorDevice = (GKDevice)mirrorDevice.Clone(); MirrorDevice.Children = new List<GKDevice>(); var progressCallback = GKProcessorManager.StartProgress("Чтение конфигурации " + mirrorDevice.PresentationName, "Проверка связи", 2, true, GKProgressClientType.Administrator); var result = DeviceBytesHelper.Ping(mirrorDevice); if (result.HasError) { Error = "Устройство " + mirrorDevice.PresentationName + " недоступно"; return false; } DeviceConfiguration = new GKDeviceConfiguration { RootDevice = MirrorDevice }; GKProcessorManager.DoProgress("Перевод ПМФ в технологический режим", progressCallback); if (!DeviceBytesHelper.GoToTechnologicalRegime(mirrorDevice, progressCallback, clientUID)) { Error = "Не удалось перевести " + mirrorDevice.PresentationName + " в технологический режим"; GKProcessorManager.StopProgress(progressCallback); return false; } ReadConfiguration(mirrorDevice); GKProcessorManager.DoProgress("Перевод ПМФ в рабочий режим", progressCallback); if (!DeviceBytesHelper.GoToWorkingRegime(mirrorDevice, progressCallback, clientUID)) { Error = "Не удалось перевести " + mirrorDevice.PresentationName + " в рабочий режим в заданное время"; } GKProcessorManager.StopProgress(progressCallback); return Error == null; }
override public bool ReadConfiguration(GKDevice kauDevice, Guid clientUID) { KauDevice = (GKDevice)kauDevice.Clone(); KauDevice.Children = new List<GKDevice>(); descriptorAddresses = new List<int>(); for (int i = 0; i < 8; i++) { var shleif = new GKDevice(); shleif.Driver = GKManager.Drivers.FirstOrDefault(x => x.DriverType == GKDriverType.RSR2_KAU_Shleif); shleif.DriverUID = shleif.Driver.UID; shleif.IntAddress = (byte)(i + 1); KauDevice.Children.Add(shleif); } DeviceConfiguration = new GKDeviceConfiguration { RootDevice = KauDevice }; var progressCallback = GKProcessorManager.StartProgress("Чтение конфигурации " + kauDevice.PresentationName, "", descriptorAddresses.Count + 2, true, GKProgressClientType.Administrator, clientUID); GKProcessorManager.DoProgress("Перевод КАУ в технологический режим", progressCallback); if (!DeviceBytesHelper.GoToTechnologicalRegime(kauDevice, progressCallback, clientUID)) { Error = "Не удалось перевести КАУ в технологический режим"; return false; } GKProcessorManager.DoProgress("Получение дескрипторов устройств", progressCallback); if (GetDescriptorAddresses(kauDevice)) { progressCallback.StepCount = descriptorAddresses.Count + 1; for (int i = 1; i < descriptorAddresses.Count; i++) { if (progressCallback.IsCanceled) { Error = "Операция отменена"; break; } GKProcessorManager.DoProgress("Чтение базы данных объектов. " + i + " из " + descriptorAddresses.Count, progressCallback); if (!GetDescriptorInfo(kauDevice, descriptorAddresses[i])) break; } } GKProcessorManager.DoProgress("Перевод КАУ в рабочий режим", progressCallback); DeviceBytesHelper.GoToWorkingRegime(kauDevice, progressCallback, clientUID); GKProcessorManager.StopProgress(progressCallback); return String.IsNullOrEmpty(Error); }