AOConfigViewModel.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using IViewModel;
  2. using IViewModel.ViewModels;
  3. using Shaker.Model;
  4. using Shaker.Models;
  5. using Shaker.Tools;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace Dynamicloadsimulationdevice.ViewModels
  12. {
  13. internal sealed class AOConfigViewModel:ViewModelBase<Shaker.Models.AOConfigModel>
  14. {
  15. private string unit=string.Empty;
  16. public AOConfigViewModel():base()
  17. {
  18. }
  19. public AOConfigViewModel(Shaker.Models.AOConfigModel model):base(model)
  20. {
  21. }
  22. public override void UpDateModel(AOConfigModel model)
  23. {
  24. Unit = model.ChannelType.GetUnit();
  25. base.UpDateModel(model);
  26. }
  27. /// <summary>
  28. /// 极性
  29. /// </summary>
  30. [PropertyAssociation(nameof(Model.Polarity))]
  31. public Shaker.Model.Polarity Polarity { get=> Model.Polarity; set=>SetProperty(ref Model.Polarity , value); }
  32. /// <summary>
  33. /// 开环
  34. /// </summary>
  35. [PropertyAssociation(nameof(Model.OpenLoop))]
  36. public bool OpenLoop { get => Model.OpenLoop;set=>SetProperty(ref Model.OpenLoop, value); }
  37. /// <summary>
  38. /// 开环驱动
  39. /// </summary>
  40. [PropertyAssociation(nameof(Model.OpenLoopDriver))]
  41. public double OpenLoopDriver { get=>Model.OpenLoopDriver; set=>SetProperty(ref Model.OpenLoopDriver, value); }
  42. /// <summary>
  43. /// 最大开环驱动
  44. /// </summary>
  45. [PropertyAssociation(nameof(Model.MaxOpenLoopDriver))]
  46. public double MaxOpenLoopDriver =>Model.MaxOpenLoopDriver;
  47. /// <summary>
  48. /// 最小开环驱动
  49. /// </summary>
  50. [PropertyAssociation(nameof(Model.MinOpenLoopDriver))]
  51. public double MinOpenLoopDriver =>Model.MinOpenLoopDriver;
  52. /// <summary>
  53. /// 通道序号
  54. /// </summary>
  55. [PropertyAssociation(nameof(Model.Channel))]
  56. public AOChannel Channel { get=>Model.Channel; set=>SetProperty(ref Model.Channel, value); }
  57. /// <summary>
  58. /// 偏置
  59. /// </summary>
  60. [PropertyAssociation(nameof(Model.Bias))]
  61. public double Bias { get=>Model.Bias; set=>SetProperty(ref Model.Bias, value); }
  62. /// <summary>
  63. /// 最大偏置
  64. /// </summary>
  65. [PropertyAssociation(nameof(Model.MaxBias))]
  66. public double MaxBias => Model.MaxBias;
  67. /// <summary>
  68. /// 最小偏置
  69. /// </summary>
  70. [PropertyAssociation(nameof(Model.MinBias))]
  71. public double MinBias => Model.MinBias;
  72. /// <summary>
  73. /// 通道类型
  74. /// </summary>
  75. [PropertyAssociation(nameof(Model.ChannelType))]
  76. public AOChannelType ChannelType => Model.ChannelType;
  77. /// <summary>
  78. /// 单位
  79. /// </summary>
  80. [PropertyAssociation(nameof(Model.ChannelType))]
  81. public string Unit { get => unit; private set =>SetProperty(ref unit , value); }
  82. [PropertyAssociation(nameof(ChannelType))]
  83. public bool CanOpenLoop => ChannelType != AOChannelType.Balancing;
  84. public override string ToString()
  85. {
  86. return CanOpenLoop ? (OpenLoop? $"{ChannelType} {Channel} {Polarity} {nameof(Bias)}:{Bias} {nameof(OpenLoop)}{OpenLoop}" :$"{ChannelType} {Channel} {Polarity} {nameof(Bias)}:{Bias}") : $"{ChannelType} {Channel}";
  87. }
  88. }
  89. }