private async Task CheckDevices() { if (_isInterrogationStopped) { return; } if (_devicesContainerService?.Creators != null) { foreach (IDeviceCreator creator in _devicesContainerService.Creators) { try { if (creator?.ConnectionState?.DefaultComPortConfiguration == null) { continue; } _modbusRtuConnection.ComPortConfiguration = creator.ConnectionState.DefaultComPortConfiguration; _modbusRtuConnection.SlaveId = SlaveId; System.Collections.Generic.List <string> ports = _modbusRtuConnection.GetAvailablePorts(); var device = creator.Create(); foreach (string port in ports) { _modbusRtuConnection.PortName = port; _comConnectionManager.SetComPortConfigurationByName( _modbusRtuConnection.ComPortConfiguration, port); if ((await _modbusRtuConnection.TryOpenConnectionAsync(null)).IsSuccess) { try { var res = await this._connectionService.CheckConnection(creator.ConnectionState, new DeviceContext(null, null, "test", new ConnectionContainer(this._modbusRtuConnection), device.DeviceSharedResources)); bool isMatches = res.IsSuccess; if (isMatches) { IDeviceDefinitionViewModel deviceDefinitionViewModel = _deviceDefinitionCreator(); creator.AvailableConnection = _modbusRtuConnection.Clone() as IDeviceConnection; deviceDefinitionViewModel.Model = creator; deviceDefinitionViewModel.ConnectionDescription = _modbusRtuConnection.PortName; DeviceDefinitionViewModels.Add(deviceDefinitionViewModel); } } finally { await Task.Run(() => { _modbusRtuConnection.CloseConnection(); }); } } } } finally { } } } }
private void OnOpenDeviceFromFileExecute() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = false; ofd.Filter = " JSON файл (*.json)|*.json" + "|Все файлы (*.*)|*.* "; ofd.CheckFileExists = true; if (ofd.ShowDialog() == true) { IDeviceCreator deviceCreator = _container.Resolve <IDeviceCreator>(); deviceCreator.DeviceDescriptionFilePath = ofd.FileName; deviceCreator.DeviceName = ofd.SafeFileName.Replace(".json", ""); IDeviceDefinitionViewModel deviceDefinition = _deviceDefinitionCreator(); deviceDefinition.Model = deviceCreator; SelectedDevice = deviceDefinition; } }
/// <summary> /// Инициализация при переходе на представление /// </summary> /// <param name="deviceDefinitionCreator"></param> internal void Initialize(Func <IDeviceDefinitionViewModel> deviceDefinitionCreator) { DeviceDefinitions.Clear(); // _devicesContainerService.LoadDevicesDefinitions(); if (_devicesContainerService.Creators == null) { return; } if (_devicesContainerService.Creators.Count == 0) { return; } foreach (IDeviceCreator creator in _devicesContainerService.Creators) { IDeviceDefinitionViewModel deviceDefinition = deviceDefinitionCreator(); deviceDefinition.Model = creator; DeviceDefinitions.Add(deviceDefinition); } }