#region -- 溫箱控制邏輯 --
public void StartTdControlTask()
{
if (refrechTdControlTask == null)
{
canRefresh = new CancellationTokenSource();
refrechTdControlTask = new Task(TdControlTask);
refrechTdControlTask.Start();
}
}
List<string> tdTask = new List<string>();
public void TdControlTask()
{
while (!canRefresh.IsCancellationRequested)
{
try
{
//遍歷所有溫箱映射關系
foreach (var obj in BAT.TD.TdBuffer.Instance.tdObject)
{
double stdTpt = 1000;
double dPc = 0;
//1.判斷是否要調溫
for (int i = 0; i < obj.BatName.Count; i++)
{
//判斷ip是否正確
string sTempIp = obj.BatName[i];
if (sTempIp.Length < 9)
break;
if (tdTask.Contains(RealDataQueue[sTempIp].Addr + "-" + RealDataQueue[sTempIp].Chid))
break;
//判斷配置的ip-設備-通道是否正確
if (obj.BatName[i].Split('-').Length < 2)
break;
//判斷是否存在該通道,理論上一定存在
if (!RealDataBuffer.Instance.RealDataQueue.ContainsKey(sTempIp))
break;
if (RealDataQueue[sTempIp].RealtimeAuxData.auxtempperc == null)
{
continue;
}
#region -- 是否設定溫箱溫度 --
//所有通道處于停止、溫箱配置、完成、斷開鏈接狀態才可以調溫,其他不調溫
if ((EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.stepname != EnumState.WaitTempDebug &&
(EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.status != EnumState.Stop &&
(EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.status != EnumState.Complete &&
(EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.status != EnumState.Disconnect)
break;
else
{
if (RealDataQueue[sTempIp].RealtimeAuxData.auxtempperc == null)
{
break;
}
}
//判斷所有通道的溫度設定是否一致
if ((EnumState)RealDataBuffer.Instance.RealDataQueue[sTempIp].RealtimeData.stepname == EnumState.WaitTempDebug)
{
string sStepParam1 = getParamStr(sTempIp);
if (sStepParam1.Trim() != "")
{
string[] str = sStepParam1.Split(',');
if (stdTpt == 1000 && i != obj.BatName.Count - 1)
{
stdTpt = double.Parse(str[0]);
dPc = double.Parse(str[1]);
continue;
}
if (stdTpt == 1000 && i == obj.BatName.Count - 1)
{
stdTpt = double.Parse(str[0]);
dPc = double.Parse(str[1]);
}
// else
// {
// stdTpt = double.Parse(str[0]);
// dPc = double.Parse(str[1]);
// }
if (double.Parse(str[0]) != stdTpt)
{
Console.WriteLine("同一個溫箱下面的通道方案里的溫度不同,請核對方案");
Log.Write("同一個溫箱下面的通道方案里的溫度不同,請核對方案");
stdTpt = 1000;
dPc = 0;
break;
}
}
}
//設定溫箱
if (stdTpt != 1000 && i == obj.BatName.Count - 1)
{
Console.WriteLine(obj.ServerIp.ToString() + "控制溫箱溫度" + stdTpt.ToString());
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
Thread.Sleep(1000);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
TdBuffer.Instance.SetIncubatorTemp(RealDataQueue[sTempIp].Addr, RealDataQueue[sTempIp].Chid, stdTpt); //設定溫度
TdTestTask(obj, stdTpt, dPc);
}
#endregion
}
}
refrechUiEvent.WaitOne(Constants.DATA_FRESH_INTERVAL);
}
catch (Exception ex)
{
Debug.WriteLine("Lift:{0}", ex.StackTrace);
Log.Write(string.Format("{0}-{1}[{2}]", "TdControlTask", ex.Message, ex.StackTrace));
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227413.html
標籤:C++ 語言
上一篇:新手vs2019使用小問題
