private void ParameterUpdate(MessageUpdater.UpdateTypes type, char address, object data) { switch (type) { case MessageUpdater.UpdateTypes.DeviceInfo: { DeviceID info = data as DeviceID; if ((info != null) && _deviceViewModels.ContainsKey(address)) { _dispatcher.BeginInvoke(() => _deviceViewModels[address].Description = info.Description()); } } break; case MessageUpdater.UpdateTypes.MotorInfo: { MotorInfo info = data as MotorInfo; if ((info != null) && _deviceViewModels.ContainsKey(address)) { ELLMotorViewModel first = _deviceViewModels[address].Motors.FirstOrDefault(motor => motor.MotorID == info.MotorID); if (first != null) { _dispatcher.BeginInvoke(() => first.UpdateInfo(info)); } } } break; case MessageUpdater.UpdateTypes.Status: { DeviceStatus status = data as DeviceStatus; if (status != null) { switch (status.Status) { case DeviceStatus.DeviceStatusValues.OK: break; case DeviceStatus.DeviceStatusValues.Busy: break; default: MessageBox.Show(string.Format("Device error: {0}", status.Status.GetStringValue()), "Device Error", MessageBoxButton.OK, MessageBoxImage.Error); break; } } } break; case MessageUpdater.UpdateTypes.Position: { try { decimal position = (decimal)data; if (_deviceViewModels.ContainsKey(address)) { _dispatcher.BeginInvoke(() => _deviceViewModels[address].UpdatePosition(position)); } } catch (Exception e) { MessageBox.Show(string.Format("Device error: status {0}", e.Message), "Device Error", MessageBoxButton.OK, MessageBoxImage.Error); } } break; case MessageUpdater.UpdateTypes.PolarizerPositions: { try { ELLPaddlePolariser.PolarizerPaddlePositions positions = (ELLPaddlePolariser.PolarizerPaddlePositions)data; if (_deviceViewModels.ContainsKey(address)) { ELLPaddlePolariserViewModel paddleViewModel = _deviceViewModels[address] as ELLPaddlePolariserViewModel; if (paddleViewModel != null) { _dispatcher.BeginInvoke(() => paddleViewModel.UpdatePaddlePosition(positions)); } } } catch (Exception e) { MessageBox.Show(string.Format("Device error: status {0}", e.Message), "Device Error", MessageBoxButton.OK, MessageBoxImage.Error); } } break; case MessageUpdater.UpdateTypes.PaddlePosition: { try { ELLPaddlePolariser.PaddlePosition position = (ELLPaddlePolariser.PaddlePosition)data; if (_deviceViewModels.ContainsKey(address)) { ELLPaddlePolariserViewModel paddleViewModel = _deviceViewModels[address] as ELLPaddlePolariserViewModel; if (paddleViewModel != null) { _dispatcher.BeginInvoke(() => paddleViewModel.UpdatePaddlePosition(position)); } } } catch (Exception e) { MessageBox.Show(string.Format("Device error: status {0}", e.Message), "Device Error", MessageBoxButton.OK, MessageBoxImage.Error); } } break; case MessageUpdater.UpdateTypes.HomeOffset: { try { decimal homeOffset = (decimal)data; if (_deviceViewModels.ContainsKey(address)) { _dispatcher.BeginInvoke(() => _deviceViewModels[address].UpdateHomeOffset(homeOffset)); } } catch (Exception e) { MessageBox.Show(string.Format("Device error: status {0}", e.Message), "Device Error", MessageBoxButton.OK, MessageBoxImage.Error); } } break; case MessageUpdater.UpdateTypes.JogstepSize: { try { decimal jogStep = (decimal)data; if (_deviceViewModels.ContainsKey(address)) { _dispatcher.BeginInvoke(() => _deviceViewModels[address].UpdateJogstepSize(jogStep)); } } catch (Exception e) { MessageBox.Show(string.Format("Device error: status {0}", e.Message), "Device Error", MessageBoxButton.OK, MessageBoxImage.Error); } } break; } }
/// <summary> Updates the parameter. </summary> /// <param name="updateType"> Type of the update. </param> /// <param name="address"> The device address. </param> /// <param name="data"> The data. </param> protected void UpdateParameter(MessageUpdater.UpdateTypes updateType, char address, object data) { _messageUpdater?.UpdateParameter(updateType, address, data); }