فهرست منبع

回滚按钮效果调整,定时功能测试

yc_t 7 سال پیش
والد
کامیت
f6f49fc786

+ 2 - 3
parkMonitor/App.config

@@ -58,8 +58,7 @@
     <add key="wheelbase_status_address" value="81" />
     <!--激光设备配置-->
     <add key="park_command_address" value="10" />
-    <add key="laser1_status_address" value="83" />
-    <add key="laser2_status_address" value="" />
+    <add key="laser1_status_address" value="83" /><!--决定激光编号-->
     <add key="laser_rescan_count" value="3" />
     <add key="laser_countdown" value="100" />
     <!--队列线程参数-->
@@ -81,7 +80,7 @@
     <!--ip位置映射表-->
     <!--位置编号;基点横坐标;车位宽度;宽度补偿-->
     <add key="192.168.0.20" value="1" />
-    <!--<add key="192.168.0.51" value="1" />-->
+    <add key="192.168.0.21" value="1" />
     <add key="parkingEntZ" value="0" />
     <add key="parkingEntZ" value="0" />
     <add key="parkingEntZ" value="0" />

+ 10 - 0
parkMonitor/Properties/Resources.Designer.cs

@@ -130,6 +130,16 @@ namespace parkMonitor.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap circulate2 {
+            get {
+                object obj = ResourceManager.GetObject("circulate2", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   查找 System.Drawing.Bitmap 类型的本地化资源。
         /// </summary>

+ 3 - 0
parkMonitor/Properties/Resources.resx

@@ -139,6 +139,9 @@
   <data name="circulate" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\resource\image\map\circulate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="circulate2" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\resource\image\map\circulate2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="close" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\resource\image\menu\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>

+ 1 - 0
parkMonitor/parkMonitor.csproj

@@ -583,6 +583,7 @@
     <Resource Include="resource\image\map\plc.png" />
     <Resource Include="resource\image\map\sensor.png" />
     <Resource Include="resource\image\map\circulate.png" />
+    <Resource Include="resource\image\map\circulate2.png" />
     <Content Include="sdk\mysql\MySql.Data.dll" />
     <Content Include="sdk\VZ_Sdk\iDecoders.dll" />
     <Content Include="sdk\VZ_Sdk\VzDrawsLib.dll" />

BIN
parkMonitor/resource/image/map/circulate2.png


+ 72 - 31
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -122,9 +122,19 @@ namespace parkMonitor.server.CoreThread
                     }
                 }
                 mt.EndTiming();
-                if (mt.IsLonger(120, 1, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false,out activationCount))
                 {
-                    UILogServer.ins.info("无空闲机械手资源,继续等待");
+                    if (activationCount == 1)
+                    {
+                        UILogServer.ins.info("无空闲机械手资源,继续等待");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
+                    {
+                        mt.rolledBack = true;
+                        UILogServer.ins.info("启动机械手资源超时,启动回滚");
+                        //回退
+                    }
                 }
             }
         }
@@ -135,7 +145,11 @@ namespace parkMonitor.server.CoreThread
     /// </summary>
     public class StopCmd : AbstractCmd
     {
-
+        /// <summary>
+        /// 流程回滚函数
+        /// </summary>
+        /// <param name="queueCmd"></param>
+        /// <param name="parkingSpaceID"></param>
         private void rollback(Command queueCmd, int parkingSpaceID)
         {
             //命令回退
@@ -231,14 +245,19 @@ namespace parkMonitor.server.CoreThread
                 }
                 Thread.Sleep(200);
                 mt.EndTiming();
-                if (mt.IsLonger(30, 1, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false, out activationCount))
                 {
-                    UILogServer.ins.info("未获得车位");
-                    while (!MyTimer.restart)
+                    if (activationCount == 1)
+                    {
+                        UILogServer.ins.info("未获得车位");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
                     {
-                        Thread.Sleep(2000);
+                        mt.rolledBack = true;
+                        UILogServer.ins.info("回退");
+                        //return null;
                     }
-                    return null;
                 }
             }
             return ppp;
@@ -307,14 +326,21 @@ namespace parkMonitor.server.CoreThread
                 }
                 Thread.Sleep(1000);
                 mt.EndTiming();
