yct il y a 7 ans
Parent
commit
7ae6118788

BIN
parkMonitor/resource/inlineRes/plcAddr.csv


+ 33 - 28
parkMonitor/server/CoreThread/AbstractCmd.cs

@@ -669,29 +669,7 @@ namespace parkMonitor.server.CoreThread
             {
                 bool displayed = false;
                 //等待获取缓冲位资源
-                while (pb == null && !MyTimer.restart)
-                {
-                    pb = ParkingBufferManager.ins.MallocParkingBuffer(queueCmd.id);
-                    if (pb != null)
-                    {
-                        Log.WriteLog(LogType.NOT_DATABASE, LogFile.INFO, queueCmd.LicenseNum + "分配缓冲位:" + pb.bufferID);
-                        break;
-                    }
-                    else if (!displayed)
-                    {
-                        UILogServer.ins.error(queueCmd.LicenseNum + "缓冲位已满");
-                        Log.WriteLog(LogType.NOT_DATABASE, LogFile.WARNING, queueCmd.LicenseNum + "缓冲位分配失败");
-                        displayed = true;
-                    }
-                    Thread.Sleep(2000);
-                }
-                if (pb == null)
-                {
-                    UILogServer.ins.error("缓冲位分配失败,流程已回滚");
-                    Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "缓冲位分配失败,流程已回滚");
-                    Rollback(queueCmd, 0, false, true, lmToBeReleased);
-                    return;
-                }
+                
 
                 //获取车位资源
                 ppp = WaitForParkingSpaceResource(queueCmd, out freeSpaceCount);
@@ -739,9 +717,35 @@ namespace parkMonitor.server.CoreThread
                     return;
                 }
 
+                while (pb == null && !MyTimer.restart)
+                {
+                    //pb = ParkingBufferManager.ins.MallocParkingBuffer(queueCmd.id);
+                    pb = new ParkingBuffer(ppp.parkingSpaceX, true);
+                    ParkingBufferManager.ins.SetParkingBuffer(ppp.parkingSpaceX, true);
+                    if (pb != null)
+                    {
+                        Log.WriteLog(LogType.NOT_DATABASE, LogFile.INFO, queueCmd.LicenseNum + "分配缓冲位:" + pb.bufferID);
+                        break;
+                    }
+                    else if (!displayed)
+                    {
+                        UILogServer.ins.error(queueCmd.LicenseNum + "缓冲位已满");
+                        Log.WriteLog(LogType.NOT_DATABASE, LogFile.WARNING, queueCmd.LicenseNum + "缓冲位分配失败");
+                        displayed = true;
+                    }
+                    Thread.Sleep(2000);
+                }
+                if (pb == null)
+                {
+                    UILogServer.ins.error("缓冲位分配失败,流程已回滚");
+                    Log.WriteLog(LogType.NOT_DATABASE, LogFile.ERROR, "缓冲位分配失败,流程已回滚");
+                    Rollback(queueCmd, 0, false, true, lmToBeReleased);
+                    return;
+                }
+
                 //车位赋值与写数据库
                 if (!queueCmd.manual)
-                {                  
+                {
                 }
                 else
                 {
@@ -798,8 +802,8 @@ namespace parkMonitor.server.CoreThread
             //分配的车位数据
             cm.parkingSpaceID = Convert.ToString(ppp.parkingSpaceID);
             //!!!之前把停车位X坐标当做缓冲位ID,现修改为被管理的缓冲位ID,之后PLC地址需调整!!!
-            //cm.parkingSpaceX = Convert.ToString(ppp.parkingSpaceX);
-            cm.parkingSpaceX = Convert.ToString(pb.bufferID);
+            cm.parkingSpaceX = Convert.ToString(ppp.parkingSpaceX);
+            //cm.parkingSpaceX = Convert.ToString(pb.bufferID);
             cm.parkingSpaceY = Convert.ToString(ppp.parkingSpaceY);
             cm.parkingSpaceZ = Convert.ToString(ppp.parkingSpaceZ);
             PLC.SetMessage(cm);
@@ -841,7 +845,7 @@ namespace parkMonitor.server.CoreThread
             Robot.robot1.waitCount -= 1;
             //自动化测试用
             //ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
-            ParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
+            //ParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
             //根据号牌查找车型
             //int vehicleTypeID = oper.getVehicleTypeID(numberPlate);
             //判断测量数据是否准确
@@ -871,6 +875,7 @@ namespace parkMonitor.server.CoreThread
                             //using (MySqlConnection conn = new MySqlConnection(DBConnection.remoteConf))
                             {
                                 Operation.TryOpen(conn);
+                                //string insertRecordSql = "insert into parkingrecords(userID,numberPlate,parkingSpaceID,garageID,parkingRecordsState,realParkTime) values('" + userID + "','" + queueCmd.LicenseNum + "','" + ppp.parkingSpaceID + "','" + garageID + "',3,'" + realParkTime + "')";
                                 string insertRecordSql = "insert into parkingrecords(userID,numberPlate,parkingSpaceID,garageID,parkingRecordsState,realParkTime) values('" + userID + "','" + queueCmd.LicenseNum + "','" + ppp.parkingSpaceID + "','" + garageID + "',3,'" + realParkTime + "')";
                                 if (!Operation.MyTransaction(conn, insertRecordSql, out parkingRecordsID))
                                 {
@@ -1121,7 +1126,7 @@ namespace parkMonitor.server.CoreThread
 
             //自动化测试用
             //ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
-            ParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
+            //ParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
 
             int freeSpaceCount = ParkingSpaceManager.ins.GetFreeSpaceCount();
             //数据库更新

+ 17 - 0
parkMonitor/server/CoreThread/SpaceManager.cs

@@ -311,6 +311,23 @@ namespace parkMonitor.server.CoreThread
                 return false;
             }
         }
+
+        public bool SetParkingBuffer(int parkingBufferID, bool status)
+        {
+            if (CheckIfBufferExist(parkingBufferID))
+            {
+                if (bufferList[parkingBufferID].occupied != status)
+                {
+                    bufferList[parkingBufferID].occupied = status;
+                    return true;
+                }
+                else { return false; }
+            }
+            else
+            {
+                return false;
+            }
+        }
     }
     /// <summary>
     /// 缓冲位单元

+ 14 - 14
parkMonitor/server/PLCLinker/PLCLinker.cs

@@ -158,7 +158,7 @@ namespace parkMonitor.server
                     decompressIndex.Add((48 + i).ToString());
                 }
                 //70-76
-                for (int i = 0; i < 7; i++)
+                for (int i = 0; i < 13; i++)
                 {
                     decompressIndex.Add((70 + i).ToString());
                 }
@@ -739,19 +739,19 @@ namespace parkMonitor.server
                 }
             });
 
-            //模拟plc与激光自动操作
-            Task.Factory.StartNew(() =>
-            {
-                laserAnim();
-            });
-            Task.Factory.StartNew(() =>
-            {
-                wheelbaseAnim();
-            });
-            Task.Factory.StartNew(() =>
-            {
-                autoCycling();
-            });
+            ////模拟plc与激光自动操作
+            //Task.Factory.StartNew(() =>
+            //{
+            //    laserAnim();
+            //});
+            //Task.Factory.StartNew(() =>
+            //{
+            //    wheelbaseAnim();
+            //});
+            //Task.Factory.StartNew(() =>
+            //{
+            //    autoCycling();
+            //});
         }
 
         /// <summary>