Пример #1
0
        private void DisconnectFromDevice()
        {
            if (IsUserWantToSaveDeviceConfiguration())
            {
                OperationTask nextDisconnectTask = new OperationTask
                {
                    OperationToExecute = WorkerTasks.Disconnect,
                    OperationArgument  = null
                };
                OperationTask writeTask = new OperationTask
                {
                    OperationToExecute = WorkerTasks.Writing,
                    OperationArgument  = nextDisconnectTask
                };
                ChannelReady = false;
                _worker.RunWorkerAsync(writeTask);
                return;
            }

            ReaderSaver.DisconnectFromDevice();
            СonnectionStatus      = "Отключено";
            OperationStatus       = "";
            PortIsOpen            = false;
            IsConfigurationLoaded = false;
            _deviceSnapshotBefore = null;
        }
Пример #2
0
        private void worker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            ChannelReady = true;
            if (e.Error != null)
            {
                OperationStatus = e.Error.Message;
            }
            else
            {
                if (((OperationResult)e.Result).OperationExecuted == WorkerTasks.Reading)
                {
                    if (((OperationResult)e.Result).OperationResultMessage.IndexOf("успешно") >= 0)
                    {
                        IsConfigurationLoaded = true;
                    }
                    Device.SlaveAddress = ReaderSaver.SlaveAddress;
                    //seialize loaded config for "is dirty" pattern
                    DeviceConfigurationChanged = false;

                    UpdateAllChildViewModelsProperties();
                }

                OperationStatus    = ((OperationResult)e.Result).OperationResultMessage;
                ProgressPercentage = 0;

                if (((OperationResult)e.Result).OperationExecuted == WorkerTasks.Writing)
                {
                    DeviceConfigurationChanged = false;
                    if (((OperationResult)e.Result).NextTask != null &&
                        ((OperationResult)e.Result).NextTask.OperationToExecute == WorkerTasks.Connect)
                    {
                        ConnectToDevice();
                        return;
                    }
                }

                if (((OperationResult)e.Result).NextTask != null)
                {
                    if (((OperationResult)e.Result).NextTask.OperationToExecute == WorkerTasks.Disconnect)
                    {
                        ReaderSaver.DisconnectFromDevice();
                        СonnectionStatus      = "Отключено";
                        OperationStatus       = "";
                        PortIsOpen            = false;
                        IsConfigurationLoaded = false;
                        _deviceSnapshotBefore = null;
                        return;
                    }
                    ChannelReady = false;
                    _worker.RunWorkerAsync(((OperationResult)e.Result).NextTask);
                }
            }
        }