-                if (mt.IsLonger(60, 1, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false, out activationCount))
                 {
-                    UILogServer.ins.info("未获取激光数据,继续等待");
-                    while (!MyTimer.restart)
+                    if (activationCount == 1)
+                    {
+                        UILogServer.ins.info("未获取激光数据,继续等待");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
                     {
-                        Thread.Sleep(2000);
+                        mt.rolledBack = true;
+                        UILogServer.ins.info("回退");
+                        //return null;
+                        //回退
                     }
-                    return null;
+                    
                 }
             }
             return data;
@@ -322,7 +348,7 @@ namespace parkMonitor.server.CoreThread
         /// <summary>
         /// 停车完成
         /// </summary>
-        private void WaitForStoreCompletionSignal(Command queueCmd, ref int parkingSpaceID, ref bool robotError)
+        private void WaitForStoreCompletionSignal(Command queueCmd, ref int parkingSpaceID, ref bool robotError, int status)
         {
             PLCMessage PLCMsg = null;
             MyTimer mt = new MyTimer();
@@ -354,14 +380,19 @@ namespace parkMonitor.server.CoreThread
                     break;
                 }
                 mt.EndTiming();
-                if (mt.IsLonger(5, 60, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false, out activationCount))
                 {
-                    UILogServer.ins.info("未获得停车完成信号,继续等待");
-                    while (!MyTimer.restart)
+                    if (activationCount == 1)
+                    {
+                        UILogServer.ins.info("未获得停车完成信号,继续等待");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
                     {
-                        Thread.Sleep(2000);
+                        mt.rolledBack = true;
+                        UILogServer.ins.info("回退");
+                        //回退
                     }
-                    //系统回滚,复位车位状态,车位总数,车辆状态
                 }
             }
         }
@@ -389,14 +420,19 @@ namespace parkMonitor.server.CoreThread
                 }
                 Thread.Sleep(1000);
                 mt.EndTiming();
-                if (mt.IsLonger(30, 1, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false, out activationCount))
                 {
-                    UILogServer.ins.info("未获取轮距雷达完成状态,继续等待");
-                    while (!MyTimer.restart)
+                    if (activationCount == 1)
                     {
-                        Thread.Sleep(2000);
+                        UILogServer.ins.info("未获取轮距雷达完成状态,继续等待");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
+                    {
+                        mt.rolledBack = true;
+                        UILogServer.ins.info("回退");
+                        //回退
                     }
-                    //系统回滚
                 }
             }
         }
@@ -558,7 +594,7 @@ namespace parkMonitor.server.CoreThread
 
             Task storeCompletionSignal = Task.Factory.StartNew(() =>
             {
-                WaitForStoreCompletionSignal(queueCmd, ref parkingSpaceID, ref robotError);
+                WaitForStoreCompletionSignal(queueCmd, ref parkingSpaceID, ref robotError,1);
             });
             //storeSignal.Wait();
             Task.WaitAll(dataFromWheelbase, storeCompletionSignal);
@@ -568,7 +604,7 @@ namespace parkMonitor.server.CoreThread
             PLC.SetMessage(cm);
             Task storeResetSignal = Task.Factory.StartNew(() =>
             {
-                WaitForStoreSignal(queueCmd, ref parkingSpaceID, ref robotError, 0);
+                WaitForStoreCompletionSignal(queueCmd, ref parkingSpaceID, ref robotError, 0);
             });
             storeResetSignal.Wait();
             robot.occupied = false;
@@ -692,14 +728,19 @@ namespace parkMonitor.server.CoreThread
                     break;
                 }
                 mt.EndTiming();
-                if (mt.IsLonger(5, 60, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false, out activationCount))
                 {
-                    UILogServer.ins.info("未获得取车完成信号,继续等待");
-                    while (!MyTimer.restart)
+                    if (activationCount == 1)
+                    {
+                        UILogServer.ins.info("未获得取车完成信号,继续等待");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
                     {
-                        Thread.Sleep(2000);
+                        mt.rolledBack = true;
+                        //回退
+                        UILogServer.ins.info("回退");
                     }
-                    //系统回滚
                 }
             }
 

+ 0 - 4
parkMonitor/server/CoreThread/CoreThreadTest2.cs

