Kaynağa Gözat

延长激光锁到停车完成,激光系统异常只输出一次,调整号牌筛选比例到0.7

yct 7 yıl önce
ebeveyn
işleme
73bd7a59a7

+ 2 - 16
parkMonitor.sln

@@ -1,12 +1,10 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2026
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "parkMonitor", "parkMonitor\parkMonitor.csproj", "{DD3DCAB1-41A7-4EED-ADEE-9E4BBCE6B4C0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlugIn1", "PlugIn1\PlugIn1.csproj", "{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -29,18 +27,6 @@ Global
 		{DD3DCAB1-41A7-4EED-ADEE-9E4BBCE6B4C0}.Release|x64.Build.0 = Release|Any CPU
 		{DD3DCAB1-41A7-4EED-ADEE-9E4BBCE6B4C0}.Release|x86.ActiveCfg = Release|Any CPU
 		{DD3DCAB1-41A7-4EED-ADEE-9E4BBCE6B4C0}.Release|x86.Build.0 = Release|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Debug|x64.ActiveCfg = Debug|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Debug|x64.Build.0 = Debug|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Debug|x86.Build.0 = Debug|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Release|x64.ActiveCfg = Release|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Release|x64.Build.0 = Release|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Release|x86.ActiveCfg = Release|Any CPU
-		{7E03B425-DF7A-4CB0-B6BD-B1E22F4A24A1}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 1 - 1
parkMonitor/App.config

@@ -16,7 +16,7 @@
   </Equipments>
   <appSettings>
     <!--数据库连接配置文件-->
-    <add key="SqlConnectionLocation" value="Data Source=127.0.0.1;port=20000;uid=root;pooling=true;pwd=yct;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
+    <add key="SqlConnectionLocation" value="Data Source=127.0.0.1;port=20000;uid=root;pooling=true;pwd=;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
     <!--<add key="SqlConnectionStr" value="Data Source=52.77.33.102;port=3306;uid=Ubuntu1;pooling=true;pwd=12345678;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />-->
     <add key="SqlConnectionStr" value="Data Source=59.175.148.85;port=3306;uid=root;pooling=true;pwd=x5;database=zxpark;CharSet=utf8;Allow Zero Datetime=true;" />
     <add key="localGarageId" value="1"/>

+ 24 - 14
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -144,13 +144,17 @@ namespace parkMonitor.server.CoreThread
         /// <param name="parkingSpaceID"></param>
         /// <param name="parkingSpaceUpdated"></param>
         /// <param name="isParking"></param>
