Browse Source

增加运行状态检测和检测模式选择

wangchong 3 ngày trước cách đây
mục cha
commit
d1f6a71d5b

+ 1 - 1
Config/Config.json

@@ -2,7 +2,7 @@
   "AppName": "在线式钢丝绳电磁检测系统",
   "Version": "250902",
   "Copyright": "河南恒达机电设备有限公司",
-  "IpAddress": "192.168.1.233",
+  "IpAddress": "192.168.1.127",
   "Port": 9005,
   "DataSaveDays": 120,
   "CleanScheduledTime": "02:00:00",

+ 47 - 0
Converters/RunningStatusToBooleanConverter.cs

@@ -0,0 +1,47 @@
+using SWRIS.Enums;
+using System;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace SWRIS.Converters
+{
+    public class RunningStatusToBooleanConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (value == null || parameter == null) { return false; }
+
+            if (value is RunningStatus valueStatus && Enum.TryParse(parameter.ToString(), true, out RunningStatus parameterStatus))
+            {
+                return GetRunningStatus(valueStatus) == parameterStatus;
+            }
+            return false;
+        }
+        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+        {
+            if (!(value is bool boolValue) || parameter == null)
+                return RunningStatus.Stopped;
+
+            if (!Enum.TryParse(parameter.ToString(), true, out RunningStatus targetStatus))
+                return RunningStatus.Stopped;
+
+            if (boolValue)
+            {
+                return targetStatus;
+            }
+
+            return RunningStatus.Stopped;
+        }
+        private RunningStatus GetRunningStatus(RunningStatus runningStatus)
+        {
+            // 优先级:TemporalNormal > SpatialNormal > Stopped
+            if (runningStatus.HasFlag(RunningStatus.TemporalNormal))
+                return RunningStatus.TemporalNormal;
+
+            if (runningStatus.HasFlag(RunningStatus.SpatialNormal))
+                return RunningStatus.SpatialNormal;
+
+            return RunningStatus.Stopped;
+        }
+    }
+}

+ 5 - 4
Core/TcpServerFrame.cs

@@ -1265,10 +1265,10 @@ namespace SWRIS.Core
         /// <summary>
         /// 发送开始或停止检测命令
         /// </summary>
-        /// <param name="isStart">是否开始</param>
+        /// <param name="mode">检测模式 0=停止,1=启动空域检测,2=启动时域检测</param>
         /// <param name="serialNo">设备序列号</param>
         /// <param name="clientSocket">数据流</param>
-        public bool SendStartOrStopDetection(bool isStart, string serialNo, Socket clientSocket)
+        public bool SendStartOrStopDetection(byte runningMode, string serialNo, Socket clientSocket)
         {
             try
             {
@@ -1277,9 +1277,10 @@ namespace SWRIS.Core
 
                 using (var ms = new MemoryStream())
                 {
-                    ms.WriteByte((byte)(isStart ? 1 : 0)); // 0=停止检测,1=开始检测
+                    ms.WriteByte(runningMode);// 0 = 停止,1 = 启动空域检测,2 = 启动时域检测
                     byte[] buffer = CreateData(0x06, ms.ToArray(), serialNo);
-                    DebugMessageReceived?.Invoke(this, new DebugMessageReceivedEventArgs($"{(isStart ? "开始" : "停止")}设备检测", serialNo: serialNo));
+                    DebugMessageReceived?.Invoke(this, new DebugMessageReceivedEventArgs($"{(runningMode == 0 ? "停止" : "开始")}设备检测",
+                                                                                         serialNo: serialNo));
                     clientSocket.Send(buffer);
                     return true;
                 }

+ 21 - 15
Enums/RunningStatus.cs

@@ -16,45 +16,51 @@ namespace SWRIS.Enums
         Stopped = 0,
 
         /// <summary>
-        /// 1 - 检测中且正常
+        /// 1 - 检测中且正常 空域检测
         /// </summary>
-        [Description("检测中")]
-        RunningNormal = 1,
+        [Description("检测中-空域")]
+        SpatialNormal = 1,
 
         /// <summary>
-        /// 2 - 传感器故障
+        /// 2 - 检测中且正常 时域检测
+        /// </summary>
+        [Description("检测中-时域")]
+        TemporalNormal = 2,
+
+        /// <summary>
+        /// 4 - 传感器故障
         /// </summary>
         [Description("传感器故障")]
-        SensorFault = 2,
+        SensorFault = 4,
 
         /// <summary>
-        /// 4 - 预警(黄色预警)
+        /// 8 - 预警(黄色预警)
         /// </summary>
         [Description("黄色预警")]
-        YellowAlert = 4,
+        YellowAlert = 8,
 
         /// <summary>
-        /// 8 - 报警(红色报警)
+        /// 16 - 报警(红色报警)
         /// </summary>
         [Description("红色报警")]
-        RedAlert = 8,
+        RedAlert = 16,
 
         /// <summary>
-        /// 16 - 预停止
+        /// 32 - 预停止
         /// </summary>
         [Description("预停止")]
-        PreStop = 16,
+        PreStop = 32,
 
         /// <summary>
-        /// 32 - 预运行
+        /// 64 - 预运行
         /// </summary>
         [Description("预运行")]
-        PreRunning = 32,
+        PreRunning = 64,
 
         /// <summary>
-        /// 64 - 预标定
+        /// 128 - 预标定
         /// </summary>
         [Description("预标定")]
-        PreCalibration = 64
+        PreCalibration = 128
     }
 }

