public void Tunnels_Summary(string dir) { try { if (!Directory.Exists(dir)) { MessageBox.Show(string.Format("Directory Not Found!\n\n{0}", dir), "Report Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); } else { DirectoryInfo info = new DirectoryInfo(dir); FileInfo[] files = info.GetFiles("*.csv"); if (files.Length != 0) { Stats s = new Stats(); Stats stats2 = new Stats(); Stats stats3 = new Stats(); string str = "SW Version: Not detected"; foreach (FileInfo info2 in files) { LogManager manager = new LogManager(); manager.OpenFileRead(info.FullName + info2.Name); string str2 = manager.ReadLine(); for (str2 = manager.ReadLine(); str2 != null; str2 = manager.ReadLine()) { string[] strArray = str2.Split(new char[] { ',' }); if (strArray.Length >= 11) { int num = Convert.ToInt32(strArray[8]); int num2 = Convert.ToInt32(strArray[9]); int num3 = Convert.ToInt32(strArray[10]); s.InsertSample((double) num); stats2.InsertSample((double) num2); stats3.InsertSample((double) num3); } } manager.CloseFile(); } string path = dir + @"\summary_tunnels.xml"; StreamWriter f = new StreamWriter(path); f.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); f.WriteLine("<tunnels>"); f.WriteLine("\t<swVersion name=\"{0}\">", str); this.printCDFHelper(f, s, "Time to Lose One SV"); this.printCDFHelper(f, stats2, "Time to Lose All SVs"); this.printCDFHelper(f, stats3, "Time to Re-Acquire Signal"); f.WriteLine("\t</swVersion>"); f.WriteLine("</tunnels>"); f.Close(); string outputFile = dir + @"\summary_tunnels.html"; this.GenerateHTMLReport(path, outputFile, ConfigurationManager.AppSettings["InstalledDirectory"] + @"\scripts\tunnelsReport.xsl"); } } } catch (Exception exception) { MessageBox.Show(exception.Message, "Error"); } }
public void PseudoRangeError_Summary(string filename) { int num = 0x20; int num2 = 0; Stats s = new Stats(); Stats stats2 = new Stats(); Stats[] statsArray = new Stats[num]; Stats[] statsArray2 = new Stats[num]; string str = "SW Version: Not detected"; try { LogManager manager = new LogManager(); manager.OpenFileRead(filename); string str2 = manager.ReadLine(); for (str2 = manager.ReadLine(); str2 != null; str2 = manager.ReadLine()) { string[] strArray = str2.Split(new char[] { ',' }); if (strArray.Length >= 8) { double num3 = Convert.ToDouble(strArray[7]); int index = Convert.ToInt32(strArray[0]) - 1; if (num3 != -1.0) { s.InsertSample(Math.Abs(num3)); if ((index < num) && (index >= 0)) { if (statsArray[index] == null) { statsArray[index] = new Stats(); } statsArray[index].InsertSample(Math.Abs(num3)); } } else { num2++; } } } manager.CloseFile(); } catch (Exception exception) { MessageBox.Show(exception.Message, "Exception while generating PR error report"); } try { string[] strArray2 = filename.Split(new char[] { '\\' }); string str3 = ""; if (strArray2.GetLength(0) > 1) { for (int k = 0; k < (strArray2.GetLength(0) - 1); k++) { str3 = str3 + strArray2[k] + '\\'; } } StreamWriter f = new StreamWriter(str3 + @"\summary_PRError.xml"); f.WriteLine("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); f.WriteLine("<PseudoRangeError>"); f.WriteLine("\t<swVersion name=\"{0}\">", str); this.printCDFHelper(f, s, "Pseudo Range Error - Overall"); for (int i = 0; i < num; i++) { if ((statsArray[i] != null) && (statsArray[i].Samples > 0)) { this.printCDFHelper(f, statsArray[i], "Pseudo Range Error - Per SV (SV=" + i.ToString() + ")"); } } this.printCDFHelper(f, stats2, "Pseudo Range Error - Overall at Tunnel Exit"); for (int j = 0; j < num; j++) { if ((statsArray2[j] != null) && (statsArray2[j].Samples > 0)) { this.printCDFHelper(f, statsArray2[j], "Pseudo Range Error - Per SV at Tunnel Exit (SV=" + j.ToString() + ")"); } } f.WriteLine("\t</swVersion>"); f.WriteLine("</PseudoRangeError>"); f.Close(); } catch (Exception exception2) { MessageBox.Show(exception2.Message, "Exception while generating PR error report"); } }
private void ttfsPlotBtn_Click(object sender, EventArgs e) { this.ttfsPlotBtn.Enabled = false; if (this._CDFPlotWin == null) { this._CDFPlotWin = new frmCDFPlots(); this._CDFPlotWin.MdiParent = base.MdiParent; this._CDFPlotWin.UpdateStatusToParentWin += new frmCDFPlots.UpdateParentEventHandler(this.updatePlotStatus); this._CDFPlotWin.UpdateStatsData += new frmCDFPlots.UpdateParentEventHandler(this.RefreshCDFPlot); } Stats dataClass = new Stats(); for (int i = 0; i < this.dataGridView1.Rows.Count; i++) { try { dataClass.InsertSample(Convert.ToDouble(this.dataGridView1["TTFS", i].Value.ToString())); } catch { this.ttfsPlotBtn.Enabled = true; } } string label = "Time To First Sync"; if ((dataClass != null) && (dataClass.Samples > 0)) { this._CDFPlotWin.SetPlotData(dataClass, dataClass.Samples, "CDF Plot", label, Color.Blue); this._CDFPlotWin.Show(); this._CDFPlotWin.SetXAxisTitle("Time To First Frame Sync(s)"); } }
public void PointToPointErrorCalculation(string dataFile, string refFile, double startPoint, double endPoint) { ArrayList list = this._helperFunctions.ReadIMUFile(dataFile, startPoint, endPoint); ArrayList list2 = this._helperFunctions.ReadIMUFile(refFile, startPoint, endPoint); Stats stats = new Stats(); Stats stats2 = new Stats(); Stats stats3 = new Stats(); Stats stats4 = new Stats(); Stats stats5 = new Stats(); Stats stats6 = new Stats(); Stats stats7 = new Stats(); Stats stats8 = new Stats(); PositionErrorCalc calc = new PositionErrorCalc(); List<string> list3 = new List<string>(); string item = string.Empty; List<double> positionDataList = new List<double>(8); for (int i = 0; i < 8; i++) { positionDataList.Add(0.0); } PositionInfo.PositionStruct struct2 = new PositionInfo.PositionStruct(); PositionInfo.PositionStruct struct3 = new PositionInfo.PositionStruct(); int num2 = 0; int num3 = 0; double tOW = 0.0; double num5 = 0.0; double sample = 0.0; double num7 = 0.0; double num8 = 0.0; double num9 = 0.0; double num10 = 0.0; double num11 = 0.0; double num12 = 0.0; int num13 = 0; int num14 = 0; int num15 = 0; int num16 = 0; int num17 = 0; int num18 = 0; int num19 = 0; int num20 = 0; int num21 = 0; string str2 = "Not detected"; if ((list.Count > 0) && (list2.Count > 0)) { for (num2 = 0; (num2 < list.Count) && (num3 < list2.Count); num2++) { struct2 = (PositionInfo.PositionStruct) list[num2]; struct3 = (PositionInfo.PositionStruct) list2[num3]; if (struct2.SW_Version != string.Empty) { str2 = struct2.SW_Version.TrimStart(new char[] { ':' }); } if (struct2.NavType > 0) { tOW = struct2.TOW; num5 = struct3.TOW; while (tOW > num5) { num3++; if (num3 >= list2.Count) { break; } struct3 = (PositionInfo.PositionStruct) list2[num3]; num5 = struct3.TOW; } if (num8 == 0.0) { num8 = tOW; } num9 = tOW; if (tOW == num5) { positionDataList[0] = struct2.Latitude; positionDataList[1] = struct2.Longitude; positionDataList[2] = struct2.Altitude; positionDataList[3] = struct2.Heading; positionDataList[4] = struct3.Latitude; positionDataList[5] = struct3.Longitude; positionDataList[6] = struct3.Altitude; positionDataList[7] = struct3.Heading; calc.GetPositionErrorsInMeter(positionDataList); sample = calc.HorizontalError; stats.InsertSample(sample); num7 = Math.Abs(calc.VerticalErrorInMeter); stats2.InsertSample(num7); num11 = Math.Abs(calc.AlongTrackErrorInMeter); stats7.InsertSample(num11); num12 = Math.Abs(calc.XTrackErrorInMeter); stats8.InsertSample(num12); num10 = Math.Abs((double) (struct2.Heading - struct3.Heading)); if (num10 > 180.0) { num10 = 360.0 - num10; } stats6.InsertSample(num10); stats3.InsertSample(struct2.HDOP); stats4.InsertSample((double) struct2.NumSVInFix); stats5.InsertSample(struct2.MaxCN0); if (sample > 50.0) { num13++; num19++; if (num13 == 4) { num16++; } } else { num13 = 0; } if (sample > 25.0) { num14++; num20++; if (num14 == 4) { num17++; } } else { num14 = 0; } if (sample > 10.0) { num15++; num21++; if (num15 == 4) { num18++; } } else { num15 = 0; } item = string.Format("{0},{1}, {2:F6},{3:F6},{4:F6},{5:F6},{6:F6},{7:F6},{8:F6}, {9:F6}, {10:F2}, {11:F2}, {12:F2}, {13:F2},{14:F2},{15:F2},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25}, {26},{27}", new object[] { tOW, num5, struct2.Latitude, struct2.Longitude, struct2.Altitude, struct3.Latitude, struct3.Longitude, struct3.Altitude, struct2.Heading, struct3.Heading, sample, num7, num12, num11, struct2.HDOP, struct2.NumSVInFix, struct2.MaxCN0, struct2.NavType, num19, num16, num20, num17, num21, num18, num13, num14, num15, num10 }); list3.Add(item); num3++; } } } if (stats.Samples > 0) { double percentile = stats.GetPercentile((double) 50.0, -9999.0); double num23 = stats.GetPercentile((double) 68.0, -9999.0); double num24 = stats.GetPercentile((double) 95.0, -9999.0); double num25 = stats.Stats_Max((double) -9999.0); stats.Stats_Min((double) -9999.0); stats.Stats_Mean((double) -9999.0); double num26 = stats2.GetPercentile((double) 50.0, -9999.0); double num27 = stats2.GetPercentile((double) 68.0, -9999.0); double num28 = stats2.GetPercentile((double) 95.0, -9999.0); double num29 = stats2.Stats_Max((double) -9999.0); stats2.Stats_Min((double) -9999.0); stats2.Stats_Mean((double) -9999.0); double num30 = stats8.GetPercentile((double) 50.0, -9999.0); double num31 = stats8.GetPercentile((double) 68.0, -9999.0); double num32 = stats8.GetPercentile((double) 95.0, -9999.0); double num33 = stats8.Stats_Max((double) -9999.0); stats8.Stats_Min((double) -9999.0); stats8.Stats_Mean((double) -9999.0); double num34 = stats7.GetPercentile((double) 50.0, -9999.0); double num35 = stats7.GetPercentile((double) 68.0, -9999.0); double num36 = stats7.GetPercentile((double) 95.0, -9999.0); double num37 = stats7.Stats_Max((double) -9999.0); stats7.Stats_Min((double) -9999.0); stats7.Stats_Mean((double) -9999.0); int samples = stats.Samples; double num39 = stats3.Stats_Mean((double) -9999.0); double num40 = stats4.Stats_Mean((double) -9999.0); double num41 = (((double) samples) / ((num9 - num8) + 1.0)) * 100.0; double num42 = stats5.Stats_Mean((double) -9999.0); double num43 = stats6.Stats_Max((double) -9999.0); stats6.Stats_Min((double) -9999.0); stats6.Stats_Mean((double) -9999.0); double num44 = stats6.GetPercentile((double) 50.0, -9999.0); double num45 = stats6.GetPercentile((double) 68.0, -9999.0); double num46 = stats6.GetPercentile((double) 95.0, -9999.0); string path = dataFile.Replace(".gps", "_PointToPointAccuracy.csv"); FileInfo info = new FileInfo(dataFile); StreamWriter writer = new StreamWriter(path); FileInfo info2 = new FileInfo(refFile); writer.WriteLine("IMU file path= {0}", info2.Name); writer.WriteLine("Data file path= {0}", info.Name); writer.WriteLine("SW Version= {0}", str2); writer.WriteLine("MaxCN0 Ave|dBHz= {0:F1}", num42); writer.WriteLine("Samples= {0:}", samples); writer.WriteLine("Tracking Availability= {0:F1}%", num41); writer.WriteLine("HDOP Ave= {0:F1}", num39); writer.WriteLine("Satellite Number Ave= {0:F1}", num40); writer.WriteLine("Horizontal Error 50% CEP|m= {0:F1}", percentile); writer.WriteLine("Horizontal Error 68% CEP|m= {0:F1}", num23); writer.WriteLine("Horizontal Error 95% CEP|m= {0:F1}", num24); writer.WriteLine("Horizontal Error Max|m= {0:F1}", num25); writer.WriteLine("Altitude Error 50% CEP|m= {0:F1}", num26); writer.WriteLine("Altitude Error 68% CEP|m= {0:F1}", num27); writer.WriteLine("Altitude Error 95% CEP|m= {0:F1}", num28); writer.WriteLine("Altitude Error Max|m= {0:F1}", num29); writer.WriteLine("Cross Track Error 50% CEP|m= {0:F1}", num30); writer.WriteLine("Cross Track Error 68% CEP|m= {0:F1}", num31); writer.WriteLine("Cross Track Error 95% CEP|m= {0:F1}", num32); writer.WriteLine("Cross Track Error Max|m= {0:F1}", num33); writer.WriteLine("Along Track Error 50% CEP|m= {0:F1}", num34); writer.WriteLine("Along Track Error 68% CEP|m= {0:F1}", num35); writer.WriteLine("Along Track Error 95% CEP|m= {0:F1}", num36); writer.WriteLine("Along Track Error Max|m= {0:F1}", num37); writer.WriteLine("Exceed50mCount= {0}", num19); writer.WriteLine("Exceed50m3sNotPullInCount= {0}", num16); writer.WriteLine("Exceed25mCount= {0}", num20); writer.WriteLine("Exceed25m3sNotPullInCount= {0}", num17); writer.WriteLine("Exceed10mCount= {0}", num21); writer.WriteLine("Exceed10m3sNotPullInCount= {0}", num18); writer.WriteLine("Heading Error 50% CEP|m= {0:F1}", num44); writer.WriteLine("Heading Error 68% CEP|m= {0:F1}", num45); writer.WriteLine("Heading Error 95% CEP|m= {0:F1}", num46); writer.WriteLine("Heading Error Max|m= {0:F1}", num43); writer.WriteLine("End Summary"); writer.WriteLine("Tow,RefTow,Latitude,Longitude,Altitude,RefLatitude,RefLongitude,RefAltitude,Heading,RefHeading,HzError,AltError,CrossTrackError,AlongTrackError,HDOP,NumSVInFix,MaxCN0,NavType,Exceed50mCount,Exceed50m3sNotPullInCount,Exceed25mCount,Exceed25m3sNotPullInCount,Exceed10mCount,Exceed10m3sNotPullInCount,PullInTime50m,PullInTime25m,ullInTime10m,headingError"); foreach (string str4 in list3) { writer.WriteLine(str4); } writer.Close(); } list.Clear(); list2.Clear(); } stats.Dispose(); stats = null; stats2.Dispose(); stats2 = null; stats3.Dispose(); stats3 = null; stats4.Dispose(); stats4 = null; stats5.Dispose(); stats5 = null; stats8.Dispose(); stats8 = null; stats7.Dispose(); stats7 = null; stats6.Dispose(); stats6 = null; calc = null; list3.Clear(); list3 = null; }
private void RefreshCDFPlot() { if (this._CDFPlotWin != null) { Stats dataClass = new Stats(); for (int i = 0; i < this.dataGridView1.Rows.Count; i++) { try { dataClass.InsertSample(Convert.ToDouble(this.dataGridView1["TTFS", i].Value.ToString())); } catch { } } string label = "Time To First Sync"; if ((dataClass != null) && (dataClass.Samples > 0)) { this._CDFPlotWin.SetPlotData(dataClass, dataClass.Samples, "CDF Plot", label, Color.Blue); this._CDFPlotWin.RefreshPlot(); this._CDFPlotWin.SetXAxisTitle("Time To First Frame Sync(s)"); } } }