/// <summary> /// 工厂方法:根据信号机参数信息,生产出对应的信号机 /// </summary> /// <param name="prop"></param> /// <returns></returns> public static SignalController buildController(SignalProp prop) { if (null == prop) { return(null); } SignalController ctrl; switch (prop.Type) { // 旗骏 case 1: ctrl = new QJController(prop); break; // 易华录 case 4: ctrl = new EHLController(prop); break; // 鑫通 case 5: ctrl = new XTController(prop); break; default: ctrl = null; break; } return(ctrl); }
public QJController(SignalProp prop) : base(prop) { tcpClientSocket1 = new TCPClientSocket(); tcpClientSocket1.Breaken = true; tcpClientSocket1.BreakSec = 5; tcpClientSocket1.DataArrival += new TCPClientSocket.DataArrivalEventHandler(tcpClientSocket1_DataArrival); }
public XTController(SignalProp prop) : base(prop) { this.Prop = prop; Option option = CommonUtils.LoadOption(); gettrafficlights_url = "http://" + option.XtAddress + "/jtd/cxf/rest/sigservice/gettrafficlights/signumber.json"; //信号机编号:216 获取实时状态单次 docommand_url = "http://" + prop.Ip + ":" + option.XtAddress + "/jtd/cxf/rest/sigservice/docommand/signumber/33.json"; //信号机编号:216 执行黄闪命令 gettrafficlights_url = "http://" + prop.Ip + ":" + option.XtAddress + "/jtd/cxf/rest/sigservice/gettrafficlights/signumber.json"; //信号机编号:216 获取实时状态单次 excutecontorl_url = "http://" + prop.Ip + ":" + option.XtAddress + "/jtd/cxf/rest/sigservice/excutecontrol/signumber/controlmsg.json"; //信号机编号:216 执行特勤控制 }
public static SignalProp getSigProp(string signalId, List <SignalProp> sigList) { SignalProp prop = null;// new SignalProp(); foreach (SignalProp p in sigList) { if (signalId.Equals(p.SignalID.ToUpper())) { prop = p; break; } } return(prop); }
public static SignalProp getSigPropByName(string signalName, List <SignalProp> sigList) { SignalProp prop = null;// new SignalProp(); foreach (SignalProp p in sigList) { if (signalName.Equals(p.SignalName)) { prop = p; break; } } return(prop); }
/// <summary> /// 解析信号机在界面上的位置 /// </summary> /// <param name="posList"></param> /// <param name="sigList"></param> public static void parseSigPosList(List <SignalPos> posList, List <SignalProp> sigList) { foreach (SignalPos p in posList) { SignalProp prop = getSigProp(p.LampId, sigList); if (null == prop) { prop = new SignalProp(); prop.SignalID = p.LampId; sigList.Add(prop); } int idx = (p.Compass - 1) * 4 + p.Dir - 1; //Trace.WriteLine("parse prop: " + idx + "; " + prop.ToString()); prop.Pos[(p.Compass - 1) * 4 + p.Dir - 1] = new Point(p.X, p.Y); } }
/// <summary> /// 解析信号机在界面上的角度 /// </summary> /// <param name="angList"></param> /// <param name="sigList"></param> public static void parseSigAngList(List <SignalAng> angList, List <SignalProp> sigList) { foreach (SignalAng a in angList) { SignalProp prop = getSigProp(a.LampId, sigList); if (null == prop) { prop = new SignalProp(); prop.SignalID = a.LampId; sigList.Add(prop); } prop.Angle[0] = a.EAng; prop.Angle[1] = a.SAng; prop.Angle[2] = a.WAng; prop.Angle[3] = a.NAng; } }
public SignalController(SignalProp prop) { this.prop = prop; }