public AinTelemetryViewModel(ICommonAinTelemetryVm commonAinTelemetryVm, byte zeroBasedAinNumber, ICommandSenderHost commandSenderHost, ILogger logger, IUserInterfaceRoot userInterfaceRoot) { _commonAinTelemetryVm = commonAinTelemetryVm; _zeroBasedAinNumber = zeroBasedAinNumber; _commandSenderHost = commandSenderHost; _logger = logger; _userInterfaceRoot = userInterfaceRoot; _telemetry = null; _syncCancel = new object(); _cancel = true; }
public void InCycleAction() { var waiter = new ManualResetEvent(false); var cmd = new ReadAinTelemetryCommand(_zeroBasedAinNumber); _commandSenderHost.Sender.SendCommandAsync(0x01, cmd, TimeSpan.FromSeconds(0.1), 2, (exception, bytes) => { IAinTelemetry ainTelemetry = null; try { if (exception != null) { throw new Exception("Произошла ошибка во время обмена", exception); } var result = cmd.GetResult(bytes); ainTelemetry = result; } catch (Exception ex) { // TODO: log exception, null values //_logger.Log("Ошибка: " + ex.Message); //Console.WriteLine(ex); } finally { _userInterfaceRoot.Notifier.Notify(() => { //Console.WriteLine("UserInterface thread begin action ============================="); //Console.WriteLine("AIN viewModel zbNumber: " + _zeroBasedAinNumber); UpdateTelemetry(ainTelemetry); if (_zeroBasedAinNumber == 0) { _commonAinTelemetryVm.UpdateAinStatuses(ainTelemetry?.Status, null, null); } //Console.WriteLine("UserInterface thread end action ==============================="); }); waiter.Set(); } }); waiter.WaitOne(); waiter.Reset(); }
// TODO: other props public void UpdateTelemetry(IAinTelemetry telemetry) { _telemetry = telemetry; RaisePropertyChanged(() => RotationFriquencyCalculated); RaisePropertyChanged(() => PwmModulationCoefficient); RaisePropertyChanged(() => MomentumCurrentSetting); RaisePropertyChanged(() => RadiatorTemperature); RaisePropertyChanged(() => DcBusVoltage); RaisePropertyChanged(() => AllPhasesCurrentAmplitudeEnvelopeCurve); RaisePropertyChanged(() => RegulatorCurrentDoutput); RaisePropertyChanged(() => RegulatorCurrentQoutput); RaisePropertyChanged(() => FriquencyIntensitySetpointOutput); RaisePropertyChanged(() => FlowSetting); RaisePropertyChanged(() => MeasuredMoment); RaisePropertyChanged(() => SpeedRegulatorOutputOrMomentSetting); RaisePropertyChanged(() => MeasuredFlow); RaisePropertyChanged(() => SettingExcitationCurrent); RaisePropertyChanged(() => RunModeBits12); RaisePropertyChanged(() => ResetZiToZero); RaisePropertyChanged(() => ResetFault); RaisePropertyChanged(() => LimitRegulatorId); RaisePropertyChanged(() => LimitRegulatorIq); RaisePropertyChanged(() => LimitRegulatorSpeed); RaisePropertyChanged(() => LimitRegulatorFlow); RaisePropertyChanged(() => MomentumSetterSelector); RaisePropertyChanged(() => Driver1HasErrors); RaisePropertyChanged(() => Driver2HasErrors); RaisePropertyChanged(() => Driver3HasErrors); RaisePropertyChanged(() => Driver4HasErrors); RaisePropertyChanged(() => Driver5HasErrors); RaisePropertyChanged(() => Driver6HasErrors); RaisePropertyChanged(() => SomePhaseMaximumAlowedCurrentExcess); RaisePropertyChanged(() => RadiatorKeysTemperatureRiseTo85DegreesExcess); RaisePropertyChanged(() => AllowedDcVoltageExcess); RaisePropertyChanged(() => NoLinkOnSyncLine); RaisePropertyChanged(() => ExternalTemperatureLimitExcess); RaisePropertyChanged(() => RotationFriquecnySensorFault); RaisePropertyChanged(() => EepromI2CErrorDefaultParamsAreLoaded); RaisePropertyChanged(() => EepromCrcErrorDefaultParamsAreLoaded); RaisePropertyChanged(() => SomeSlaveFault); RaisePropertyChanged(() => ConfigChangeDuringParallelWorkConfirmationNeed); RaisePropertyChanged(() => RotationFriquencyMeasuredDcv); RaisePropertyChanged(() => AfterFilterSpeedControllerFeedbackFriquency); RaisePropertyChanged(() => AfterFilterFimag); RaisePropertyChanged(() => CurrentDpartMeasured); RaisePropertyChanged(() => CurrentQpartMeasured); RaisePropertyChanged(() => AfterFilterFset); RaisePropertyChanged(() => AfterFilterTorq); RaisePropertyChanged(() => ExternalTemperature); RaisePropertyChanged(() => DCurrentRegulatorProportionalPart); RaisePropertyChanged(() => QcurrentRegulatorProportionalPart); RaisePropertyChanged(() => SpeedRegulatorProportionalPart); RaisePropertyChanged(() => FlowRegulatorProportionalPart); RaisePropertyChanged(() => CalculatorDflowRegulatorOutput); RaisePropertyChanged(() => CalculatorQflowRegulatorOutput); RaisePropertyChanged(() => Aux1); RaisePropertyChanged(() => Aux2); RaisePropertyChanged(() => Pver); RaisePropertyChanged(() => PvDate); //EngineState? commonEngineState = _commonAinTelemetryVm.UpdateCommonEngineState(_telemetry?.CommonEngineState); _commonAinTelemetryVm.UpdateCommonFaultState(_telemetry?.CommonFaultState); _commonAinTelemetryVm.UpdateAinsLinkState( _telemetry?.Ain1LinkFault, _telemetry?.Ain2LinkFault, _telemetry?.Ain3LinkFault); }