public void TdTestTask(TDObject obj, double stdTpt,double dPc)
{
for (int i = 0; i < obj.BatName.Count; i++)
{
string sTempIp = obj.BatName[i];
#region -- 繼續指令 --
//增加綫程任務
if (!tdTask.Contains(RealDataQueue[sTempIp].Addr + "-" + RealDataQueue[sTempIp].Chid)
&& (EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.stepname == EnumState.WaitTempDebug)
{
tdTask.Add(RealDataQueue[sTempIp].Addr + "-" + RealDataQueue[sTempIp].Chid);
Thread.Sleep(1000);
Task.Factory.StartNew(() =>
{
Console.WriteLine("添加綫程:" + sTempIp);
//創建時鐘
Stopwatch stopWath = new Stopwatch();
stopWath.Start();
while (true)
{
Thread.Sleep(1000);
//Console.WriteLine("時間:" + stopWath.ElapsedMilliseconds.ToString());
if ((EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.stepname != EnumState.WaitTempDebug)
{
Thread.Sleep(2000);
tdTask.Remove(RealDataQueue[sTempIp].Addr + "-" + RealDataQueue[sTempIp].Chid);
break;
}
//判斷溫度是否到達 并且時間到達30分鐘
double dTdTmp = RealDataQueue[sTempIp].RealtimeAuxData.auxtempperc[0] / 1000.000;
double hldTmp = TdBuffer.Instance.GetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid);
//Console.WriteLine("dTdTmp:" + dTdTmp.ToString());
//Console.WriteLine("stdTpt:" + stdTpt.ToString());
//Console.WriteLine("dPc:" + dPc.ToString());
//Console.WriteLine("hldTmp:" + hldTmp.ToString());
if ((dTdTmp >= (stdTpt - dPc) && dTdTmp <= (stdTpt + dPc)) &&
(hldTmp >= (stdTpt - 0.5) && hldTmp <= (stdTpt + 0.5)))
{
if (stopWath.ElapsedMilliseconds >= 1800000)
{
Console.WriteLine("繼續指令:" + stopWath.ElapsedMilliseconds.ToString());
ActionBase action = new JumpAction(null, 0);
List<object> param = new List<object>();
List<ChannelObject> lstSelect = new List<ChannelObject>();
lstSelect.Clear();
lstSelect.Add(RealDataQueue[sTempIp]);
param.Clear();
Command command = new Command(EnmuControl.Jump, lstSelect, 0);
command.stepguid = "0"; //currentObject.Stepguid;
command.stepguid = command.stepguid.Replace("\0", "").Trim();
param.Add(command);
action.doAction(param, RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid);
Console.WriteLine("移除綫程:" + RealDataQueue[sTempIp].Addr + "-" + RealDataQueue[sTempIp].Chid);
// Console.WriteLine("耗時:" + stopWath.ElapsedMilliseconds.ToString());
Thread.Sleep(2000);
tdTask.Remove(RealDataQueue[sTempIp].Addr + "-" + RealDataQueue[sTempIp].Chid);
break;
}
}
else
stopWath.Restart();
}
}
);
}
#endregion
}
}
#endregion
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/227433.html
標籤:VB.NET
上一篇:C#委托
下一篇:System.IndexOutOfRangeException:“在位置 -2147483648 處沒有任何行。”
