Commit 96b0eb0d LN

扫码后休眠10ms。去掉部分task

1 个父辈 2bb2f618
...@@ -130,6 +130,7 @@ namespace OnlineStore.AssemblyLine ...@@ -130,6 +130,7 @@ namespace OnlineStore.AssemblyLine
LogUtil.logBox = this.logBox; LogUtil.logBox = this.logBox;
LoadOk = true; LoadOk = true;
HideForm(); HideForm();
lastLogTime = DateTime.Now.AddMinutes(-10);
timer1.Start(); timer1.Start();
} }
...@@ -452,7 +453,7 @@ namespace OnlineStore.AssemblyLine ...@@ -452,7 +453,7 @@ namespace OnlineStore.AssemblyLine
try try
{ {
TimeSpan sp = DateTime.Now - lastLogTime; TimeSpan sp = DateTime.Now - lastLogTime;
if (sp.TotalMinutes > 10) if (sp.TotalMinutes >= 5)
{ {
lastLogTime = DateTime.Now; lastLogTime = DateTime.Now;
...@@ -479,7 +480,7 @@ namespace OnlineStore.AssemblyLine ...@@ -479,7 +480,7 @@ namespace OnlineStore.AssemblyLine
private void timer1_Tick(object sender, EventArgs e) private void timer1_Tick(object sender, EventArgs e)
{ {
LogM(); LogM();
if (!this.Visible) if (!listView1.Visible)
{ {
return; return;
} }
......
...@@ -254,8 +254,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -254,8 +254,8 @@ namespace OnlineStore.DeviceLibrary
if (!isInSuddenDown) if (!isInSuddenDown)
{ {
LogUtil.error(Name + "收到急停信号,等待300后再次验证急停"); LogUtil.error(Name + "收到急停信号,等待300后再次验证急停");
Task.Factory.StartNew(delegate //Task.Factory.StartNew(delegate
{ //{
Thread.Sleep(300); Thread.Sleep(300);
if (IOValue(IO_Type.DLine_SuddenStop).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.DLine_SuddenStop).Equals(IO_VALUE.LOW))
{ {
...@@ -263,7 +263,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -263,7 +263,7 @@ namespace OnlineStore.DeviceLibrary
Alarm(LineAlarmType.SuddenStop); Alarm(LineAlarmType.SuddenStop);
return; return;
} }
}); //});
} }
} }
else if (IOValue(IO_Type.DLine_Reset).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.DLine_Reset).Equals(IO_VALUE.HIGH))
......
...@@ -353,8 +353,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -353,8 +353,8 @@ namespace OnlineStore.DeviceLibrary
if (!isInSuddenDown) if (!isInSuddenDown)
{ {
LogUtil.error(Name + "收到急停信号,等待300后再次验证急停"); LogUtil.error(Name + "收到急停信号,等待300后再次验证急停");
Task.Factory.StartNew(delegate //Task.Factory.StartNew(delegate
{ //{
Thread.Sleep(300); Thread.Sleep(300);
if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SL_SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
...@@ -365,7 +365,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -365,7 +365,7 @@ namespace OnlineStore.DeviceLibrary
} }
return; return;
} }
}); //});
} }
} }
else if (IOValue(IO_Type.SL_Reset_BTN).Equals(IO_VALUE.HIGH)) else if (IOValue(IO_Type.SL_Reset_BTN).Equals(IO_VALUE.HIGH))
...@@ -742,7 +742,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -742,7 +742,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(logName + "开始,先设置状态为None"); LogUtil.info(logName + "开始,先设置状态为None");
AgvClient.SetStatus(Config.AgvOutName, LastOutShelfId, ClientAction.None, ClientLevel.High, true); AgvClient.SetStatus(Config.AgvOutName, LastOutShelfId, ClientAction.None, ClientLevel.High, true);
if (IOValue(IO_Type.SL_Out_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.SL_Out_Check).Equals(IO_VALUE.HIGH))
{ {
// AgvClient.SetStatus(Config.AgvOutName,"",ClientAction.MayLeave,ClientLevel.High); // AgvClient.SetStatus(Config.AgvOutName,"",ClientAction.MayLeave,ClientLevel.High);
ProcessShelfOut = true; ProcessShelfOut = true;
//出口阻挡下降,出口线体转动 //出口阻挡下降,出口线体转动
...@@ -751,11 +751,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -751,11 +751,11 @@ namespace OnlineStore.DeviceLibrary
bool result = WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 60000); bool result = WaitIo(IO_Type.SL_Out_Check, IO_VALUE.LOW, 60000);
if (!result) if (!result)
{ {
LogUtil.info(logName + " 等待SL_Out_Check=LOW超时,等待8000后停止转动,发送FinishLeave"); LogUtil.info(logName + " 等待SL_Out_Check=LOW超时,等待8000后停止转动,发送FinishLeave");
} }
else else
{ {
LogUtil.info(logName + " 已收到SL_Out_Check=LOW ,等待8000后停止转动,发送FinishLeave"); LogUtil.info(logName + " 已收到SL_Out_Check=LOW ,等待8000后停止转动,发送FinishLeave");
} }
//再转动2000 //再转动2000
...@@ -763,14 +763,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -763,14 +763,13 @@ namespace OnlineStore.DeviceLibrary
//停止转动 ,阻挡上升 //停止转动 ,阻挡上升
IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW); IOMove(IO_Type.SL_OutSideWay_Run, IO_VALUE.LOW);
IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW); IOMove(IO_Type.SL_Out_StopDown, IO_VALUE.LOW);
AgvClient.SetStatus(Config.AgvOutName, LastOutShelfId, ClientAction.FinishLeave,ClientLevel.High,true); AgvClient.SetStatus(Config.AgvOutName, LastOutShelfId, ClientAction.FinishLeave, ClientLevel.High, true);
Task.Factory.StartNew(delegate
{ Thread.Sleep(1000);
Thread.Sleep(1000); AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.None, ClientLevel.High, true);
AgvClient.SetStatus(Config.AgvOutName, "", ClientAction.None, ClientLevel.High, true);
});
ProcessShelfOut = false; ProcessShelfOut = false;
LogUtil.info(logName + ",停止转动,清空料架["+ LastOutShelfId + "], 结束"); LogUtil.info(logName + ",停止转动,清空料架[" + LastOutShelfId + "], 结束");
} }
else else
{ {
...@@ -844,11 +843,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -844,11 +843,9 @@ namespace OnlineStore.DeviceLibrary
} }
//料架可离开 //料架可离开
AgvClient.SetStatus(Config.AgvInName, "", ClientAction.FinishEnter, ClientLevel.High, true); AgvClient.SetStatus(Config.AgvInName, "", ClientAction.FinishEnter, ClientLevel.High, true);
Task.Factory.StartNew(delegate
{ Thread.Sleep(1000);
Thread.Sleep(1000); AgvClient.SetStatus(Config.AgvInName, "", ClientAction.None, ClientLevel.High, true);
AgvClient.SetStatus(Config.AgvInName, "", ClientAction.None, ClientLevel.High, true);
});
ProcessShelfEnter = false; ProcessShelfEnter = false;
LogUtil.info(logName + " 结束"); LogUtil.info(logName + " 结束");
} }
......
...@@ -758,19 +758,19 @@ namespace OnlineStore.DeviceLibrary ...@@ -758,19 +758,19 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_13_ScanCode)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_13_ScanCode))
{ {
if (ScanCodeTask == null || ScanCodeTask.IsCompleted) //if (ScanCodeTask == null || ScanCodeTask.IsCompleted)
{ //{
MoveInfo.NextMoveStep(LineMoveStep.FI_14_CylinderTake); MoveInfo.NextMoveStep(LineMoveStep.FI_14_CylinderTake);
InLog("料盘移栽" + MoveInfo.SLog + ":上料横移取料端"); InLog("料盘移栽" + MoveInfo.SLog + ":上料横移取料端");
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Give, IO_Type.SL_MoveCylinder_Take); CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Give, IO_Type.SL_MoveCylinder_Take);
ClearTimeoutAlarm("扫码执行结束超时"); ClearTimeoutAlarm("扫码执行结束超时");
} //}
else if (MoveInfo.IsTimeOut(60)) //else if (MoveInfo.IsTimeOut(60))
{ //{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] 扫码执行结束超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒"; // WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveStep + "] 扫码执行结束超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID * 1000 + 30); // LogUtil.error(WarnMsg, DeviceID * 1000 + 30);
Alarm(LineAlarmType.IoSingleTimeOut); // Alarm(LineAlarmType.IoSingleTimeOut);
} //}
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_14_CylinderTake)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FI_14_CylinderTake))
{ {
...@@ -1229,7 +1229,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1229,7 +1229,7 @@ namespace OnlineStore.DeviceLibrary
{ {
Task<List<string>> scanTask = Task.Factory.StartNew(delegate Task<List<string>> scanTask = Task.Factory.StartNew(delegate
{ {
Thread.Sleep(500); Thread.Sleep(100);
NextCodeList = CodeManager.CameraScan(Config.GetCameraList(), Name.Trim()+"预扫码"); NextCodeList = CodeManager.CameraScan(Config.GetCameraList(), Name.Trim()+"预扫码");
bool isCanUse = true; bool isCanUse = true;
//判断是否可用 //判断是否可用
...@@ -1278,7 +1278,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1278,7 +1278,7 @@ namespace OnlineStore.DeviceLibrary
CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up); CylinderMove(MoveInfo, IO_Type.SL_MoveCylinder_Down, IO_Type.SL_MoveCylinder_Up);
} }
} }
private Task ScanCodeTask = null; //private Task ScanCodeTask = null;
private void FI_13_ScanCode() private void FI_13_ScanCode()
{ {
if (CylinderIsOk(IO_Type.SL_MoveCylinder_Take,IO_Type.SL_MoveCylinder_Give)) if (CylinderIsOk(IO_Type.SL_MoveCylinder_Take,IO_Type.SL_MoveCylinder_Give))
...@@ -1288,7 +1288,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1288,7 +1288,7 @@ namespace OnlineStore.DeviceLibrary
LastCodeList = new List<string>(); LastCodeList = new List<string>();
ScanCodeTask = null; //ScanCodeTask = null;
if (NextCodeList.Count > 0) if (NextCodeList.Count > 0)
{ {
InLog("料盘移栽" + MoveInfo.SLog + ":开始扫码:使用预扫码"); InLog("料盘移栽" + MoveInfo.SLog + ":开始扫码:使用预扫码");
...@@ -1304,24 +1304,28 @@ namespace OnlineStore.DeviceLibrary ...@@ -1304,24 +1304,28 @@ namespace OnlineStore.DeviceLibrary
InLog("料盘移栽" + MoveInfo.SLog + ":开始扫码"); InLog("料盘移栽" + MoveInfo.SLog + ":开始扫码");
MoveInfo.OneWaitCanEndStep = true; MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitFeedScanCode()); MoveInfo.WaitList.Add(WaitResultInfo.WaitFeedScanCode());
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(7000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(20000));
try try
{ {
ScanCodeTask = Task.Factory.StartNew(delegate //ScanCodeTask = Task.Factory.StartNew(delegate
//{
LastCodeList = CodeManager.CameraScan(Config.GetCameraList(), Name);
bool hasRightCode = CodeManager.HasRightCode(LastCodeList.ToArray());
if (!hasRightCode)
{ {
LastCodeList = CodeManager.CameraScan(Config.GetCameraList(), Name); LastCodeList = CodeManager.CameraScan(Config.GetCameraList(), Name, false, 3000);
bool hasRightCode = CodeManager.HasRightCode(LastCodeList.ToArray()); }
if (!hasRightCode) //return LastCodeList;
{ //});
LastCodeList = CodeManager.CameraScan(Config.GetCameraList(), Name, false, 3000);
}
return LastCodeList;
});
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("FI_13_ScanCode扫码出错:", ex); LogUtil.error("FI_13_ScanCode扫码出错:", ex);
} }
finally
{
MoveInfo.EndStepWait();
}
} }
else else
{ {
......
...@@ -543,8 +543,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -543,8 +543,8 @@ namespace OnlineStore.DeviceLibrary
int targetP = Config.GetUpdownP2Detial(MoveInfo.MoveParam.PlateH, MoveInfo.MoveParam.PlateW); int targetP = Config.GetUpdownP2Detial(MoveInfo.MoveParam.PlateH, MoveInfo.MoveParam.PlateW);
if (UpdownAxis.IsInPosition(targetP)) if (UpdownAxis.IsInPosition(targetP))
{ {
FO_214_CylinderDown(outType); FO_214_CylinderDown(outType);
} }
else else
{ {
...@@ -594,7 +594,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -594,7 +594,7 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_213_UpdownAxisToP2)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_213_UpdownAxisToP2))
{ {
FO_214_CylinderDown(outType); FO_214_CylinderDown(outType);
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_214_CylinderDown)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_214_CylinderDown))
{ {
...@@ -669,15 +669,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -669,15 +669,14 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutLog(outType + MoveInfo.SLog + ":移栽伺服上升到待机点P1,通知服务器 afterPutCut"); OutLog(outType + MoveInfo.SLog + ":移栽伺服上升到待机点P1,通知服务器 afterPutCut");
UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed); UpdownAxis.AbsMove(MoveInfo, Config.UpDownAxisP1, Config.UpdownAxis_P1Speed);
Task.Factory.StartNew(delegate afterPutOk = false;
string msg = SServerManager.afterPutCut(Name, CurrShelfId, MoveInfo.MoveParam.WareCode, "", OutStoreCount, out taskData);
if (String.IsNullOrEmpty(msg).Equals(false))
{ {
string msg = SServerManager.afterPutCut(Name, CurrShelfId, MoveInfo.MoveParam.WareCode, "", OutStoreCount, out taskData); LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfId + "】【" + OutStoreCount.ToString() + "】afterPutCut 结果:" + msg);
if (String.IsNullOrEmpty(msg).Equals(false)) taskData = null;
{ }
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + CurrShelfId + "】【" + OutStoreCount.ToString() + "】afterPutCut 结果:" + msg); afterPutOk = true;
taskData = null;
}
});
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_221_UpdownAxisToP1)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_221_UpdownAxisToP1))
{ {
...@@ -706,42 +705,52 @@ namespace OnlineStore.DeviceLibrary ...@@ -706,42 +705,52 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_222_CylinderTake)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.FO_222_CylinderTake))
{ {
//出库结束 TODO if (afterPutOk)
// bool isNeedSendShelf = false;
//判断料架是否满了
int currPositon = BatchAxis.GetAclPosition();
int tp = currPositon - Config.Height_ChangeValue * 40;
if (tp <= Config.BatchAxisP2)
{
SendOutShelfOut("当前提升轴位置:" + currPositon + ",料架已满,需要送出料架");
}
else if (OutEndSendShelfOut)
{ {
SendOutShelfOut("当前提升轴位置:" + currPositon + ",OutEndSendShelfOut,需要送出料架"); //出库结束 TODO
} // bool isNeedSendShelf = false;
else //判断料架是否满了
{ int currPositon = BatchAxis.GetAclPosition();
//判断是否需要送出料架' int tp = currPositon - Config.Height_ChangeValue * 40;
if (taskData == null) if (tp <= Config.BatchAxisP2)
{ {
SendOutShelfOut("出料结束,taskData=null,需要送出料架"); SendOutShelfOut("当前提升轴位置:" + currPositon + ",料架已满,需要送出料架");
}
else if (MoveInfo.MoveParam.cutReel && taskData.cutTask <= 0)
{
SendOutShelfOut("分盘料,cutTask=" + taskData.cutTask + ",需要送出料架");
} }
else if (MoveInfo.MoveParam.urgentReel && taskData.urgentTask <= 0) else if (OutEndSendShelfOut)
{ {
SendOutShelfOut("紧急料,urgentTask=" + taskData.urgentTask + ",需要送出料架"); SendOutShelfOut("当前提升轴位置:" + currPositon + ",OutEndSendShelfOut,需要送出料架");
} }
else else
{ {
OutLog("出料完成,出料结束"); //判断是否需要送出料架'
MoveEndS(); if (taskData == null)
{
SendOutShelfOut("出料结束,taskData=null,需要送出料架");
}
else if (MoveInfo.MoveParam.cutReel && taskData.cutTask <= 0)
{
SendOutShelfOut("分盘料,cutTask=" + taskData.cutTask + ",需要送出料架");
}
else if (MoveInfo.MoveParam.urgentReel && taskData.urgentTask <= 0)
{
SendOutShelfOut("紧急料,urgentTask=" + taskData.urgentTask + ",需要送出料架");
}
else
{
OutLog("出料完成,出料结束");
MoveEndS();
}
} }
} }
else if (MoveInfo.IsTimeOut(60))
{
WarnMsg = SecondMoveInfo.Name + "[" + SecondMoveInfo.MoveStep + "] 等待给服务器发送afterPut完成超时 [" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID * 1000 + 21);
Alarm(LineAlarmType.IoSingleTimeOut);
}
} }
} }
private bool afterPutOk = false;
private void FO_214_CylinderDown(string outType) private void FO_214_CylinderDown(string outType)
{ {
if (CylinderIsOk(IO_Type.SL_MoveCylinder_Up, IO_Type.SL_MoveCylinder_Down)) if (CylinderIsOk(IO_Type.SL_MoveCylinder_Up, IO_Type.SL_MoveCylinder_Down))
......
...@@ -686,15 +686,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -686,15 +686,15 @@ namespace OnlineStore.DeviceLibrary
if (isInSuddenDown.Equals(false)) if (isInSuddenDown.Equals(false))
{ {
LogUtil.error(Name + "收到急停信号,等待300后再次验证急停"); LogUtil.error(Name + "收到急停信号,等待300后再次验证急停");
Task.Factory.StartNew(delegate //Task.Factory.StartNew(delegate
{ //{
Thread.Sleep(300); Thread.Sleep(300);
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW)) if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{ {
SetWarnMsg("收到急停信号,报警急停"); SetWarnMsg("收到急停信号,报警急停");
Alarm(LineAlarmType.SuddenStop); Alarm(LineAlarmType.SuddenStop);
} }
}); //});
} }
} }
else if (fuweiValue.Equals(IO_VALUE.HIGH) && (!fuweiValue.Equals(lastFuwei))) else if (fuweiValue.Equals(IO_VALUE.HIGH) && (!fuweiValue.Equals(lastFuwei)))
......
...@@ -555,10 +555,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -555,10 +555,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(Name + "托盘号【" + currTrayNum + "】入库信息【" + currCode.ToStr() + "】料仓未验证成功,不拦截托盘,更新此托盘为NG,从waitInStoreList中删除,取消入库任务"); LogUtil.error(Name + "托盘号【" + currTrayNum + "】入库信息【" + currCode.ToStr() + "】料仓未验证成功,不拦截托盘,更新此托盘为NG,从waitInStoreList中删除,取消入库任务");
TrayManager.UpdateInStoreNG(currTrayNum, true, "Box验证入库失败"); TrayManager.UpdateInStoreNG(currTrayNum, true, "Box验证入库失败");
waitInStoreList.RemoveAt(reIndex); waitInStoreList.RemoveAt(reIndex);
Task.Factory.StartNew(delegate SServerManager.cancelPutInTask(Name, currCode.WareCode);
{
SServerManager.cancelPutInTask(Name, currCode.WareCode);
});
return false; return false;
} }
...@@ -763,7 +760,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -763,7 +760,7 @@ namespace OnlineStore.DeviceLibrary
else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_06_TopUp)) else if (SecondMoveInfo.MoveStep.Equals(LineMoveStep.MIO_06_TopUp))
{ {
CheckLog("托盘阻挡*************** 托盘号【" + currTrayNum + "】"); CheckLog("托盘阻挡*************** 托盘号【" + currTrayNum + "】");
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
//托盘号正确 //托盘号正确
//preTrayNum = num; //preTrayNum = num;
bool isNeedMove = false; bool isNeedMove = false;
......
...@@ -639,19 +639,22 @@ namespace OnlineStore.DeviceLibrary ...@@ -639,19 +639,22 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.MoveParam.urgentReel && this.Config.SidesWayNum.Equals(4)) if (MoveInfo.MoveParam.urgentReel && this.Config.SidesWayNum.Equals(4))
{ {
Task.Factory.StartNew(delegate afterPutCutOK = false;
OutLog("出料:" + MoveInfo.SLog + ",紧急料,且SidesWayNum=4,发送 afterPutCut");
TaskData taskData;
string shefId = "BN";
int ShelfLoc = 1;
string msg = SServerManager.afterPutCut(Name, shefId, MoveInfo.MoveParam.WareCode, "", ShelfLoc, out taskData);
if (String.IsNullOrEmpty(msg).Equals(false))
{ {
OutLog("出料:" + MoveInfo.SLog + ",紧急料,且SidesWayNum=4,发送 afterPutCut"); LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + shefId + "】【" + ShelfLoc.ToString() + "】afterPutCut 结果:" + msg);
TaskData taskData; taskData = null;
string shefId = "BN"; }
int ShelfLoc = 1; afterPutCutOK = true;
string msg = SServerManager.afterPutCut(Name, shefId, MoveInfo.MoveParam.WareCode, "", ShelfLoc, out taskData); }
if (String.IsNullOrEmpty(msg).Equals(false)) else
{ {
LogUtil.error(Name + "【" + MoveInfo.MoveParam.WareCode + "】【" + shefId + "】【" + ShelfLoc.ToString() + "】afterPutCut 结果:" + msg); afterPutCutOK = true;
taskData = null;
}
});
} }
} }
else if (MoveInfo.IsTimeOut()) else if (MoveInfo.IsTimeOut())
...@@ -692,10 +695,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -692,10 +695,20 @@ namespace OnlineStore.DeviceLibrary
} }
else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_10_CylinderAfter)) else if (MoveInfo.MoveStep.Equals(LineMoveStep.PO_10_CylinderAfter))
{ {
OutLog("出料【" + posId + "】处理完成!"); if (afterPutCutOK)
MoveEndS(); {
OutLog("出料【" + posId + "】处理完成!");
MoveEndS();
}
else if (MoveInfo.IsTimeOut(60))
{
WarnMsg = MoveInfo.Name + "[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]等待 给服务器发送afterPutCutTask完成 " + "超时[" + Math.Round(MoveInfo.StepSpan().TotalSeconds, 1) + "]秒";
LogUtil.error(WarnMsg, DeviceID * 1000 + 20);
Alarm(LineAlarmType.IoSingleTimeOut);
}
} }
} }
private bool afterPutCutOK= false ;
private OutTrayLineBean GetDisLine() private OutTrayLineBean GetDisLine()
{ {
try try
......
...@@ -98,8 +98,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -98,8 +98,8 @@ namespace OnlineStore.DeviceLibrary
private static int ScanCount = 0; private static int ScanCount = 0;
private static int codeCount = ConfigAppSettings.GetIntValue(Setting_Init.CodeCount); private static int codeCount = ConfigAppSettings.GetIntValue(Setting_Init.CodeCount);
[HandleProcessCorruptedStateExceptions] [HandleProcessCorruptedStateExceptions]
public static List<string> CameraScan(List<string> cameraList, string deviceName, bool findRightCodeBreak = false,int timeOut=1500) public static List<string> CameraScan(List<string> cameraList, string deviceName, bool findRightCodeBreak = false, int timeOut = 1500)
{ {
List<string> codeList = new List<string>(); List<string> codeList = new List<string>();
if (cameraList == null || cameraList.Count <= 0) if (cameraList == null || cameraList.Count <= 0)
{ {
...@@ -114,7 +114,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -114,7 +114,7 @@ namespace OnlineStore.DeviceLibrary
continue; continue;
} }
ScanCount++; ScanCount++;
DateTime startTime = DateTime.Now; DateTime startTime = DateTime.Now;
if (deviceName != "") if (deviceName != "")
{ {
LogUtil.info(deviceName + " 【" + cameraName + "】开始取图片"); LogUtil.info(deviceName + " 【" + cameraName + "】开始取图片");
...@@ -123,14 +123,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -123,14 +123,14 @@ namespace OnlineStore.DeviceLibrary
bool findRightCode = false; bool findRightCode = false;
try try
{ {
ho_Image = Camera._cam.CaptureOnImage(cameraName); bool result = Camera._cam.CaptureOnImage(cameraName, out ho_Image);
if (ho_Image == null) if (!result || ho_Image == null)
{ {
LogUtil.error(deviceName + " 【" + cameraName + "】取图片失败[" + Camera._cam.ErrInfo + "],关闭相机"); LogUtil.error(deviceName + " 【" + cameraName + "】取图片失败[" + Camera._cam.ErrInfo + "],关闭相机");
CloseCamera(cameraName); CloseCamera(cameraName);
continue; continue;
} }
LogUtil.debug(deviceName + " 【" + cameraName + "】取图片完成,开始扫码"); LogUtil.debug(deviceName + " 【" + cameraName + "】取图片完成,开始扫码");
List<CodeInfo> cc = new List<CodeInfo>(); List<CodeInfo> cc = new List<CodeInfo>();
string r = ""; string r = "";
...@@ -159,14 +159,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -159,14 +159,14 @@ namespace OnlineStore.DeviceLibrary
} }
} }
if (findRightCodeBreak&&findRightCode) if (findRightCodeBreak && findRightCode)
{ {
break; break;
} }
} }
if (!findRightCode) if (!findRightCode)
{ {
SaveImageToFile(deviceName, cameraName, ho_Image); SaveImageToFile(deviceName, cameraName, ho_Image);
} }
if (deviceName != "" || r != "") if (deviceName != "" || r != "")
{ {
...@@ -184,14 +184,17 @@ namespace OnlineStore.DeviceLibrary ...@@ -184,14 +184,17 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(deviceName + " 扫码出错:" + ex.ToString()); LogUtil.error(deviceName + " 扫码出错:" + ex.ToString());
} }
finally finally
{ {
if (ho_Image != null) if (ho_Image != null)
{ {
ho_Image.Dispose(); ho_Image.Dispose();
ho_Image = null; ho_Image = null;
} }
// GC.Collect();
Thread.Sleep(10);
} }
} }
} }
catch (AccessViolationException e) catch (AccessViolationException e)
{ {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!