+ 4 - 5
MainWindow.xaml.cs

@@ -191,7 +191,7 @@ namespace SWRIS
                 }
                 else if (equipmentData.RunningStatus.HasFlag(RunningStatus.PreRunning))
                 {
-                    equipmentData.RunningStatus = RunningStatus.RunningNormal;
+                    equipmentData.RunningStatus = RunningStatus.TemporalNormal;
                     Application.Current.Dispatcher.Invoke(() =>
                     {
                         NoticeBox.Show("自动检测恢复", "通知", MessageBoxIcon.Success, true, 3000);
@@ -199,7 +199,7 @@ namespace SWRIS
                 }
                 else if (equipmentData.RunningStatus.HasFlag(RunningStatus.PreCalibration))
                 {
-                    equipmentData.RunningStatus = RunningStatus.RunningNormal;
+                    equipmentData.RunningStatus = RunningStatus.TemporalNormal;
                 }
             }
         }
@@ -226,7 +226,6 @@ namespace SWRIS
                 equipmentData.LiftHeight = (equipmentData.RopeLength - equipmentData.AbsolutePosition) / equipmentData.LiftHightRatio;
                 equipmentData.Direction = equipmentData.Speed > 0 ? DirectionState.Forward :
                     (equipmentData.Speed == 0f ? DirectionState.Stoped : DirectionState.Reverse);
-                Console.WriteLine(equipmentData.AbsolutePosition);
                 equipmentData.AddSpeedData(equipmentData.Speed);
             }
         }
@@ -250,9 +249,9 @@ namespace SWRIS
             {
                 equipmentData.IsConnect = true;
                 equipmentData.ClientSocket = e.ClientSocket;
-                if (equipmentData.RunningStatus != RunningStatus.RunningNormal)
+                if (equipmentData.RunningStatus != RunningStatus.TemporalNormal)
                 {
-                    equipmentData.RunningStatus |= RunningStatus.RunningNormal;
+                    equipmentData.RunningStatus |= RunningStatus.TemporalNormal;
                 }
             }
         }

+ 4 - 3
Mapping.cs

@@ -81,13 +81,13 @@ namespace SWRIS
             equipmentSettingViewModel.ToEquipmentModel(equipmentModel);
             return equipmentModel;
         }
-        public static EquipmentSettingViewModel ToEquipmentSettingViewModel(this EquipmentModel equipmentModel)
+        public static EquipmentSettingViewModel ToEquipmentSettingViewModel(this EquipmentModel equipmentModel, RunningStatus runningStatus)
         {
             var equipmentSettingViewModel = new EquipmentSettingViewModel();
-            equipmentModel.ToEquipmentSettingViewModel(equipmentSettingViewModel);
+            equipmentModel.ToEquipmentSettingViewModel(equipmentSettingViewModel, runningStatus);
             return equipmentSettingViewModel;
         }
