CommonSocketDeviceSimulatorView.xaml.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using Aitex.Core.Utilities;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Navigation;
  15. using System.Windows.Shapes;
  16. namespace MECF.Framework.Simulator.Core.Commons
  17. {
  18. /// <summary>
  19. /// CommonSocketDeviceSimulatorView.xaml 的交互逻辑
  20. /// </summary>
  21. public partial class CommonSocketDeviceSimulatorView : UserControl
  22. {
  23. CommonSocketSimulatorViewModel _viewModel;
  24. public void Initialize(string deviceGroup, string deviceName, int defaultPort)
  25. {
  26. _viewModel = new CommonSocketSimulatorViewModel(deviceGroup, deviceName, defaultPort);
  27. _viewModel.SerialIOSimulator.SimulatorItemActived += SerialIOReader_SimulatorItemActived;
  28. this.DataContext = _viewModel;
  29. this.Loaded += SiasunPhoenixBSimulatorView_Loaded;
  30. }
  31. public CommonSocketDeviceSimulatorView()
  32. {
  33. InitializeComponent();
  34. }
  35. private void SerialIOReader_SimulatorItemActived(IOSimulatorItemViewModel obj)
  36. {
  37. this.Dispatcher.Invoke(new Action(() =>
  38. {
  39. _simaulatorItemGrid.SelectedItem = obj;
  40. }));
  41. }
  42. private void SiasunPhoenixBSimulatorView_Loaded(object sender, RoutedEventArgs e)
  43. {
  44. _viewModel.EnableTimer(true);
  45. }
  46. private void BtnReply_Click(object sender, RoutedEventArgs e)
  47. {
  48. IOSimulatorItemViewModel commandViewModel = (IOSimulatorItemViewModel)_simaulatorItemGrid.SelectedItem;
  49. if (commandViewModel != null)
  50. {
  51. _viewModel.SerialIOSimulator.ManualWriteMessage(commandViewModel);
  52. }
  53. }
  54. }
  55. class CommonSocketSimulatorViewModel : SimpleSocketDeviceViewModel
  56. {
  57. public CommonSocketSimulatorViewModel(string deviceGroup, string deviceName, int port) : base("CommonSocketSimulatorViewModel")
  58. {
  59. SerialIOSimulator = SocketDeviceSimulatoFactory.GetCommonSocketDeviceSimulator(port, deviceName);
  60. Init(SerialIOSimulator, true);
  61. _deviceName = deviceName;
  62. //IOSimulatorItemViewModelConfig = IOSimulatorItemReader.GetCommandModelConfig(deviceGroup, deviceName);
  63. IOSimulatorItemViewModelConfig = IOSimulatorItemReader.GetCommandModelConfigV2(deviceName);
  64. IOSimulatorItemViewModelConfig.IOSimulatorItemList.ForEach(sItem =>
  65. {
  66. sItem.IsManualReplyEnable = !AutoReply;
  67. sItem.Response = IsFailed ? sItem.FailedResponseStr : sItem.SuccessResponseStr;
  68. });
  69. SerialIOSimulator.IOSimulatorItemList = IOSimulatorItemViewModelConfig.IOSimulatorItemList;
  70. }
  71. private string _deviceName;
  72. public IOSimulatorItemViewModelConfig IOSimulatorItemViewModelConfig { get; set; }
  73. public string Title
  74. {
  75. get { return _deviceName + " Simulator"; }
  76. }
  77. public CommonSocketDeviceSimulator SerialIOSimulator;
  78. public bool IsFailed
  79. {
  80. get
  81. {
  82. return SerialIOSimulator.Failed;
  83. }
  84. set
  85. {
  86. SerialIOSimulator.Failed = value;
  87. IOSimulatorItemViewModelConfig.IOSimulatorItemList.ForEach(sItem =>
  88. {
  89. sItem.Response = value ? sItem.FailedResponseStr : sItem.SuccessResponseStr;
  90. });
  91. }
  92. }
  93. public bool AutoReply
  94. {
  95. get
  96. {
  97. return SerialIOSimulator.AutoReply;
  98. }
  99. set
  100. {
  101. SerialIOSimulator.AutoReply = value;
  102. IOSimulatorItemViewModelConfig.IOSimulatorItemList.ForEach(sItem =>
  103. {
  104. sItem.IsManualReplyEnable = !value;
  105. });
  106. }
  107. }
  108. //private string _value;
  109. [IgnorePropertyChange]
  110. public string ResultValue
  111. {
  112. get
  113. {
  114. return SerialIOSimulator.ResultValue;
  115. }
  116. set
  117. {
  118. SerialIOSimulator.ResultValue = value;
  119. }
  120. }
  121. }
  122. }