Ejemplo n.º 1
0
        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
                    {
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
 /// <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);
     }
 }