public void DealPacket_ChainInfo(object pack) { RD_ChainInfo rd = (RD_ChainInfo)pack; if (rd.StartOrEnd == "s") { chain_path temp = new chain_path(this); temp.sensor_name = rd.id; temp.path = rd.PathNodes; foreach (var o in rd.PathNodes) { temp.path_Objs.Add(Scenemana.stkObjs.Find(c => c.ObjName == o)); } Scenemana.setupchain(temp); Scenemana.all_path.Add(temp); } else if (rd.StartOrEnd == "e") { //清楚掉链路 chain_path temp; temp = Scenemana.all_path.Find(c => c.sensor_name == rd.id); if (temp != null) { Scenemana.RemoveAllSensorOnPath(temp); Scenemana.all_path.Remove(temp); } else { MessageBox.Show("读取链路记录异常"); } } }
public void DealPacket_SatUser(object pack) { if (this.state.isSceneSetUp == false) { return; } RD_SatUser rd = (RD_SatUser)pack; Scenemana.newsat(rd.SatUserName, (rd.SatUserAltitude) + 6371.0, rd.SatUserOrbitalInclination, rd.SatUserRightAscensionOfAscendingNode); Scenemana.hlSatUser(rd.SatUserName); }
public void DealPacket_SatUser(object pack) { if (this.state.isSceneSetUp == false) { return; } RD_SatUser rd = (RD_SatUser)pack; Scenemana.newsat(rd.SatUserName, (rd.SatUserAltitude) + 6371.0, rd.SatUserOrbitalInclination, rd.SatUserRightAscensionOfAscendingNode, @"D:\STK9\STKData\VO\Models\Space\a2100.mdl"); Scenemana.newwalker_SatUser(rd.SatUserName, rd.SatUserOrbitalNumber, rd.SatUserInPlaneSatelliteNumber, rd.SatUserPhaseParameters, rd.SatUserRAANSpread); //Scenemana.hlSatUser(rd.SatUserName); }
//处理信关站位置的包处理 public void DealPacket_XGY(object pack) { RD_XGY rd = (RD_XGY)pack; if (rd.XGYHType == "xg") { Scenemana.newcity(rd.XGYHName, rd.XGYHLatitude, rd.XGYHLongitude); } else if (rd.XGYHType == "yh") { Scenemana.newuser(rd.XGYHName, rd.XGYHLatitude, rd.XGYHLongitude); } }
public void DealPacket_vehinfo(object pack) { if (this.state.isSceneSetUp == false) { return; } RD_Mobility rd = (RD_Mobility)pack; Scenemana.newveh(rd.MobileNodeName);//新建一个交通工具 Scenemana.vehtime(rd.MobileNodeName, rd.MobileStartTime); Scenemana.vehway(rd.MobileNodeName, rd.StartLatitude, rd.StartLongitude, rd.MobileSpeed); //这里待添加终止时间 Scenemana.vehway(rd.MobileNodeName, rd.EndLatitude, rd.EndLongitude, rd.MobileSpeed); }
public void DealPacket_ChainInfo(object pack) { RD_ChainInfo rd = (RD_ChainInfo)pack; //建立链路 chain_path temp = new chain_path(this); temp.sensor_name = rd.id; temp.path = rd.PathNodes; foreach (var o in rd.PathNodes) { temp.path_Objs.Add(Scenemana.stkObjs.Find(c => c.ObjName == o)); } //beamdiameter = 103; Scenemana.setupchain(temp, beamdiameter); Scenemana.all_path.Add(temp); }
public void DealPacket_InterSatellitePath(object pack) { RD_InterSatellitePath rd = (RD_InterSatellitePath)pack; //判断是否为之前已存在的相同链路,如不同,则清除之前的链路 if (rd_update.ISLPath != null && !rd.ISLPath.Equals(rd_update.ISLPath)) { //清除链路 chain_path temp; temp = Scenemana.all_path.Find(c => c.sensor_name == rd_update.ISLid.ToString()); if (temp != null) { Scenemana.RemoveAllSensorOnPath(temp); Scenemana.all_path.Remove(temp); } //else MessageBox.Show("读取链路记录异常"); } //判断是否需要建立新的链路(第一次建立或者链路改变) if (rd_update.ISLPath == null || !rd.ISLPath.Equals(rd_update.ISLPath)) { chain_path pathinfo = new chain_path(this); RD_ChainInfo temp1; int index = 0; string Nodes = rd.ISLPath.ToString(); string[] nodelist = Nodes.Split(new string[] { "->" }, StringSplitOptions.None); foreach (var str in nodelist) { pathinfo.path.Add(str); //将系统物件表中的物体添加到链路的小表中 pathinfo.path_Objs.Add(Scenemana.stkObjs.Find(c => c.ObjName == str)); } //pathinfo.sensor_name = pathinfo.path[0] + "-" + pathinfo.path[pathinfo.path.Count - 1]; pathinfo.sensor_name = rd.ISLid.ToString(); Scenemana.msglist.Clear(); Scenemana.msglist.Add(new Msg { PathNodes = pathinfo.path, id = pathinfo.sensor_name }); temp1 = Scenemana.MakePacket(Scenemana.msglist[index]); if (temp1 != null) { //立即执行 DealPacket_ChainInfo(temp1); index++; } } rd_update = rd;//记录最新的链路信息,为下次判断做准备 }
public void DealPacket_Scenset(object pack) { RD_Scenset rd = (RD_Scenset)pack; this.Cursor = Cursors.WaitCursor; if (this.state.isSceneSetUp == true || this.root.CurrentScenario != null) { this.ResetCloseScene(); } //建立场景 this.Cursor = Cursors.Default; this.scenenamenew = rd.ScenarioName; this.dStartTime = DateTime.ParseExact(rd.StartTime, "yyyy-M-dd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture); this.startTime = timeproc(rd.StartTime); this.endTime = timeproc(rd.StopTime); this.stepTime = rd.StepTime; this.新场景ToolStripMenuItem_Click(null, null); Scenemana.newsat("FX", rd.SatelliteAltitude + 6371.0, rd.OrbitalInclination, rd.RightAscensionOfAscendingNode); Scenemana.newwalker("FX", rd.OrbitalNumber, rd.InPlaneSatelliteNumber, rd.PhaseParameters, rd.raanspread); Scenemana.delsat("FX"); }