-        public static void ToEquipmentSettingViewModel(this EquipmentModel equipmentModel, EquipmentSettingViewModel equipmentSettingViewModel)
+        public static void ToEquipmentSettingViewModel(this EquipmentModel equipmentModel, EquipmentSettingViewModel equipmentSettingViewModel, RunningStatus runningStatus)
         {
             if (equipmentModel == null || equipmentSettingViewModel == null)
                 return;
@@ -98,6 +98,7 @@ namespace SWRIS
             equipmentSettingViewModel.IpAddress = equipmentModel.IpAddress;
             equipmentSettingViewModel.SerialNo = equipmentModel.SerialNo;
             equipmentSettingViewModel.Supplier = equipmentModel.Supplier;
+            equipmentSettingViewModel.RunningStatus = runningStatus;
             equipmentSettingViewModel.LayType = (int)equipmentModel.LayType;
             equipmentSettingViewModel.LiftHightRatio = equipmentModel.LiftHightRatio;
             equipmentSettingViewModel.SoundRiskLevel = equipmentModel.SoundRiskLevel;

+ 11 - 0
Models/ViewModel/EquipmentSettingViewModel.cs

@@ -25,6 +25,7 @@ namespace SWRIS.Models.ViewModel
         private RiskLevel soundRiskLevel = RiskLevel.Moderate;
         private ParameterData parameter;
         private bool isConnected;
+        private RunningStatus runningStatus;
         /// <summary>
         /// 绳号
         /// </summary>
@@ -191,6 +192,15 @@ namespace SWRIS.Models.ViewModel
                 OnPropertyChanged(nameof(InUseSensor));
             }
         }
+        public RunningStatus RunningStatus
+        {
+            get { return runningStatus; }
+            set
+            {
+                runningStatus = value;
+                OnPropertyChanged(nameof(RunningStatus));
+            }
+        }
         public List<KeyAndValueDto> RopeCoreTypes => TypeExtension.ToKeyAndDescriptionList(typeof(RopeCoreType));
         public List<KeyAndValueDto> WireMaterialTypes => TypeExtension.ToKeyAndDescriptionList(typeof(WireMaterialType));
         public List<KeyAndValueDto> LayTypes => TypeExtension.ToKeyAndDescriptionList(typeof(LayType));
@@ -507,6 +517,7 @@ namespace SWRIS.Models.ViewModel
                 OnPropertyChanged(nameof(EncoderDirection));
             }
         }
+
         /// <summary>
         /// 系统时间
         /// </summary>

+ 42 - 20
Pages/ParameterDialog.xaml

@@ -17,6 +17,7 @@
     <pu:WindowX.Resources>
         <cvt:BooleanInverterConverter x:Key="InverterConverter"/>
         <cvt:EncoderDirectionToBooleanConverter x:Key="EncoderDirectionConverter"/>
+        <cvt:RunningStatusToBooleanConverter x:Key="RunningStatusConverter"/>
         <cvt:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
         <cvt:ResetTypeToBooleanConverter x:Key="ResetTypeConverter"/>
     </pu:WindowX.Resources>
@@ -109,7 +110,7 @@
                             <Button Content="设" Width="60" Height="40" Margin="5"  Click="SetSerialNo_Click"/>
                         </StackPanel>
                     </StackPanel>
-                
+
                 </StackPanel>
             </StackPanel>
             <StackPanel Orientation="Vertical" Grid.Row="1" Grid.Column="1" Margin="10,0,10,0">
@@ -188,6 +189,7 @@
                     </StackPanel>
                     <Grid>
                         <Grid.RowDefinitions>
+                            <RowDefinition Height="80"/>
                             <RowDefinition Height="*"/>
                             <RowDefinition Height="80"/>
                         </Grid.RowDefinitions>
@@ -195,15 +197,32 @@
                             <ColumnDefinition Width="*"/>
                             <ColumnDefinition Width="*"/>
                         </Grid.ColumnDefinitions>
-                        <StackPanel Orientation="Vertical" Grid.Column="0" HorizontalAlignment="Center">
+                        <StackPanel Orientation="Horizontal" Grid.ColumnSpan="2" Margin="0,7" HorizontalAlignment="Right">
                             <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
-                                <TextBlock Text="分频系数" VerticalAlignment="Center"/>
-                                <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.FrequencyDivisionFactor}"/>
+                                <TextBlock Text="检测模式" Margin="10,0" VerticalAlignment="Center"/>
+                                <StackPanel Orientation="Horizontal">
+                                    <ToggleButton Content="空域检测" Margin="12,0,5,0" FontSize="18" Width="110"
+                                                  IsChecked="{Binding RunningStatus,
+                                        Converter={StaticResource RunningStatusConverter},
+                                        ConverterParameter=SpatialNormal}" Tag="SpatialNormal" Click="RunningStatus_Click"/>
+                                    <ToggleButton Content="时域检测" Margin="5,0,10,0" FontSize="18" Width="110"
+                                                  IsChecked="{Binding RunningStatus,
+                                        Converter={StaticResource RunningStatusConverter},
+                                        ConverterParameter=TemporalNormal}" Tag="TemporalNormal" Click="RunningStatus_Click"/>
+                                    <ToggleButton Content="停止检测" Margin="5,0,10,0" FontSize="18" Width="110"
+                                                  IsChecked="{Binding RunningStatus,
+                                        Converter={StaticResource RunningStatusConverter},
+                                        ConverterParameter=Stopped}" Tag="Stopped" Click="RunningStatus_Click"/>
+                                </StackPanel>
                             </StackPanel>
