SettingDialog.xaml.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using Panuon.WPF.UI;
  2. using SWRIS.Core;
  3. using SWRIS.Enums;
  4. using SWRIS.Models;
  5. using SWRIS.Models.ViewModel;
  6. using System;
  7. using System.Collections.ObjectModel;
  8. using System.IO.Ports;
  9. using System.Linq;
  10. using System.Windows.Markup;
  11. namespace SWRIS.Pages
  12. {
  13. /// <summary>
  14. /// SettingDialog.xaml 的交互逻辑
  15. /// </summary>
  16. public partial class SettingDialog : WindowX, IComponentConnector
  17. {
  18. public SettingViewModel SettingView { get; set; }
  19. public bool IsAutoStart { get; set; }
  20. public SettingDialog()
  21. {
  22. InitializeComponent();
  23. SettingView = new SettingViewModel
  24. {
  25. AppName = App.Config.AppName,
  26. Version = App.Config.Version,
  27. Copyright = App.Config.Copyright,
  28. Crane = App.Config.Crane,
  29. IpAddress = App.Config.IpAddress,
  30. Port = App.Config.Port,
  31. AlarmValidCount = App.Config.AlarmValidCount,
  32. DamageExtent = App.Config.DamageExtent,
  33. DataSaveDays = App.Config.DataSaveDays,
  34. ShowDebugMessage = App.Config.ShowDebugMessage,
  35. SpeedVariationThreshold = App.Config.SpeedVariationThreshold,
  36. SoundRiskLevel = (int)App.Config.SoundRiskLevel,
  37. CleanScheduledTime = App.Config.CleanScheduledTime,
  38. DamageNearPointCount = App.Config.DamageNearPointCount,
  39. Calibration = new CalibrationDataModel
  40. {
  41. ModuleType = (int)App.Config.Calibration.ModuleType,
  42. Limits = new ObservableCollection<LimitDataModel>(),
  43. Tcp = new TcpDataModel
  44. {
  45. IpAddress = App.Config.Calibration.Tcp.IpAddress,
  46. Port = App.Config.Calibration.Tcp.Port,
  47. Station = App.Config.Calibration.Tcp.Station
  48. },
  49. Serial = new SerialDataModel
  50. {
  51. PortName = App.Config.Calibration.Serial.PortName,
  52. BaudRate = App.Config.Calibration.Serial.BaudRate,
  53. DataBits = App.Config.Calibration.Serial.DataBits,
  54. Parity = App.Config.Calibration.Serial.Parity.ToString(),
  55. StopBits = (int)App.Config.Calibration.Serial.StopBits,
  56. Station = App.Config.Calibration.Serial.Station
  57. }
  58. }
  59. };
  60. foreach (var limit in App.Config.Calibration.Limits)
  61. {
  62. var limitModel = new LimitDataModel
  63. {
  64. Address = limit.Address,
  65. IsReverse = limit.IsReverse,
  66. Name = limit.Name,
  67. Position = limit.Position,
  68. IsEnable = limit.IsEnable,
  69. SwitchIndex = limit.SwitchIndex,
  70. RelatedRopes = App.Config.Equipments.Select(c => new RopeDataModel
  71. {
  72. RopeName = c.RopeName,
  73. RopeNumber = c.RopeNumber,
  74. IsSelected = limit.RelatedRopes.Contains(c.RopeNumber)
  75. }).ToList()
  76. };
  77. SettingView.Calibration.Limits.Add(limitModel);
  78. }
  79. DataContext = SettingView;
  80. }
  81. private void Save_Click(object sender, System.Windows.RoutedEventArgs e)
  82. {
  83. App.Config.Crane = SettingView.Crane;
  84. App.Config.IpAddress = SettingView.IpAddress;
  85. App.Config.Port = SettingView.Port;
  86. App.Config.CleanScheduledTime = SettingView.CleanScheduledTime;
  87. App.Config.DataSaveDays = SettingView.DataSaveDays;
  88. App.Config.SoundRiskLevel = (RiskLevel)SettingView.SoundRiskLevel;
  89. App.Config.SpeedVariationThreshold = SettingView.SpeedVariationThreshold;
  90. App.Config.DamageExtent = SettingView.DamageExtent;
  91. App.Config.AlarmValidCount = SettingView.AlarmValidCount;
  92. App.Config.Calibration.ModuleType = (ModuleType)SettingView.Calibration.ModuleType;
  93. if (SettingView.Calibration.ModuleType == (int)ModuleType.ModbusRtu)
  94. {
  95. App.Config.Calibration.Serial.PortName = SettingView.Calibration.Serial.PortName;
  96. App.Config.Calibration.Serial.BaudRate = SettingView.Calibration.Serial.BaudRate;
  97. App.Config.Calibration.Serial.DataBits = SettingView.Calibration.Serial.DataBits;
  98. App.Config.Calibration.Serial.Parity = (Parity)Enum.Parse(typeof(Parity), SettingView.Calibration.Serial.Parity);
  99. App.Config.Calibration.Serial.StopBits = (StopBits)SettingView.Calibration.Serial.StopBits;
  100. App.Config.Calibration.Serial.Station = SettingView.Calibration.Serial.Station;
  101. }
  102. else
  103. {
  104. App.Config.Calibration.Tcp.IpAddress = SettingView.Calibration.Tcp.IpAddress;
  105. App.Config.Calibration.Tcp.Port = SettingView.Calibration.Tcp.Port;
  106. App.Config.Calibration.Tcp.Station = SettingView.Calibration.Tcp.Station;
  107. }
  108. for (int i = 0; i < 2; i++)
  109. {
  110. var sourceLimit = SettingView.Calibration.Limits[i];
  111. var targetLimit = App.Config.Calibration.Limits[i];
  112. targetLimit.Name = sourceLimit.Name;
  113. targetLimit.Address = sourceLimit.Address;
  114. targetLimit.Position = sourceLimit.Position;
  115. targetLimit.IsEnable = sourceLimit.IsEnable;
  116. targetLimit.IsReverse = sourceLimit.IsReverse;
  117. targetLimit.SwitchIndex = sourceLimit.SwitchIndex;
  118. targetLimit.RelatedRopes = sourceLimit.RelatedRopes
  119. .Where(c => c.IsSelected)
  120. .Select(c => c.RopeNumber)
  121. .ToList();
  122. }
  123. if (ConfigHelper.Set(App.Config))
  124. {
  125. IsAutoStart = SettingView.IsAutoStart;
  126. DialogResult = true;
  127. }
  128. else
  129. {
  130. DialogResult = false;
  131. }
  132. }
  133. }
  134. }