@@ -78,10 +78,6 @@ namespace parkMonitor.server.CoreThread
 
         public void SetMessage(AbstractMessage message)
         {
-            if (message.GetType().Equals(typeof(restartMessage)))
-            {
-                MyTimer.restart = ((restartMessage)message).restart;
-            }
         }
 
         public void Stop()

+ 24 - 4
parkMonitor/server/PLCLinker/PLCLinker.cs

@@ -467,9 +467,19 @@ namespace parkMonitor.server
                     }
                 }
                 mt.EndTiming();
-                if (mt.IsLonger(60, 1, true))
+                int activationCount = 0;
+                if (mt.IsLonger(5, 1, false, out activationCount))
                 {
-                    UILogServer.ins.info("启动前暂未获取摆扫激光心跳/空闲状态,继续等待");
+                    if (activationCount == 1)
+                    {
+                        UILogServer.ins.info("启动前暂未获取摆扫激光心跳/空闲状态,继续等待");
+                    }
+                    if (MyTimer.restart && !mt.rolledBack)
+                    {
+                        mt.rolledBack = true;
+                        UILogServer.ins.info("回退");
+                        //回退
+                    }
                 }
             }
         }
@@ -815,9 +825,19 @@ namespace parkMonitor.server
                                                 {
                                                     Thread.Sleep(1000);
                                                     mt.EndTiming();
-                                                    if (mt.IsLonger(30, 1, true))
+                                                    int activationCount = 0;
+                                                    if (mt.IsLonger(5, 1, false, out activationCount))
                                                     {
-                                                        UILogServer.ins.info("重测前未获得心跳,继续等待");
+                                                        if (activationCount == 1)
+                                                        {
+                                                            UILogServer.ins.info("重测前未获得心跳,继续等待");
+                                                        }
+                                                        if (MyTimer.restart && !mt.rolledBack)
+                                                        {
+                                                            mt.rolledBack = true;
+                                                            UILogServer.ins.info("回退");
+                                                            //回退
+                                                        }
                                                     }
                                                 }
                                             });

+ 20 - 3
parkMonitor/tools/MyTimer.cs

@@ -12,12 +12,25 @@ namespace parkMonitor.tools
     class MyTimer
     {
         public static bool restart { get; set; }
+        public bool rolledBack { get; set; }
         private DateTime startTime;
         private DateTime endTime;
         private bool recorded;
         private bool displayed;
+        private int activationCount;
         private TimeSpan timeSpan;
         /// <summary>
+        /// 构造函数
+        /// </summary>
+        public MyTimer()
+        {
+            restart = false;
+            recorded = false;
+            displayed = false;
+            rolledBack = false;
+            activationCount = 0;
+        }
+        /// <summary>
         /// 开始计时
         /// </summary>
         public void StartTiming()
@@ -69,22 +82,26 @@ namespace parkMonitor.tools
             else
                 return false;
         }
-        /// <summary>
+        /// /// <summary>
         /// 判断时长是否在范围内
         /// </summary>
         /// <param name="minCount">最小单位个数</param>
         /// <param name="secondsInUnit">一单位对应秒数</param>
-        /// /// <param name="displayOnlyOnce">是否只在外界输出一次</param>
+        /// /// <param name="displayOnlyOnce">是否只在外界激活一次</param>
+        /// /// <param name="activationCount">记录被激活次数</param>
         /// <returns>判断结果</returns>