+                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="10,0" IsEnabled="{Binding IsConnected}"/>
+                        </StackPanel>
+                        <StackPanel Orientation="Vertical" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center">
                             <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
-                                <TextBlock Text="时域频率" VerticalAlignment="Center"/>
-                                <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.TimeDomainFrequency}"/>
+                                <TextBlock Text="分频系数" VerticalAlignment="Center"/>
+                                <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.FrequencyDivisionFactor}"/>
                             </StackPanel>
+                         
                             <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
                                 <TextBlock Text="前磁极" VerticalAlignment="Center"/>
                                 <StackPanel Orientation="Horizontal"  Margin="0,0,4,0">
@@ -211,21 +230,10 @@
                                     <TextBlock  Text="mm" Width="45" VerticalAlignment="Center"/>
                                 </StackPanel>
                             </StackPanel>
-                            <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
-                                <TextBlock Text="后磁极" VerticalAlignment="Center"/>
-                                <StackPanel Orientation="Horizontal"  Margin="0,0,4,0">
-                                    <TextBox Margin="15,0,6,0" Width="80" Text="{Binding Parameter.BackMagnetLength}"/>
-                                    <TextBlock  Text="mm" Width="45" VerticalAlignment="Center"/>
-                                </StackPanel>
-                            </StackPanel>
                             <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
                                 <TextBlock Text="报废上限" VerticalAlignment="Center"/>
                                 <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.ScrapUpperLimit}"/>
                             </StackPanel>
-                            <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
-                                <TextBlock Text="损伤门限" VerticalAlignment="Center"/>
-                                <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.DamageThreshold}"/>
-                            </StackPanel>
                             <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
                                 <TextBlock Text="量值系数" VerticalAlignment="Center"/>
                                 <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.ValueCoefficient}"/>
@@ -258,7 +266,11 @@
                                 </StackPanel>
                             </StackPanel>
                         </StackPanel >
-                        <StackPanel Orientation="Vertical" Grid.Column="1" HorizontalAlignment="Center">
+                        <StackPanel Orientation="Vertical" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center">
+                            <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
+                                <TextBlock Text="时域频率" VerticalAlignment="Center"/>
+                                <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.TimeDomainFrequency}"/>
+                            </StackPanel>
                             <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
                                 <TextBlock Text="黄色警报" VerticalAlignment="Center"/>
                                 <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.WarningValue}"/>
@@ -267,9 +279,19 @@
                                 <TextBlock Text="红色警报" VerticalAlignment="Center"/>
                                 <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.AlarmValue}"/>
                             </StackPanel>
-
+                            <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
+                                <TextBlock Text="后磁极" VerticalAlignment="Center"/>
+                                <StackPanel Orientation="Horizontal"  Margin="0,0,4,0">
+                                    <TextBox Margin="15,0,6,0" Width="80" Text="{Binding Parameter.BackMagnetLength}"/>
+                                    <TextBlock  Text="mm" Width="45" VerticalAlignment="Center"/>
+                                </StackPanel>
+                            </StackPanel>
+                            <StackPanel Orientation="Horizontal" Margin="0,7" HorizontalAlignment="Right">
+                                <TextBlock Text="损伤门限" VerticalAlignment="Center"/>
+                                <TextBox Margin="15,0" Width="120" Text="{Binding Parameter.DamageThreshold}"/>
+                            </StackPanel>
                         </StackPanel>
-                        <StackPanel Orientation="Horizontal" Margin="0,7" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
+                        <StackPanel Orientation="Horizontal" Margin="0,7" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">
                             <StackPanel Orientation="Horizontal">
                                 <TextBlock Text="报警重置" VerticalAlignment="Center"/>
                                 <ToggleButton Content="不重置" Width="90" Margin="10,0,5,0" FontSize="18"

+ 52 - 12
Pages/ParameterDialog.xaml.cs

@@ -11,6 +11,7 @@ using System.Net.Sockets;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
+using System.Windows.Controls.Primitives;
 using System.Windows.Input;
 
 namespace SWRIS.Pages
