|
@@ -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,11 +681,13 @@ 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)));
|
|
|
-
|
|
|
+ //ManualParkingSimul.ins.Update(Int32.Parse(queueCmd.LicenseNum.Substring(2, 1)));
|
|
|
//根据号牌查找车型
|
|
|
//int vehicleTypeID = oper.getVehicleTypeID(numberPlate);
|
|
|
//判断测量数据是否准确
|
|
@@ -828,10 +836,10 @@ namespace parkMonitor.server.CoreThread
|
|
|
cm = new ControlMessage();
|
|
|
|
|
|
int robotID = 0;
|
|
|
- robotID = parkingSpaceID / 15 + 1;
|
|
|
+ robotID = parkingSpaceID / 50 + 1;
|
|
|
if (!WaitForRobotResource(robotID))
|
|
|
{
|
|
|
- Rollback(queueCmd, parkingSpaceID, false, false);
|
|
|
+ Rollback(queueCmd, parkingSpaceID, true, false, null);
|
|
|
return;
|
|
|
}
|
|
|
//取车
|
|
@@ -853,7 +861,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
//等待PLC取车完成信号
|
|
|
if (!waitForFetchCompletionSignal(queueCmd, ps.parkingSpaceID, ref robotError, 1))
|
|
|
{
|
|
|
- Rollback(queueCmd, ps.parkingSpaceID, false, false);
|
|
|
+ Rollback(queueCmd, ps.parkingSpaceID, true, false, null);
|
|
|
return;
|
|
|
}
|
|
|
//取车完成
|
|
@@ -865,7 +873,7 @@ namespace parkMonitor.server.CoreThread
|
|
|
PLC.SetMessage(cm2);
|
|
|
if (!waitForFetchCompletionSignal(queueCmd, ps.parkingSpaceID, ref robotError, 0))
|
|
|
{
|
|
|
- Rollback(queueCmd, ps.parkingSpaceID, false, false);
|
|
|
+ Rollback(queueCmd, ps.parkingSpaceID, true, false, null);
|
|
|
return;
|
|
|
}
|
|
|
Robot.robot1.occupied = false;
|