using System;
using System.Threading;
namespace AGVSystem.A17168
{
///
/// 第三方交管自动归还路权监听
///
public class TrafficCtrl
{
///
/// 获取AGV当前地标
///
private static int Agv_Land(int agvid)
{
for (byte b = 0; b < Func.AgvInfo.Length; b++)
{
if (Func.AgvInfo[b].Agv_ID == agvid)
{
return Func.AgvInfo[b].Location_Display;
}
}
return 0;
}
///
/// 监听线程:占用超过AutoTime秒的路口自动归还路权
///
public static void Listen()
{
while (true)
{
try
{
if (Frm_A17168.businessCtrl?.apiModel == null)
continue;
int autoTime = Frm_A17168.businessCtrl.apiModel.AutoTime;
if (autoTime == 0 || string.IsNullOrEmpty(Frm_A17168.businessCtrl.apiModel.waitRfidList) || Frm_A17168.autoLeavedDic == null || Frm_A17168.autoLeavedDic.Count <= 0)
continue;
foreach (TrafficModel item in Frm_A17168.autoLeavedDic)
{
if (item.agvId == 0)
continue;
if ((DateTime.Now - item.InArea).TotalSeconds > autoTime)
{
bool flag = Frm_A17168.businessCtrl.ByLeaved(item.agvId.ToString(), Agv_Land(item.agvId).ToString(), item.areaCode.ToString());
WriteTxt.SaveLog1(item.areaCode.ToString() + "自动释放,返回的值" + flag, "放行日志" + item.agvId, "插件日志");
if (flag)
{
Frm_A17168.leavedDic[item.agvId] = 0;
item.agvId = 0;
WriteTxt.SaveLog1(item.areaCode.ToString() + "路口已自动归还", "放行日志" + item.agvId, "插件日志");
}
}
}
}
catch (Exception ex)
{
WriteTxt.SaveLog1("第三方交管监听线程异常!" + ex.ToString(), "异常日志", "插件日志");
}
Thread.Sleep(1000);
}
}
}
}