@@ -22,18 +23,21 @@ namespace SWRIS.Pages
     {
         private string _serialNo;
         private Socket _clientSocket;
+        private byte _runningMode = 0;
         private EquipmentSettingViewModel Equipment { get; set; }
 
-        public ParameterDialog(EquipmentModel equipment, Socket clientSocket)
+        public ParameterDialog(EquipmentModel equipment, Socket clientSocket, RunningStatus runningStatus)
         {
             InitializeComponent();
             _serialNo = equipment.SerialNo;
             _clientSocket = clientSocket;
-            Equipment = equipment.ToEquipmentSettingViewModel();
+            _runningMode = GetRunningStatusByte(runningStatus);
+            Equipment = equipment.ToEquipmentSettingViewModel(runningStatus);
             Equipment.IsConnected = _clientSocket != null && _clientSocket.Connected;
             App.TcpServer.SendGetTwistFactorData(_serialNo, _clientSocket);
             App.TcpServer.ClockResultReceived += TcpServer_ClockResultReceived;
             App.TcpServer.EncoderDirectionResultReceived += TcpServer_EncoderDirectionResultReceived;
+
             DataContext = Equipment;
         }
 
@@ -56,13 +60,13 @@ namespace SWRIS.Pages
                 {
                     EquipmentDataModel equipmentData = App.DataCenter.Equipments.FirstOrDefault(c => c.IpAddress == equipment.IpAddress);
                     equipment.ToEquipmentDataModel(equipmentData);
-                    StopDetection(equipmentData);
+                    StartOrStopDetection(equipmentData, RunningStatus.Stopped);
                     Thread.Sleep(1000);
                     App.TcpServer.SendSyncParameters(equipment.Parameter, Equipment.SerialNo, _clientSocket);
                     Thread.Sleep(300);
                     App.TcpServer.SendTurnLiveStreamData(true, _serialNo, _clientSocket);
                     Thread.Sleep(1000);
-                    StartDetection(equipmentData);
+                    StartOrStopDetection(equipmentData, equipmentData.RunningStatus);
 
                 }
                 // 更新设备数据
@@ -78,17 +82,38 @@ namespace SWRIS.Pages
                 }
             });
         }
-        private void StopDetection(EquipmentDataModel equipmentData)
+        private void StartOrStopDetection(EquipmentDataModel equipmentData, RunningStatus runningStatus)
         {
-            equipmentData.RunningStatus |= RunningStatus.PreStop;
-            App.TcpServer.SendStartOrStopDetection(false, _serialNo, _clientSocket);
+            byte runningMode;
+            if (runningStatus.HasFlag(RunningStatus.TemporalNormal))
+            {
+                equipmentData.RunningStatus |= RunningStatus.PreRunning;
+                runningMode = (byte)RunningStatus.TemporalNormal;
+            }
+            else if (runningStatus.HasFlag(RunningStatus.SpatialNormal))
+            {
+                equipmentData.RunningStatus |= RunningStatus.PreRunning;
+                runningMode = (byte)RunningStatus.SpatialNormal;
+            }
+            else
+            {
+                equipmentData.RunningStatus |= RunningStatus.PreStop;
+                runningMode = (byte)RunningStatus.Stopped;
+            }
+
+            App.TcpServer.SendStartOrStopDetection(runningMode, _serialNo, _clientSocket);
         }
-        private void StartDetection(EquipmentDataModel equipmentData)
+        private byte GetRunningStatusByte(RunningStatus runningStatus)
         {
-            equipmentData.RunningStatus |= RunningStatus.PreRunning;
-            App.TcpServer.SendStartOrStopDetection(true, _serialNo, _clientSocket);
-        }
+            // 优先级:TemporalNormal > SpatialNormal > Stopped
+            if (runningStatus.HasFlag(RunningStatus.TemporalNormal))
+                return (byte)RunningStatus.TemporalNormal;
+
+            if (runningStatus.HasFlag(RunningStatus.SpatialNormal))
+                return (byte)RunningStatus.SpatialNormal;
 
