Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        /// <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);
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <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;
            }
        }
Exemplo n.º 5
0
 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();
     }
 }