-        public bool IsLonger(int minCount, double secondsInUnit, bool displayOnlyOnce)
+        public bool IsLonger(int minCount, double secondsInUnit, bool displayOnlyOnce, out int activationCount)
         {
             TimeSpan ts = GetInterval();
+            activationCount = this.activationCount;
             if (ts.TotalSeconds >= minCount * secondsInUnit)
             {
                 if (displayOnlyOnce && displayed)
                     return false;
                 else
                 {
+                    this.activationCount += 1;
+                    activationCount = this.activationCount;
                     displayed = true;
                     return true;
                 }

+ 1 - 1
parkMonitor/view/menuBox/MenuBox.xaml

@@ -40,7 +40,7 @@
 						<!--<util:DevMenuListBox Margin="0,0,0,0" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="{lng:LngBind ultrasonic}" ItemsSource="{Binding DevMenuItems.Ultrasonic}" Source="/parkMonitor;component/resource/image/map/ultrasonic.png" x:Name="lstUltrasonic" SelectionChanged="lstUltrasonic_SelectionChanged"/>-->
 						<!--<util:DevMenuListBox Margin="0,0,0,0" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="{lng:LngBind sensor}" ItemsSource="{Binding DevMenuItems.Sensor}" Source="/parkMonitor;component/resource/image/map/Sensor.png" x:Name="lstSensor" SelectionChanged="lstSensor_SelectionChanged"/>-->
 						<util:ImageMenuItem Margin="0,0,5,0" MouseOverColor="#808080" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="号牌机" Source="/parkMonitor;component/resource/image/map/numMachine.png" x:Name="muRunNumMachine" MouseLeftButtonUp="muRunNumMachine_MouseLeftButtonUp"/>
-                        <util:ImageMenuItem Margin="0,0,5,0" MouseOverColor="#808080" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="重启当前流程" Source="/parkMonitor;component/resource/image/map/circulate.png" x:Name="muRunRestartProcess" MouseLeftButtonUp="muRunRestartProcess_MouseLeftButtonUp"/>
+                        <util:ImageMenuItem Margin="0,0,5,0" MouseOverColor="#808080" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="回滚已关闭" Source="/parkMonitor;component/resource/image/map/circulate2.png" x:Name="muRunRestartProcess" MouseLeftButtonUp="muRunRestartProcess_MouseLeftButtonUp"/>
 						<!--<util:ImageMenuItem Margin="0,0,5,0" MouseOverColor="#808080" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="激光雷达" Source="/parkMonitor;component/resource/image/map/laser.png" x:Name="muRunLaser" MouseLeftButtonUp="muRunLaser_MouseLeftButtonUp"/>-->
 						<!--<util:ImageMenuItem Margin="0,0,5,0" MouseOverColor="#808080" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="转运系统" Source="/parkMonitor;component/resource/image/map/tray.png" x:Name="muRunTray" MouseLeftButtonUp="muRunTray_MouseLeftButtonUp"/>-->
 						<!--<util:ImageMenuItem Margin="0,0,5,0" MouseOverColor="#808080" MiniSource="/parkMonitor;component/resource/image/menu/start.png" Content="机械手" Source="/parkMonitor;component/resource/image/map/robot.png" x:Name="muRunRobot" MouseLeftButtonUp="muRunRobot_MouseLeftButtonUp"/>-->

+ 16 - 4
parkMonitor/view/menuBox/MenuBox.xaml.cs

@@ -1,6 +1,8 @@
 using parkMonitor.entity;
 using parkMonitor.manualParking;
 using parkMonitor.model;
+using parkMonitor.server.uiLogServer;
+using parkMonitor.tools;
 using parkMonitor.view.aboutWin;
 using parkMonitor.view.deviceViewWin;
 using parkMonitor.view.okBoxWin;
@@ -98,12 +100,22 @@ namespace parkMonitor.view.util {
         /// <summary>菜单-重启上次流程</summary>
         private void muRunRestartProcess_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
         {
-            IEquipments core = EquipmentSimpleFactory.ins.FindEquipment(EquipmentName.Core);
-            if (core != null)
+            MyTimer.restart = !MyTimer.restart;
+            if(sender is ImageMenuItem)
             {
-                restartMessage rm = new restartMessage(true);
-                core.SetMessage(rm);
+                ImageMenuItem temp = ((ImageMenuItem)this.FindName("muRunRestartProcess"));
+                if (MyTimer.restart)
+                {
+                    temp.Content = "回滚已启动";
+                    temp.Source = new BitmapImage(new Uri("/resource/image/map/circulate.png", UriKind.Relative));
+                }
+                else
+                {
+                    temp.Content = "回滚已关闭";
+                    temp.Source = new BitmapImage(new Uri("/resource/image/map/circulate2.png", UriKind.Relative));
+                }
             }
+            //MessageBox.Show("sender:" + sender);
         }
         ///// <summary>菜单-启动机械手</summary>
         //private void muRunRobot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { }