BaseMainPageViewModel.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Shaker.Models;
  2. using System.Collections.Generic;
  3. namespace ShakerApp.ViewModels
  4. {
  5. internal abstract class BaseMainPageViewModel<TModel>:DisplayViewModelBase<TModel>,IMainPageViewModel where TModel:IModel
  6. {
  7. public const string THDData = "THDData";
  8. public const string TimeDomainData = "TimeDomainData";
  9. public abstract MainPageType PageType { get; }
  10. public virtual bool Start() { return true; }
  11. public virtual void Stop() { }
  12. public virtual void SaveTestData(TDMS.ITDMSFile? file)
  13. {
  14. if (file == null) return;
  15. var group = file.Contains(TimeDomainData) ? file[TimeDomainData] : file.AddGroup(TimeDomainData);
  16. if (group == null) return;
  17. for (int i = 0; i < ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs.Count; i++)
  18. {
  19. bool exit = group.Contains(ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Name);
  20. var ch = exit ? group[ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Name] : group.AddChannel(TDMS.Common.TDMSDataType.Double, ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Name, ShakerConfigViewModel.Instance.Model.AnalogSignalConfigs[i].Unit);
  21. ch?.AppendData(ShakerDataViewModel.Instance.GetAnalogRawData(i));
  22. }
  23. group = file.Contains(THDData) ? file[THDData] : file.AddGroup(THDData);
  24. if (group == null) return;
  25. for (int i = 0; i < ShakerDataViewModel.Instance.AllowTHDChannels.Count; i++)
  26. {
  27. var ch = group.Contains(ShakerDataViewModel.Instance.AllowTHDChannels[i]) ? group[ShakerDataViewModel.Instance.AllowTHDChannels[i]] : group.AddChannel(TDMS.Common.TDMSDataType.Float, ShakerDataViewModel.Instance.AllowTHDChannels[i], "%");
  28. if (ch == null) continue;
  29. var statistics = ShakerDataViewModel.Instance.GetStatistics(ch.Name);
  30. if (statistics == null) continue;
  31. ch.AppendData(statistics.THD);
  32. }
  33. if (MainPageViewModel.Instance.MainPage is SineMainPageViewModel sine)
  34. {
  35. var ch = group.Contains(nameof(SweepData.Frequency)) ? group[nameof(SweepData.Frequency)] : group.AddChannel(TDMS.Common.TDMSDataType.Double, nameof(SweepData.Frequency), "Hz");
  36. if (ch == null) return;
  37. ch.AppendData(sine.CurrentFrequency);
  38. if (SweepConfigViewModel.Instance.SignalType == SignalType.Sweep)
  39. {
  40. ch = group.Contains(nameof(SineMainPageViewModel.SweepIndex)) ? group[nameof(SineMainPageViewModel.SweepIndex)] : group.AddChannel(TDMS.Common.TDMSDataType.Int32, nameof(SineMainPageViewModel.SweepIndex), "");
  41. if (ch == null) return;
  42. ch.AppendData((int)sine.SweepIndex);
  43. }
  44. }
  45. }
  46. public virtual void SaveTdmsConfig(TDMS.ITDMSFile? config)
  47. {
  48. ShakerConfigViewModel.Instance.SaveTdmsConfig(config);
  49. }
  50. public virtual void InitUI()
  51. {
  52. }
  53. public virtual void UpdateData(List<IResultDataModel> model)
  54. {
  55. }
  56. }
  57. }