Exemple #1
0
        private void setRcModeButton_Click(object sender, EventArgs e)
        {
            int rcMode = Convert.ToInt32(this.rcModeTextBox.Text);
            int id     = IbusMessageClass.Send_rc_mode(rcMode);
            int ret    = 0;

            if (id < 0)
            {
                MessageBox.Show("设置遥控器模式失败");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);
            if (ret < 0)
            {
                MessageBox.Show("设置遥控器模式失败:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("设置遥控器模式成功:" + ret.ToString());
            }
        }
Exemple #2
0
        private void setHomeButton_Click(object sender, EventArgs e)
        {
            int id, ret;

            if (mapOverlayMarker.Markers.Count > 0)
            {
                PointLatLng pos = MyMap.gcj_To_Gps84(mapOverlayMarker.Markers[0].Position);
                id = IbusMessageClass.Set_plane_home(pos.Lat, pos.Lng, 0);
            }
            else
            {
                id = IbusMessageClass.Set_plane_home(0, 0, 0);
            }

            if (id < 0)
            {
                MessageBox.Show("设置home点错误");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);

            if (ret < 0)
            {
                MessageBox.Show("设置home点错误:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("设置home点成功:" + ret.ToString());
            }
        }
Exemple #3
0
        private void setPlaneTimeButton_Click(object sender, EventArgs e)
        {
            DateTime nowTime     = DateTime.Now;
            uint     timeSeconds = (uint)(((((((nowTime.Year - 2000) * 12) + nowTime.Month) * 31 + nowTime.Day) * 24 + nowTime.Hour) * 60 + nowTime.Minute) * 60 + nowTime.Second);
            int      id          = IbusMessageClass.Set_plane_time(timeSeconds);
            int      ret         = 0;

            if (id < 0)
            {
                MessageBox.Show("同步时间错误");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);
            if (ret < 0)
            {
                MessageBox.Show("同步时间错误:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("同步时间成功:" + ret.ToString());
            }
        }
Exemple #4
0
        private void timeOverEvent(object sender, EventArgs e)
        {
            if (connectedPort == false)
            {
                return;
            }
            this.showRollLabel.Text  = IbusMessageClass.Get_attitude_roll().ToString();
            this.showPitchLabel.Text = IbusMessageClass.Get_attitude_pitch().ToString();
            this.showYawLabel.Text   = IbusMessageClass.Get_attitude_yaw().ToString();

            this.showFlymodeLabel.Text    = IbusMessageClass.Get_sysstate_flymode().ToString();
            this.showSubflymodeLabel.Text = IbusMessageClass.Get_sysstate_subflymode().ToString();
            this.showStarsLabel.Text      = IbusMessageClass.Get_sysstate_stars().ToString();
            this.showHomelatLabel.Text    = IbusMessageClass.Get_sysstate_homelat().ToString();
            this.showHomelonLabel.Text    = IbusMessageClass.Get_sysstate_homelon().ToString();
            this.showHomealtLabel.Text    = IbusMessageClass.Get_sysstate_homealt().ToString();
            this.showStateflagLabel.Text  = Convert.ToString(IbusMessageClass.Get_sysstate_stateflag(), 16);
            uint   temp = IbusMessageClass.Get_sysstate_datetime();
            string dataTimeStr;

            dataTimeStr = (temp % 60).ToString().PadLeft(2, '0');
            temp       /= 60;

            dataTimeStr = (temp % 60).ToString().PadLeft(2, '0') + ':' + dataTimeStr;
            temp       /= 60;

            dataTimeStr = (temp % 24).ToString().PadLeft(2, '0') + ':' + dataTimeStr;
            temp       /= 24;

            dataTimeStr = (temp % 31).ToString().PadLeft(2, '0') + ' ' + dataTimeStr;
            temp       /= 31;

            dataTimeStr = (temp % 12).ToString().PadLeft(2, '0') + '-' + dataTimeStr;
            temp       /= 12;
            temp       += 2000;

            dataTimeStr = temp.ToString().PadLeft(2, '0') + '-' + dataTimeStr;
            this.showDateTimeLabel.Text = dataTimeStr;

            this.showLatLabel.Text         = IbusMessageClass.Get_position_lat().ToString();
            this.showLonLabel.Text         = IbusMessageClass.Get_position_lon().ToString();
            this.showAltLabel.Text         = IbusMessageClass.Get_position_alt().ToString();
            this.showRelativealtLabel.Text = IbusMessageClass.Get_position_relative_alt().ToString();

            this.showCapacityLabel.Text = IbusMessageClass.Get_battery_remainingCapacity().ToString();
            this.showVoltageLabel.Text  = IbusMessageClass.Get_battery_voltage().ToString();
            this.showCurrentLabel.Text  = IbusMessageClass.Get_battery_current().ToString();
            this.showPercentLabel.Text  = IbusMessageClass.Get_battery_remainingPercent().ToString();

            /*    IbusMessageClass.Get_camera_cameramode();
             *  IbusMessageClass.Get_camera_camerapitch();
             *  IbusMessageClass.Get_camera_remainingnum();
             *  IbusMessageClass.Get_camera_remainingTime();
             *  IbusMessageClass.Get_camera_remainingCapacity();*/
            this.showRcModeLabel.Text = IbusMessageClass.Get_rc_mode().ToString();
        }
Exemple #5
0
        private void readTastitemButton_Click(object sender, EventArgs e)
        {
            int id, ret, index = 1;
            int wpCount = 0;
            MissionItemStruct missionItemStruct = new MissionItemStruct();

            mapOverlayMarker.Markers.Clear();
            mapOverlayMarker.Routes.Clear();

            do
            {
                id = IbusMessageClass.Send_read_tastitem(index);

                if (id < 0)
                {
                    MessageBox.Show("设置航点点错误");
                }

                do
                {
                    ret = IbusMessageClass.Get_ret_tastitem(id, ref missionItemStruct);
                    Thread.Sleep(5);
                } while (ret > 0);

                if (ret < 0)
                {
                    MessageBox.Show("设置航点错误:" + ret.ToString());
                }
                else if (ret == 0)
                {
                    //  MessageBox.Show("设置航点成功:" + ret.ToString());
                    PointLatLng pos = new PointLatLng(missionItemStruct.x, missionItemStruct.y);
                    wpCount = missionItemStruct.total;
                    mapOverlayMarker.Markers.Add(new GMarkerGoogle(MyMap.gps84_To_Gcj02(pos), GMarkerGoogleType.green));
                    mapOverlayMarker.Markers[mapOverlayMarker.Markers.Count - 1].ToolTipText = mapOverlayMarker.Markers.Count.ToString();
                    if (mapOverlayMarker.Markers.Count >= 2)
                    {
                        List <PointLatLng> listPoint = new List <PointLatLng>();
                        listPoint.Add(mapOverlayMarker.Markers[mapOverlayMarker.Markers.Count - 2].Position);
                        listPoint.Add(mapOverlayMarker.Markers[mapOverlayMarker.Markers.Count - 1].Position);

                        GMapRoute gMapRoute = new GMapRoute(listPoint, "");
                        gMapRoute.Stroke.Color = Color.Yellow;
                        gMapRoute.Stroke.Width = 2;

                        mapOverlayMarker.Routes.Add(gMapRoute);
                    }
                    this.myMap.Refresh();
                }
            } while (index++ < wpCount);
        }
Exemple #6
0
        private void circleButton_Click(object sender, EventArgs e)
        {
            Int16       r = Convert.ToInt16(this.radiusTextBox.Text);
            UInt16      n = Convert.ToUInt16(this.numTextBox.Text);
            int         id;
            PointLatLng pos;

            if (mapOverlayMarker.Markers.Count > 0)
            {
                pos = MyMap.gcj_To_Gps84(mapOverlayMarker.Markers[0].Position);
                id  = IbusMessageClass.Send_tastitem_circle(0, 0, pos.Lat, pos.Lng, IbusMessageClass.Get_position_alt(), r, n);
            }
            else
            {
                id = IbusMessageClass.Send_tastitem_circle(0, 0, 0, 0, 0, r, n);
            }


            int ret = 0;

            if (id < 0)
            {
                MessageBox.Show("绕圈失败");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);
            if (ret < 0)
            {
                MessageBox.Show("自动起飞失败:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("自动起飞成功:" + ret.ToString());
            }
        }
Exemple #7
0
        private void setTakeoffButton_Click(object sender, EventArgs e)
        {
            int id  = IbusMessageClass.Set_plane_takeoff(Convert.ToSingle(this.takeoffTextBox.Text));
            int ret = 0;

            if (id < 0)
            {
                MessageBox.Show("自动起飞失败");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);
            if (ret < 0)
            {
                MessageBox.Show("自动起飞失败:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("自动起飞成功:" + ret.ToString());
            }
        }
Exemple #8
0
        private void setLandButton_Click(object sender, EventArgs e)
        {
            int id  = IbusMessageClass.Set_plane_land();
            int ret = 0;

            if (id < 0)
            {
                MessageBox.Show("着陆命令发送失败");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);
            if (ret < 0)
            {
                MessageBox.Show("着陆命令发送失败:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("着陆命令发送成功:" + ret.ToString());
            }
        }
Exemple #9
0
        private void armDisarmPlaneButton_Click(object sender, EventArgs e)
        {
            int id  = IbusMessageClass.Set_arm_disarm(1);
            int ret = 0;

            if (id < 0)
            {
                MessageBox.Show("解锁失败");
            }

            do
            {
                ret = IbusMessageClass.Get_ibus_ret(id);
                Thread.Sleep(5);
            } while (ret > 0);
            if (ret < 0)
            {
                MessageBox.Show("解锁失败:" + ret.ToString());
            }
            else if (ret == 0)
            {
                MessageBox.Show("解锁成功:" + ret.ToString());
            }
        }
Exemple #10
0
        private void setWayPointButton_Click(object sender, EventArgs e)
        {
            int id, ret;
            int wpCount = mapOverlayMarker.Markers.Count;

            if (wpCount == 0)
            {
                return;
            }

            for (int i = 0; i < wpCount; i++)
            {
                PointLatLng pos = MyMap.gcj_To_Gps84(mapOverlayMarker.Markers[i].Position);
                id = IbusMessageClass.Send_tastitem_waypoint((ushort)wpCount, (ushort)(i + 1), pos.Lat, pos.Lng, 10, 0);

                if (id < 0)
                {
                    MessageBox.Show("设置航点点错误");
                }

                do
                {
                    ret = IbusMessageClass.Get_ibus_ret(id);
                    Thread.Sleep(5);
                } while (ret > 0);

                if (ret < 0)
                {
                    MessageBox.Show("设置航点错误:" + ret.ToString());
                }
                else if (ret == 0)
                {
                    //  MessageBox.Show("设置航点成功:" + ret.ToString());
                }
            }
        }
Exemple #11
0
        private unsafe void RunIbusThread()
        {
            while (!threadClose)
            {
                if (connectedPort)
                {
                    if (this.com.IsOpen)
                    {
                        int num = com.BytesToRead;
                        if (num > 0)
                        {
                            byte[] buff = new byte[num];
                            com.Read(buff, 0, num);
                            fixed(byte *p = buff)
                            {
                                IbusMessageClass.Update(p, num);
                            }
                        }
                        num = IbusMessageClass.Update_ticks(10);
                        if (num > 0)
                        {
                            byte[] buff = new byte[num];
                            fixed(byte *p = buff)
                            {
                                num = IbusMessageClass.Get_data_readysend(p, num);
                            }

                            this.com.Write(buff, 0, num);
                        }
                    }
                    else if (this.tcpClient.Connected)
                    {
                        byte[] buff = new byte[256];
                        int    num  = 0;
                        try
                        {
                            num = tcpClientStream.Read(buff, 0, 256);
                        }
                        catch (Exception ex)
                        {
                        }
                        if (num > 0)
                        {
                            fixed(byte *p = buff)
                            {
                                IbusMessageClass.Update(p, num);
                            }
                        }

                        num = IbusMessageClass.Update_ticks(10);
                        if (num > 0)
                        {
                            fixed(byte *p = buff)
                            {
                                num = IbusMessageClass.Get_data_readysend(p, 256);
                            }

                            try
                            {
                                this.tcpClientStream.Write(buff, 0, num);
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }
                }

                Thread.Sleep(10);
            }
        }