+            return (byte)RunningStatus.Stopped;
+        }
         protected void GetEncoderDirection()
         {
             App.TcpServer.SendGetEncoderDirectionData(_serialNo, _clientSocket);
@@ -154,7 +179,22 @@ namespace SWRIS.Pages
             {
                 App.TcpServer.SendUpgradeRequest(_serialNo, _clientSocket);
             }
-           
+        }
+
+        private void RunningStatus_Click(object sender, RoutedEventArgs e)
+        {
+            if (sender is ToggleButton toggleButton)
+            {
+                if (Enum.TryParse(toggleButton.Tag.ToString(), true, out RunningStatus runningStatus))
+                {
+                    var newMode = GetRunningStatusByte(runningStatus);
+                    if (_runningMode != newMode)
+                    {
+                        _runningMode = newMode;
+                        StartOrStopDetection(App.DataCenter.Equipments.First(c => c.SerialNo == _serialNo), runningStatus);
+                    }
+                }
+            }
         }
     }
 }

+ 12 - 4
Pages/RealTime/FourRopesPage.xaml.cs

@@ -135,22 +135,30 @@ namespace SWRIS.Pages.RealTime
         }
         private void FirstParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.FirstEquipment, FourRopesView.FirstEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.FirstEquipment,
+                                                                  FourRopesView.FirstEquipmentData.ClientSocket,
+                                                                  FourRopesView.FirstEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
         private void SecondParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.SecondEquipment, FourRopesView.SecondEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.SecondEquipment,
+                                                                  FourRopesView.SecondEquipmentData.ClientSocket,
+                                                                  FourRopesView.SecondEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
         private void ThirdParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.ThirdEquipment, FourRopesView.ThirdEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.ThirdEquipment,
+                                                                  FourRopesView.ThirdEquipmentData.ClientSocket,
+                                                                  FourRopesView.ThirdEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
         private void FourthParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.FourthEquipment, FourRopesView.FourthEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(FourRopesView.FourthEquipment,
+                                                                  FourRopesView.FourthEquipmentData.ClientSocket,
+                                                                  FourRopesView.FourthEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
 

+ 1 - 1
Pages/RealTime/OneRopePage.xaml.cs

@@ -70,7 +70,7 @@ namespace SWRIS.Pages.RealTime
 
         private void ParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(OneRopeView.Equipment, OneRopeView.EquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(OneRopeView.Equipment, OneRopeView.EquipmentData.ClientSocket, OneRopeView.EquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
     }

+ 9 - 3
Pages/RealTime/ThreeRopesPage.xaml.cs

@@ -116,17 +116,23 @@ namespace SWRIS.Pages.RealTime
         }
         private void FirstParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(ThreeRopesView.FirstEquipment, ThreeRopesView.FirstEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(ThreeRopesView.FirstEquipment,
+                                                                  ThreeRopesView.FirstEquipmentData.ClientSocket,
+                                                                  ThreeRopesView.FirstEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
         private void SecondParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(ThreeRopesView.SecondEquipment, ThreeRopesView.SecondEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(ThreeRopesView.SecondEquipment,
+                                                                  ThreeRopesView.SecondEquipmentData.ClientSocket,
+                                                                  ThreeRopesView.SecondEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
         private void ThreeParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(ThreeRopesView.ThirdEquipment, ThreeRopesView.ThirdEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(ThreeRopesView.ThirdEquipment,
+                                                                  ThreeRopesView.ThirdEquipmentData.ClientSocket,
+                                                                  ThreeRopesView.ThirdEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
     }

+ 6 - 2
Pages/RealTime/TwoRopesPage.xaml.cs

@@ -89,12 +89,16 @@ namespace SWRIS.Pages.RealTime
 
         private void FirstParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(TwoRopesView.FirstEquipment, TwoRopesView.FirstEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(TwoRopesView.FirstEquipment,
+                                                                  TwoRopesView.FirstEquipmentData.ClientSocket,
+                                                                  TwoRopesView.FirstEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
         private void SecondParameterSetting_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
         {
-            ParameterDialog parameterDialog = new ParameterDialog(TwoRopesView.SecondEquipment, TwoRopesView.SecondEquipmentData.ClientSocket);
+            ParameterDialog parameterDialog = new ParameterDialog(TwoRopesView.SecondEquipment,
+                                                                  TwoRopesView.SecondEquipmentData.ClientSocket,
+                                                                  TwoRopesView.SecondEquipmentData.RunningStatus);
             parameterDialog.ShowDialog(true);
         }
     }

+ 1 - 0
SWRIS.csproj

@@ -222,6 +222,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </ApplicationDefinition>
+    <Compile Include="Converters\RunningStatusToBooleanConverter.cs" />
     <Compile Include="Converters\ModuleTypeToVisibilityConverter.cs" />
     <Compile Include="Converters\BoolToVisibilityConverter.cs" />
     <Compile Include="Converters\NullToVisibilityConverter.cs" />