-        public void Rollback(Command queueCmd, int parkingSpaceID, bool parkingSpaceUpdated, bool isParking)
+        public void Rollback(Command queueCmd, int parkingSpaceID, bool parkingSpaceUpdated, bool isParking, LaserMessage lm)
         {
             string connectionStr = null;
             //命令回退
             queueCmd.returnedCount += 1;
             queuingThread.SetMessage(queueCmd);
             Robot.robot1.occupied = false;
+            if (lm != null)
+            {
+                lm.occupied = false;
+            }
             //复位车辆状态;若已更新过车位则还需复位总车位数,车位状态
             if (!queueCmd.manual)
             {
@@ -306,7 +310,7 @@ namespace parkMonitor.server.CoreThread
         /// <param name="queueCmd">传入的命令</param>
         /// <param name="disappeared">车辆是否已驶离</param>
         /// <returns></returns>
-        private Data WaitForLaserResource(Command queueCmd, bool disappeared)
+        private Data WaitForLaserResource(Command queueCmd, bool disappeared, out LaserMessage lmRelease)
         {
             //激光数据
             Data data = new Data();
@@ -315,6 +319,7 @@ namespace parkMonitor.server.CoreThread
             int laserID = queueCmd.id / 6 + 1;
             PLCMessage PLCMsg = null;
             jumpOut = false;
+            lmRelease = null;
             MyTimer mt = new MyTimer();
             mt.StartTiming();
             while (!isClosing)
@@ -346,7 +351,8 @@ namespace parkMonitor.server.CoreThread
                                     data.height = lm.data.height;
                                     jumpOut = true;
                                     lm.recorded = false;
-                                    lm.occupied = false;
+                                    //lm.occupied = false;
+                                    lmRelease = lm;
                                     lm.licenseNum = "";
                                     break;
                                 }
@@ -516,12 +522,12 @@ namespace parkMonitor.server.CoreThread
             Data dataReal = new Data();
             int garageID;
             string realParkTime;
-
-            dataReal = WaitForLaserResource(queueCmd, disappeared);
+            LaserMessage lmToBeReleased;
+            dataReal = WaitForLaserResource(queueCmd, disappeared, out lmToBeReleased);
             //判断激光资源有效性,无效则回滚
             if (dataReal == null)
             {
-                Rollback(queueCmd, ppp.parkingSpaceID, false, true);
+                Rollback(queueCmd, ppp.parkingSpaceID, false, true, lmToBeReleased);
                 return;
             }
             lock (Parking_Space.spaceLock)
@@ -568,7 +574,7 @@ namespace parkMonitor.server.CoreThread
                 //判断车位资源有效性,无效则回滚
                 if (ppp == null)
                 {
-                    Rollback(queueCmd, ppp.parkingSpaceID, false, true);
+                    Rollback(queueCmd, ppp.parkingSpaceID, false, true, lmToBeReleased);
                     return;
                 }
 
@@ -625,7 +631,7 @@ namespace parkMonitor.server.CoreThread
 
             if (!WaitForRobotResource(robotID))
             {
-                Rollback(queueCmd, ppp.parkingSpaceID, true, true);
+                Rollback(queueCmd, ppp.parkingSpaceID, true, true, lmToBeReleased);
                 return;
             }
 
@@ -651,12 +657,12 @@ namespace parkMonitor.server.CoreThread
 
             if (!WaitWheelbase(ref frontWheelbase, ref rearWheelbase))
             {
-                Rollback(queueCmd, ppp.parkingSpaceID, true, true);
+                Rollback(queueCmd, ppp.parkingSpaceID, true, true, lmToBeReleased);
                 return;
             }
             if (!WaitForStoreCompletionSignal(queueCmd, ppp.parkingSpaceID, ref robotError, 1))
             {
-                Rollback(queueCmd, ppp.parkingSpaceID, true, true);
+                Rollback(queueCmd, ppp.parkingSpaceID, true, true, lmToBeReleased);
                 return;
             }
 
@@ -667,7 +673,7 @@ namespace parkMonitor.server.CoreThread
             //机械手异常则回滚
             if (!WaitForStoreCompletionSignal(queueCmd, ppp.parkingSpaceID, ref robotError, 0))
             {
-                Rollback(queueCmd, ppp.parkingSpaceID, true, true);
+                Rollback(queueCmd, ppp.parkingSpaceID, true, true, lmToBeReleased);
                 return;
             }
 
@@ -675,6 +681,10 @@ namespace parkMonitor.server.CoreThread
             NumReset(queueCmd);
             Log.WriteLog("停车流程:" + queueCmd.LicenseNum + "停车完成,状态复位");
             UILogServer.ins.info("停车流程:" + queueCmd.LicenseNum + "停车完成,状态复位");
+            if (lmToBeReleased != null)
+            {
+                lmToBeReleased.occupied = false;
+            }
             Robot.robot1.occupied = false;
             //自动化测试用
             //ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
@@ -819,7 +829,7 @@ namespace parkMonitor.server.CoreThread
             robotID = parkingSpaceID / 50 + 1;
             if (!WaitForRobotResource(robotID))
             {
-                Rollback(queueCmd, parkingSpaceID, true, false);
+                Rollback(queueCmd, parkingSpaceID, true, false, null);
                 return;
             }
             //取车
@@ -841,7 +851,7 @@ namespace parkMonitor.server.CoreThread
             //等待PLC取车完成信号
             if (!waitForFetchCompletionSignal(queueCmd, ps.parkingSpaceID, ref robotError, 1))
             {
-                Rollback(queueCmd, ps.parkingSpaceID, true, false);
+                Rollback(queueCmd, ps.parkingSpaceID, true, false, null);
                 return;
             }
             //取车完成
@@ -853,7 +863,7 @@ namespace parkMonitor.server.CoreThread
             PLC.SetMessage(cm2);
             if (!waitForFetchCompletionSignal(queueCmd, ps.parkingSpaceID, ref robotError, 0))
             {
-                Rollback(queueCmd, ps.parkingSpaceID, true, false);
+                Rollback(queueCmd, ps.parkingSpaceID, true, false, null);
                 return;
             }
             Robot.robot1.occupied = false;

+ 1 - 1
parkMonitor/server/NumMachine/NumMachine.cs

@@ -553,7 +553,7 @@ namespace parkMonitor.server
                     do
                     {
                         //遍历,筛到号牌则入队
-                        if (enumer.Current.Value >= (int)(filterCount * 0.5) && enumer.Current.Key != null && !LicBuffer.Contains(enumer.Current.Key))
+                        if (enumer.Current.Value >= (int)(filterCount * 0.7) && enumer.Current.Key != null && !LicBuffer.Contains(enumer.Current.Key))
                         {
                             if (nmMsg.aNode == null || nmMsg.aNode.LicenseNum == null || nmMsg.aNode.LicenseNum != enumer.Current.Key.LicenseNum)
                             {

+ 11 - 5
parkMonitor/server/PLCLinker/PLCLinker.cs

@@ -867,7 +867,7 @@ namespace parkMonitor.server
         public int laser_status_address { get; set; }
         public int id { get; set; }
         private int LASER_RESCAN_COUNT, LASER_HEARTBEAT_PERIOD, laser_rescan_countdown, laser_heartbeat_countdown;
-        private bool laser_record, laser_heartbeat_test, enable_status_check = true, disconnected = false;
+        private bool laser_record, laser_heartbeat_test, enable_status_check = true, disconnected = false, disordered = false;
         private HashSet<int> laser_heartbeat = new HashSet<int>();
         private IEquipments plc = null;
         public LaserMessage laserMsg = new LaserMessage();
@@ -904,10 +904,12 @@ namespace parkMonitor.server
                 int status_addr = laser_status_address;
                 if (addr == status_addr)
                 {
-                    if (!disconnected)
+                    laserMsg.status = value;
+                    //UILogServer.ins.log(value.ToString());
+                    //系统异常状态复位
+                    if (value != 5 && disordered)
                     {
-                        laserMsg.status = value;
-                        //UILogServer.ins.log(value.ToString());
+                        disordered = false;
                     }
                 }
             }
@@ -1045,7 +1047,11 @@ namespace parkMonitor.server
                         lock (laserMsg)
                         {
                             laser_heartbeat_test = false;
-                            UILogServer.ins.error("激光系统异常,请检查");
+                            if (!disordered)
+                            {
+                                UILogServer.ins.error("激光系统异常,请检查");
+                            }
+                            disordered = true;
                         }
                     }