本文整理汇总了C#中MissionPlanner.Controls.ProgressWorkerEventArgs类的典型用法代码示例。如果您正苦于以下问题:C# ProgressWorkerEventArgs类的具体用法?C# ProgressWorkerEventArgs怎么用?C# ProgressWorkerEventArgs使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ProgressWorkerEventArgs类属于MissionPlanner.Controls命名空间,在下文中一共展示了ProgressWorkerEventArgs类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: ProgressReporterDialogue
public ProgressReporterDialogue()
{
InitializeComponent();
doWorkArgs = new ProgressWorkerEventArgs();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.btnClose.Visible = false;
}
开发者ID:handihomann,项目名称:MissionPlanner,代码行数:7,代码来源:ProgressReporterDialogue.cs
示例2: DoUpdateWorker_DoWork
static void DoUpdateWorker_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// TODO: Is this the right place?
#region Fetch Parameter Meta Data
var progressReporterDialogue = ((ProgressReporterDialogue)sender);
progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Updated Parameters");
try
{
ParameterMetaDataParser.GetParameterInformation();
}
catch (Exception ex) { log.Error(ex.ToString()); CustomMessageBox.Show("Error getting Parameter Information"); }
#endregion Fetch Parameter Meta Data
progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Base URL");
// check for updates
// if (Debugger.IsAttached)
{
// log.Info("Skipping update test as it appears we are debugging");
}
// else
{
updateCheckMain(progressReporterDialogue);
}
}
开发者ID:handihomann,项目名称:MissionPlanner,代码行数:28,代码来源:Update.cs
示例3: prd_DoWork
static void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// turn learning off
MainV2.comPort.setParam("COMPASS_LEARN", 0);
bool havecompass2 = false;
bool havecompass3 = false;
//compass2 get mag2 offsets
if (MainV2.comPort.MAV.param.ContainsKey("COMPASS_OFS2_X"))
{
MainV2.comPort.setParam("COMPASS_OFS2_X", 0, true);
MainV2.comPort.setParam("COMPASS_OFS2_Y", 0, true);
MainV2.comPort.setParam("COMPASS_OFS2_Z", 0, true);
havecompass2 = true;
}
//compass3
if (MainV2.comPort.MAV.param.ContainsKey("COMPASS_OFS3_X"))
{
MainV2.comPort.setParam("COMPASS_OFS3_X", 0, true);
MainV2.comPort.setParam("COMPASS_OFS3_Y", 0, true);
MainV2.comPort.setParam("COMPASS_OFS3_Z", 0, true);
havecompass3 = true;
}
int hittarget = 14; // int.Parse(File.ReadAllText("magtarget.txt"));
// old method
float minx = 0;
float maxx = 0;
float miny = 0;
float maxy = 0;
float minz = 0;
float maxz = 0;
// backup current rate and set
byte backupratesens = MainV2.comPort.MAV.cs.ratesensors;
byte backuprateatt = MainV2.comPort.MAV.cs.rateattitude;
byte backupratepos = MainV2.comPort.MAV.cs.rateposition;
MainV2.comPort.MAV.cs.ratesensors = 2;
MainV2.comPort.MAV.cs.rateattitude = 0;
MainV2.comPort.MAV.cs.rateposition = 0;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.ALL, 0);
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, 50);
// subscribe to data packets
var sub = MainV2.comPort.SubscribeToPacketType(MAVLink.MAVLINK_MSG_ID.RAW_IMU, ReceviedPacket);
var sub2 = MainV2.comPort.SubscribeToPacketType(MAVLink.MAVLINK_MSG_ID.SCALED_IMU2, ReceviedPacket);
var sub3 = MainV2.comPort.SubscribeToPacketType(MAVLink.MAVLINK_MSG_ID.SCALED_IMU3, ReceviedPacket);
string extramsg = "";
// clear any old data
((ProgressReporterSphere) sender).sphere1.Clear();
((ProgressReporterSphere) sender).sphere2.Clear();
((ProgressReporterSphere) sender).sphere3.Clear();
// keep track of data count and last lsq run
int lastcount = 0;
DateTime lastlsq = DateTime.MinValue;
DateTime lastlsq2 = DateTime.MinValue;
DateTime lastlsq3 = DateTime.MinValue;
HIL.Vector3 centre = new HIL.Vector3();
while (true)
{
// slow down execution
System.Threading.Thread.Sleep(10);
string str = "Got + " + datacompass1.Count + " samples\n" +
"Compass 1 error: " + error;
if (MainV2.comPort.MAV.param.ContainsKey("COMPASS_OFS2_X"))
str += "\nCompass 2 error: " + error2;
if (MainV2.comPort.MAV.param.ContainsKey("COMPASS_OFS3_X"))
str += "\nCompass 3 error: " + error3;
str += "\n" + extramsg;
((ProgressReporterDialogue) sender).UpdateProgressAndStatus(-1, str);
if (e.CancelRequested)
{
e.CancelAcknowledged = false;
e.CancelRequested = false;
break;
}
if (datacompass1.Count == 0)
continue;
float rawmx = datacompass1[datacompass1.Count - 1].Item1;
float rawmy = datacompass1[datacompass1.Count - 1].Item2;
//.........这里部分代码省略.........
开发者ID:ans10528,项目名称:MissionPlanner-MissionPlanner1.3.34,代码行数:101,代码来源:MagCalib.cs
示例4: pdr_DoWork
private void pdr_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
var fw = new Firmware();
fw.Progress -= fw_Progress1;
fw.Progress += fw_Progress;
softwares = fw.getFWList(firmwareurl);
foreach (var soft in softwares)
{
updateDisplayNameInvoke(soft);
}
}
开发者ID:kkouer,项目名称:PcGcs,代码行数:12,代码来源:ConfigFirmware.cs
示例5: prd_DoWork
void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// list of x,y,z 's
List<Tuple<float, float, float>> data = new List<Tuple<float, float, float>>();
// backup current rate and set to 10 hz
byte backupratesens = MainV2.comPort.MAV.cs.ratesensors;
MainV2.comPort.MAV.cs.ratesensors = 10;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors); // mag captures at 10 hz
DateTime deadline = DateTime.Now.AddSeconds(60);
float oldmx = 0;
float oldmy = 0;
float oldmz = 0;
while (deadline > DateTime.Now)
{
double timeremaining = (deadline - DateTime.Now).TotalSeconds;
((ProgressReporterDialogue)sender).UpdateProgressAndStatus((int)(((60 - timeremaining) / 60) * 100), timeremaining.ToString("0") + " Seconds - got " + data.Count + " Samples");
if (e.CancelRequested)
{
// restore old sensor rate
MainV2.comPort.MAV.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors);
e.CancelAcknowledged = true;
return;
}
if (oldmx != MainV2.comPort.MAV.cs.mx &&
oldmy != MainV2.comPort.MAV.cs.my &&
oldmz != MainV2.comPort.MAV.cs.mz)
{
data.Add(new Tuple<float, float, float>(
MainV2.comPort.MAV.cs.mx - (float)MainV2.comPort.MAV.cs.mag_ofs_x,
MainV2.comPort.MAV.cs.my - (float)MainV2.comPort.MAV.cs.mag_ofs_y,
MainV2.comPort.MAV.cs.mz - (float)MainV2.comPort.MAV.cs.mag_ofs_z));
oldmx = MainV2.comPort.MAV.cs.mx;
oldmy = MainV2.comPort.MAV.cs.my;
oldmz = MainV2.comPort.MAV.cs.mz;
}
}
// restore old sensor rate
MainV2.comPort.MAV.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors);
if (data.Count < 10)
{
e.ErrorMessage = "Log does not contain enough data";
ans = null;
return;
}
ans = MagCalib.LeastSq(data);
}
开发者ID:jchevin,项目名称:MissionPlanner-master,代码行数:59,代码来源:6CompassCalib.cs
示例6: FrmProgressReporterGetParams
void FrmProgressReporterGetParams(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
Hashtable old = new Hashtable(MAV.param);
getParamListBG();
if (frmProgressReporter.doWorkArgs.CancelRequested)
{
MAV.param = old;
}
}
开发者ID:munaclaw,项目名称:MissionPlanner,代码行数:9,代码来源:MAVLinkInterface.cs
示例7: prd_DoWork
static void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// old method
float minx = 0;
float maxx = 0;
float miny = 0;
float maxy = 0;
float minz = 0;
float maxz = 0;
// backup current rate and set to 10 hz
byte backupratesens = MainV2.comPort.MAV.cs.ratesensors;
MainV2.comPort.MAV.cs.ratesensors = 10;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors); // mag captures at 10 hz
var sub = MainV2.comPort.SubscribeToPacketType(MAVLink.MAVLINK_MSG_ID.RAW_IMU, ReceviedPacket);
string extramsg = "";
((ProgressReporterSphere)sender).sphere1.Clear();
int lastcount = 0;
while (true)
{
// slow down execution
System.Threading.Thread.Sleep(20);
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(-1, "Got " + data.Count + " Samples " + extramsg);
if (e.CancelRequested)
{
// restore old sensor rate
MainV2.comPort.MAV.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors);
e.CancelAcknowledged = false;
e.CancelRequested = false;
break;
}
if (data.Count == 0)
continue;
// dont use dup data
if (lastcount == data.Count)
continue;
lastcount = data.Count;
float rawmx = data[data.Count - 1].Item1;
float rawmy = data[data.Count - 1].Item2;
float rawmz = data[data.Count - 1].Item3;
// for old method
setMinorMax(rawmx, ref minx, ref maxx);
setMinorMax(rawmy, ref miny, ref maxy);
setMinorMax(rawmz, ref minz, ref maxz);
// get the current estimated centerpoint
HIL.Vector3 centre = new HIL.Vector3((float)-((maxx + minx) / 2), (float)-((maxy + miny) / 2), (float)-((maxz + minz) / 2));
HIL.Vector3 point;
// add to sphere with center correction
point = new HIL.Vector3(rawmx, rawmy, rawmz) + centre;
((ProgressReporterSphere)sender).sphere1.AddPoint(new OpenTK.Vector3((float)point.x, (float)point.y, (float)point.z));
//find the mean radius
float radius = 0;
for (int i = 0; i < data.Count; i++)
{
point = new HIL.Vector3(data[i].Item1, data[i].Item2, data[i].Item3);
radius += (float)(point + centre).length();
}
radius /= data.Count;
//test that we can find one point near a set of points all around the sphere surface
int factor = 4; // 4 point check 16 points
float max_distance = radius / 3; //pretty generouse
for (int j = 0; j < factor; j++)
{
double theta = (Math.PI * (j + 0.5)) / factor;
for (int i = 0; i < factor; i++)
{
double phi = (2 * Math.PI * i) / factor;
HIL.Vector3 point_sphere = new HIL.Vector3(
(float)(Math.Sin(theta) * Math.Cos(phi) * radius),
(float)(Math.Sin(theta) * Math.Sin(phi) * radius),
(float)(Math.Cos(theta) * radius)) - centre;
//log.DebugFormat("magcalib check - {0} {1} dist {2}", theta * rad2deg, phi * rad2deg, max_distance);
bool found = false;
for (int k = 0; k < data.Count; k++)
{
point = new HIL.Vector3(data[k].Item1, data[k].Item2, data[k].Item3);
double d = (point_sphere - point).length();
if (d < max_distance)
//.........这里部分代码省略.........
开发者ID:RobertCL,项目名称:MissionPlanner,代码行数:101,代码来源:MagCalib.cs
示例8: OpenBg
private void OpenBg(object PRsender, bool getparams, ProgressWorkerEventArgs progressWorkerEventArgs)
{
frmProgressReporter.UpdateProgressAndStatus(-1, Strings.MavlinkConnecting);
giveComport = true;
if (BaseStream is SerialPort)
{
// allow settings to settle - previous dtr
System.Threading.Thread.Sleep(1000);
}
Terrain = new TerrainFollow(this);
bool hbseen = false;
try
{
BaseStream.ReadBufferSize = 16*1024;
lock (objlock) // so we dont have random traffic
{
log.Info("Open port with " + BaseStream.PortName + " " + BaseStream.BaudRate);
BaseStream.Open();
BaseStream.DiscardInBuffer();
// other boards seem to have issues if there is no delay? posible bootloader timeout issue
Thread.Sleep(1000);
}
MAVLinkMessage buffer = new MAVLinkMessage();
MAVLinkMessage buffer1 = new MAVLinkMessage();
DateTime start = DateTime.Now;
DateTime deadline = start.AddSeconds(CONNECT_TIMEOUT_SECONDS);
var countDown = new System.Timers.Timer {Interval = 1000, AutoReset = false};
countDown.Elapsed += (sender, e) =>
{
int secondsRemaining = (deadline - e.SignalTime).Seconds;
frmProgressReporter.UpdateProgressAndStatus(-1, string.Format(Strings.Trying, secondsRemaining));
if (secondsRemaining > 0) countDown.Start();
};
countDown.Start();
// px4 native
BaseStream.WriteLine("sh /etc/init.d/rc.usb");
int count = 0;
while (true)
{
if (progressWorkerEventArgs.CancelRequested)
{
progressWorkerEventArgs.CancelAcknowledged = true;
countDown.Stop();
if (BaseStream.IsOpen)
BaseStream.Close();
giveComport = false;
return;
}
log.Info(DateTime.Now.Millisecond + " Start connect loop ");
if (DateTime.Now > deadline)
{
//if (Progress != null)
// Progress(-1, "No Heartbeat Packets");
countDown.Stop();
this.Close();
if (hbseen)
{
progressWorkerEventArgs.ErrorMessage = Strings.Only1Hb;
throw new Exception(Strings.Only1HbD);
}
else
{
progressWorkerEventArgs.ErrorMessage = "No Heartbeat Packets Received";
throw new Exception(@"Can not establish a connection\n
Please check the following
1. You have firmware loaded
2. You have the correct serial port selected
3. PX4 - You have the microsd card installed
4. Try a diffrent usb port\n\n" +
"No Mavlink Heartbeat Packets where read from this port - Verify Baud Rate and setup\nMission Planner waits for 2 valid heartbeat packets before connecting");
}
}
System.Threading.Thread.Sleep(1);
// can see 2 heartbeat packets at any time, and will connect - was one after the other
if (buffer.Length == 0)
buffer = getHeartBeat();
System.Threading.Thread.Sleep(1);
//.........这里部分代码省略.........
开发者ID:ChukRhodes,项目名称:MissionPlanner,代码行数:101,代码来源:MAVLinkInterface.cs
示例9: saveWPs
void saveWPs(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
try
{
MAVLinkInterface port = comPort;
if (!port.BaseStream.IsOpen)
{
//throw new Exception("Please connect first!");
throw new Exception("请先连接无人机!");
}
comPort.giveComport = true;
int a = 0;
// define the home point
Locationwp home = new Locationwp();
try
{
home.id = (byte)MAVLink.MAV_CMD.WAYPOINT;
home.lat = (double.Parse(TXT_homelat.Text));
home.lng = (double.Parse(TXT_homelng.Text));
home.alt = (float.Parse(TXT_homealt.Text) / CurrentState.multiplierdist); // use saved home
}
catch { throw new Exception("Your home location is invalid"); }
// log
//log.Info("wps values " + comPort.MAV.wps.Values.Count);
//log.Info("cmd rows " + (Commands.Rows.Count + 1)); // + home
// check for changes / future mod to send just changed wp's
if (comPort.MAV.wps.Values.Count == (Commands.Rows.Count + 1))
{
Hashtable wpstoupload = new Hashtable();
a = -1;
foreach (var item in comPort.MAV.wps.Values)
{
// skip home
if (a == -1)
{
a++;
continue;
}
MAVLink.mavlink_mission_item_t temp = DataViewtoLocationwp(a);
if (temp.command == item.command &&
temp.x == item.x &&
temp.y == item.y &&
temp.z == item.z &&
temp.param1 == item.param1 &&
temp.param2 == item.param2 &&
temp.param3 == item.param3 &&
temp.param4 == item.param4
)
{
//log.Info("wp match " + (a + 1));
}
else
{
//log.Info("wp no match" + (a + 1));
wpstoupload[a] = "";
}
a++;
}
}
// set wp total
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(0, "上传航点数量");
ushort totalwpcountforupload = (ushort)(Commands.Rows.Count + 1);
port.setWPTotal(totalwpcountforupload); // + home
// set home location - overwritten/ignored depending on firmware.
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(0, "上传回家点");
var homeans = port.setWP(home, 0, MAVLink.MAV_FRAME.GLOBAL, 0);
if (homeans != MAVLink.MAV_MISSION_RESULT.MAV_MISSION_ACCEPTED)
{
CustomMessageBox.Show(Strings.ErrorRejectedByMAV, Strings.ERROR);
return;
}
// define the default frame.
MAVLink.MAV_FRAME frame = MAVLink.MAV_FRAME.GLOBAL_RELATIVE_ALT;
// get the command list from the datagrid
var commandlist = GetCommandList();
// upload from wp1, as home is alreadey sent
a = 1;
// process commandlist to the mav
foreach (var temp in commandlist)
{
// this code below fails
//a = commandlist.IndexOf(temp) + 1;
//.........这里部分代码省略.........
开发者ID:kkouer,项目名称:PcGcs,代码行数:101,代码来源:GCS.cs
示例10: prd_DoWork
void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
this.ConvertBini(inputfn, outputfn, true);
}
开发者ID:duyisu,项目名称:MissionPlanner,代码行数:4,代码来源:BinaryLog.cs
示例11: prd_DoWork
void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// list of x,y,z 's
List<Tuple<float, float, float>> data = new List<Tuple<float, float, float>>();
// backup current rate and set to 10 hz
byte backupratesens = MainV2.comPort.MAV.cs.ratesensors;
MainV2.comPort.MAV.cs.ratesensors = 10;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors); // mag captures at 10 hz
DateTime deadline = DateTime.Now.AddSeconds(60);
float oldmx = 0;
float oldmy = 0;
float oldmz = 0;
((ProgressReporterSphere)sender).sphere1.Clear();
while (deadline > DateTime.Now)
{
double timeremaining = (deadline - DateTime.Now).TotalSeconds;
((ProgressReporterDialogue)sender).UpdateProgressAndStatus((int)(((60 - timeremaining) / 60) * 100), timeremaining.ToString("0") + " Seconds - got " + data.Count + " Samples");
if (e.CancelRequested)
{
// restore old sensor rate
MainV2.comPort.MAV.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors);
e.CancelAcknowledged = false;
e.CancelRequested = false;
break;
}
if (oldmx != MainV2.comPort.MAV.cs.mx &&
oldmy != MainV2.comPort.MAV.cs.my &&
oldmz != MainV2.comPort.MAV.cs.mz)
{
data.Add(new Tuple<float, float, float>(
MainV2.comPort.MAV.cs.mx - (float)MainV2.comPort.MAV.cs.mag_ofs_x,
MainV2.comPort.MAV.cs.my - (float)MainV2.comPort.MAV.cs.mag_ofs_y,
MainV2.comPort.MAV.cs.mz - (float)MainV2.comPort.MAV.cs.mag_ofs_z));
oldmx = MainV2.comPort.MAV.cs.mx;
oldmy = MainV2.comPort.MAV.cs.my;
oldmz = MainV2.comPort.MAV.cs.mz;
((ProgressReporterSphere)sender).sphere1.AddPoint(new OpenTK.Vector3(oldmx,oldmy,oldmz));
}
}
// restore old sensor rate
MainV2.comPort.MAV.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors);
if (data.Count < 10)
{
e.ErrorMessage = "Log does not contain enough data";
ans = null;
return;
}
bool ellipsoid = false;
if (MainV2.comPort.MAV.param.ContainsKey("MAG_DIA"))
{
ellipsoid = true;
}
ans = MagCalib.LeastSq(data, ellipsoid);
//find the mean radius
HIL.Vector3 centre = new HIL.Vector3((float)-ans[0], (float)-ans[1], (float)-ans[2]);
HIL.Vector3 point;
float radius = 0;
for (int i = 0; i < data.Count; i++)
{
point = new HIL.Vector3(data[i].Item1, data[i].Item2, data[i].Item3);
radius += (float)(point - centre).length();
}
radius /= data.Count;
//test that we can find one point near a set of points all around the sphere surface
int factor = 2; // 4 point check 2x2
float max_distance = radius / 3; //pretty generouse
for (int j = 0; j < factor; j++)
{
double theta = (Math.PI * (j + 0.5)) / factor;
for (int i = 0; i < factor; i++)
{
double phi = (2 * Math.PI * i) / factor;
HIL.Vector3 point_sphere = new HIL.Vector3(
(float)(Math.Sin(theta) * Math.Cos(phi) * radius),
(float)(Math.Sin(theta) * Math.Sin(phi) * radius),
(float)(Math.Cos(theta) * radius)) + centre;
Console.WriteLine("{0} {1}", theta * rad2deg, phi * rad2deg);
//.........这里部分代码省略.........
开发者ID:KipK,项目名称:MissionPlanner,代码行数:101,代码来源:6CompassCalib.cs
示例12: DoUpdateWorker_DoWork
static void DoUpdateWorker_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// TODO: Is this the right place?
#region Fetch Parameter Meta Data
var progressReporterDialogue = ((ProgressReporterDialogue) sender);
progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Updated Parameters");
try
{
ParameterMetaDataParser.GetParameterInformation();
}
catch (Exception ex)
{
log.Error(ex.ToString());
CustomMessageBox.Show("Error getting Parameter Information");
}
#endregion Fetch Parameter Meta Data
progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Base URL");
try
{
File.WriteAllText(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "writetest.txt", "this is a test");
}
catch(Exception ex)
{
log.Info("Write test failed");
throw new Exception("Unable to write to the install directory", ex);
}
finally
{
try
{
File.Delete(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "writetest.txt");
}
catch
{
log.Info("Write test cleanup failed");
}
}
// check for updates
// if (Debugger.IsAttached)
{
// log.Info("Skipping update test as it appears we are debugging");
}
// else
{
updateCheckMain(progressReporterDialogue);
}
}
开发者ID:ArduPilot,项目名称:MissionPlanner,代码行数:54,代码来源:Update.cs
示例13: prd_DoWork
static void prd_DoWork(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
// turn learning off
MainV2.comPort.setParam("COMPASS_LEARN", 0);
bool havecompass2 = false;
//compass2 get mag2 offsets
float com2ofsx = 0;
float com2ofsy = 0;
float com2ofsz = 0;
if (MainV2.comPort.MAV.param.ContainsKey("COMPASS_OFS2_X"))
{
com2ofsx = MainV2.comPort.GetParam("COMPASS_OFS2_X");
com2ofsy = MainV2.comPort.GetParam("COMPASS_OFS2_Y");
com2ofsz = MainV2.comPort.GetParam("COMPASS_OFS2_Z");
havecompass2 = true;
}
// old method
float minx = 0;
float maxx = 0;
float miny = 0;
float maxy = 0;
float minz = 0;
float maxz = 0;
// backup current rate and set to 10 hz
byte backupratesens = MainV2.comPort.MAV.cs.ratesensors;
MainV2.comPort.MAV.cs.ratesensors = 10;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors); // mag captures at 10 hz
var sub = MainV2.comPort.SubscribeToPacketType(MAVLink.MAVLINK_MSG_ID.RAW_IMU, ReceviedPacket);
var sub2 = MainV2.comPort.SubscribeToPacketType(MAVLink.MAVLINK_MSG_ID.SCALED_IMU2, ReceviedPacket);
string extramsg = "";
((ProgressReporterSphere)sender).sphere1.Clear();
((ProgressReporterSphere)sender).sphere2.Clear();
int lastcount = 0;
DateTime lastlsq = DateTime.MinValue;
DateTime lastlsq2 = DateTime.MinValue;
HIL.Vector3 centre = new HIL.Vector3();
while (true)
{
// slow down execution
System.Threading.Thread.Sleep(20);
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(-1, "Got " + datacompass1.Count + " Samples " + extramsg);
if (e.CancelRequested)
{
// restore old sensor rate
MainV2.comPort.MAV.cs.ratesensors = backupratesens;
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, MainV2.comPort.MAV.cs.ratesensors);
e.CancelAcknowledged = false;
e.CancelRequested = false;
break;
}
if (datacompass1.Count == 0)
continue;
// dont use dup data
if (lastcount == datacompass1.Count)
continue;
lastcount = datacompass1.Count;
float rawmx = datacompass1[datacompass1.Count - 1].Item1;
float rawmy = datacompass1[datacompass1.Count - 1].Item2;
float rawmz = datacompass1[datacompass1.Count - 1].Item3;
// for old method
setMinorMax(rawmx, ref minx, ref maxx);
setMinorMax(rawmy, ref miny, ref maxy);
setMinorMax(rawmz, ref minz, ref maxz);
// get the current estimated centerpoint
//new HIL.Vector3((float)-((maxx + minx) / 2), (float)-((maxy + miny) / 2), (float)-((maxz + minz) / 2));
// run lsq every seconds when more than 100 datapoints
if (datacompass1.Count > 100 && lastlsq.Second != DateTime.Now.Second)
{
lastlsq = DateTime.Now;
lock (datacompass1)
{
var lsq = MagCalib.LeastSq(datacompass1, false);
// simple validation
if (Math.Abs(lsq[0]) < 999)
{
centre = new HIL.Vector3(lsq[0], lsq[1], lsq[2]);
log.Info("new centre " + centre.ToString());
//.........这里部分代码省略.........
开发者ID:jank3,项目名称:MissionPlanner,代码行数:101,代码来源:MagCalib.cs
示例14: DoCalibration
void DoCalibration(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
var prd = ((ProgressReporterDialogue)sender);
prd.UpdateProgressAndStatus(-1, "Starting Compass Mot");
int8_t comp_type; // throttle or current based compensation
Vector3f compass_base = new Vector3f(); // compass vector when throttle is zero
Vector3f motor_impact = new Vector3f(); // impact of motors on compass vector
Vector3f motor_impact_scaled; // impact of motors on compass vector scaled with throttle
Vector3f motor_compensation; // final compensation to be stored to eeprom
float throttle_pct; // throttle as a percentage 0.0 ~ 1.0
float throttle_pct_max = 0.0f; // maximum throttle reached (as a percentage 0~1.0)
float current_amps_max = 0.0f; // maximum current reached
float interference_pct; // interference as a percentage of total mag field (for reporting purposes only)
//uint32_t last_run_time;
uint8_t print_counter = 49;
bool updated = false; // have we updated the compensation vector at least once
if ((float)MainV2.comPort.MAV.param["BATT_MONITOR"] == 4f) // volt and current
{
comp_type = (sbyte)comptype.Current;
prd.UpdateProgressAndStatus(-1, "Compass Mot using current");
}
else
{
comp_type = (sbyte)comptype.Throttle;
prd.UpdateProgressAndStatus(-1, "Compass Mot using throttle");
}
if ((float)MainV2.comPort.MAV.param["COMPASS_USE"] != 1)
{
e.ErrorMessage = "Compass is disabled";
return;
}
// request streams
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RC_CHANNELS, 10); // rc out
MainV2.comPort.requestDatastream(MAVLink.MAV_DATA_STREAM.RAW_SENSORS, 50); // mag out
// reset compass mot
MainV2.comPort.setParam("COMPASS_MOTCT ", 0.0f);
MainV2.comPort.setParam("COMPASS_MOT_X", 0.000000f);
MainV2.comPort.setParam("COMPASS_MOT_Y", 0.000000f);
MainV2.comPort.setParam("COMPASS_MOT_Z", 0.000000f);
// store initial x,y,z compass values
compass_base.x = MainV2.comPort.MAV.cs.mx;
compass_base.y = MainV2.comPort.MAV.cs.my;
compass_base.z = MainV2.comPort.MAV.cs.mz;
// initialise motor compensation
motor_compensation = new Vector3f(0, 0, 0);
int magseen = MainV2.comPort.MAV.packetseencount[(byte)MAVLink.MAVLINK_MSG_ID.RAW_IMU];
int rcseen = MainV2.comPort.MAV.packetseencount[(byte)MAVLink.MAVLINK_MSG_ID.HIL_RC_INPUTS_RAW];
DateTime deadline = DateTime.Now.AddSeconds(10);
prd.UpdateProgressAndStatus(-1, "Waiting for Mag and RC data");
while (true)
{
if (magseen > (magseen + 100) && rcseen > (rcseen + 20))
{
break;
}
if (e.CancelRequested)
{
e.CancelAcknowledged = true;
return;
}
if (DateTime.Now > deadline)
{
e.ErrorMessage = "Not enough packets where received\n" + magseen + " mag " + rcseen + " rc";
return;
}
}
while (true)
{
if (prd.doWorkArgs.CancelRequested)
{
prd.doWorkArgs.CancelAcknowledged = true;
break;
}
// radio
// passthorugh - cant do.
// compass read
// battery read
// calculate scaling for throttle
int checkme;
throttle_pct = (float)MainV2.comPort.MAV.cs.ch3percent / 100.0f;
//.........这里部分代码省略.........
开发者ID:GCBrentA,项目名称:MissionPlanner,代码行数:101,代码来源:MagMotor.cs
示例15: FrmProgressReporterGetParams
void FrmProgressReporterGetParams(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
getParamListBG();
}
开发者ID:ChukRhodes,项目名称:MissionPlanner,代码行数:4,代码来源:MAVLinkInterface.cs
示例16: FrmProgressReporterDoWorkNOParams
void FrmProgressReporterDoWorkNOParams(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
OpenBg(sender, false, e);
}
开发者ID:ChukRhodes,项目名称:MissionPlanner,代码行数:4,代码来源:MAVLinkInterface.cs
示例17: getWPs
void getWPs(object sender, ProgressWorkerEventArgs e, object passdata = null)
{
List<Locationwp> cmds = new List<Locationwp>();
try
{
MAVLinkInterface port = comPort;
if (!port.BaseStream.IsOpen)
{
throw new Exception("Please Connect First!");
}
comPort.giveComport = true;
param = port.MAV.param;
//log.Info("Getting WP #");
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(0, "Getting WP count");
int cmdcount = port.getWPCount();
for (ushort a = 0; a < cmdcount; a++)
{
if (((ProgressReporterDialogue)sender).doWorkArgs.CancelRequested)
{
((ProgressReporterDialogue)sender).doWorkArgs.CancelAcknowledged = true;
throw new Exception("Cancel Requested");
}
//log.Info("Getting WP" + a);
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(a * 100 / cmdcount, "下载航点 " + a);
cmds.Add(port.getWP(a));
}
port.setWPACK();
((ProgressReporterDialogue)sender).UpdateProgressAndStatus(100, "完成");
//log.Info("Done");
}
catch { throw; }
WPtoScreen(cmds);
}
开发者ID:kkouer,项目名称:PcGcs,代码行数:46,代码来源:GCS.cs
示例18: OpenBg
private void OpenBg(object PRsender, bool getparams, ProgressWorkerEventArgs progressWorkerEventArgs)
{
frmProgressReporter.UpdateProgressAndStatus(-1, "Mavlink Connecting...");
giveComport = true;
// allow settings to settle - previous dtr
System.Threading.Thread.Sleep(500);
// reset
MAV.sysid = 0;
MAV.compid = 0;
MAV.param = new Hashtable();
MAV.packets.Initialize();
MAV.VersionString = "";
MAV.SoftwareVersions = "";
MAV.SerialString = "";
bool hbseen = false;
try
{
BaseStream.ReadBufferSize = 16 * 1024;
lock (objlock) // so we dont have random traffic
{
|
请发表评论