private void tmrStateUpdate_Tick(object sender, EventArgs e) { tvInfo.BeginUpdate(); TreeNode node = tvInfo.Nodes.GetOrCreate("ClientActive"); node.Text = string.Format("Client Active: {0}", _droneClient.Active); node = tvInfo.Nodes.GetOrCreate("Navigation Data"); DumpBranch(node.Nodes, _droneClient.NavigationData); node = tvInfo.Nodes.GetOrCreate("Configuration"); DumpBranch(node.Nodes, _droneClient.Configuration); TreeNode vativeNode = tvInfo.Nodes.GetOrCreate("Native"); NavdataBag navdataBag; if (_navigationPacket.Data != null && NavdataBagParser.TryParse(ref _navigationPacket, out navdataBag)) { var ctrl_state = (CTRL_STATES)(navdataBag.demo.ctrl_state >> 0x10); node = vativeNode.Nodes.GetOrCreate("ctrl_state"); node.Text = string.Format("Ctrl State: {0}", ctrl_state); var flying_state = (FLYING_STATES)(navdataBag.demo.ctrl_state & 0xffff); node = vativeNode.Nodes.GetOrCreate("flying_state"); node.Text = string.Format("Ctrl State: {0}", flying_state); DumpBranch(vativeNode.Nodes, navdataBag); } tvInfo.EndUpdate(); }
public static bool TryParse(ref NavigationPacket packet, out NavigationData navigationData) { navigationData = new NavigationData(); NavdataBag navdataBag; if (NavdataBagParser.TryParse(ref packet, out navdataBag)) { navigationData = NavdataConverter.ToNavigationData(navdataBag); return(true); } return(false); }
/// <summary> /// 写导航数据文件 /// NavgationBag /// </summary> /// <param name="navigationPacket"></param> /// <returns></returns> private void Write(NavigationPacket navigationPacket) { using (FileStream navFileStream = new FileStream(_navdataDir + @"/" + navigationPacket.Timestamp + ".nav", FileMode.OpenOrCreate)) { using (StreamWriter navWriter = new StreamWriter(navFileStream)) { NavdataBag navdataBag; if (navigationPacket.Data != null && NavdataBagParser.TryParse(ref navigationPacket, out navdataBag)) { DumpBranch(navWriter, navdataBag); } } } }
/// <summary> /// 状态定时器响应 /// 更新Tree view 中的参数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <returns></returns> private void tmrStateUpdate_Tick(object sender, EventArgs e) { tvInfo.BeginUpdate(); //标签一 TreeNode node = tvInfo.Nodes.GetOrCreate("ClientActive"); node.Text = string.Format("Client Active: {0}", _droneClient.IsActive); //标签二 node = tvInfo.Nodes.GetOrCreate("Navigation Data"); if (_navigationData != null) { DumpBranch(node.Nodes, _navigationData); } //标签三 node = tvInfo.Nodes.GetOrCreate("Configuration"); if (_settings != null) { DumpBranch(node.Nodes, _settings); } //标签四 TreeNode vativeNode = tvInfo.Nodes.GetOrCreate("Native"); NavdataBag navdataBag; if (_navigationPacket.Data != null && NavdataBagParser.TryParse(ref _navigationPacket, out navdataBag)) { var ctrl_state = (CTRL_STATES)(navdataBag.demo.ctrl_state >> 0x10); node = vativeNode.Nodes.GetOrCreate("ctrl_state"); node.Text = string.Format("Ctrl State: {0}", ctrl_state); var flying_state = (FLYING_STATES)(navdataBag.demo.ctrl_state & 0xffff); node = vativeNode.Nodes.GetOrCreate("flying_state"); node.Text = string.Format("Ctrl State: {0}", flying_state); DumpBranch(vativeNode.Nodes, navdataBag); } tvInfo.EndUpdate(); if (_autopilot != null && !_autopilot.Active && btnAutopilot.ForeColor != Color.Black) { btnAutopilot.ForeColor = Color.Black; } }
protected override void Loop(CancellationToken token) { _packetQueue.Flush(); //int num = 0; while (token.IsCancellationRequested == false || !_packetQueue.IsEmpty) { object packet = null; while (_packetQueue.TryDequeue(out packet)) { if (packet is NavigationPacket) { var navigationPacket = (NavigationPacket)packet; NavdataBagParser.TryParse(ref navigationPacket, out _navdataBag); var navigationData = NavdataConverter.ToNavigationData(_navdataBag); Write(navigationPacket, navigationData); //Write(navigationPacket); } else if (packet is VideoPacket) { //num++; var videoPacket = (VideoPacket)packet; Write(videoPacket); } else { string message = string.Format("Not supported packet type - {0}.", packet.GetType().Name); throw new NotSupportedException(message); } } Thread.Sleep(10); } //发送写结束事件 if (OnWriteEnd != null) { OnWriteEnd(); } }