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()); } }
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()); } }
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()); } }
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(); }
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); }
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()); } }
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()); } }
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()); } }
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()); } }
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()); } } }
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); } }