public static List<BitMapInfo> create(double angle, Dictionary<int, List<WatsEmiSample>> angleSamples, List<ChannelSetting> channelSettings, bool displayChannel, int minAbsRssi, int maxAbsRssi, List<FrequencyRange> ranges, double maxShowFreq) { List<BitMapInfo> bitMapInfos = new List<BitMapInfo>(); List<WatsEmiSample> verticalSamples; //= angleSamples[0]; List<WatsEmiSample> horizontalSamples;//= angleSamples[1]; BitMapInfo bitMapInfo; foreach (FrequencyRange range in ranges) { verticalSamples = new List<WatsEmiSample>(); horizontalSamples = new List<WatsEmiSample>(); bitMapInfo = new BitMapInfo(); bitMapInfo.Band = Utility.ConvertDoubleString(range.FromFreq) + "-" + Utility.ConvertDoubleString(range.EndFreq); bitMapInfo.Title1 = "V-" + angle.ToString() + "\x00B0" + "[" + range.FromFreq + "~" + range.EndFreq + " MHz]"; bitMapInfo.Title2 = "H-" + angle.ToString() + "\x00B0" + "[" + range.FromFreq + "~" + range.EndFreq + " MHz]"; bitMapInfo.BmpFile1 = Utility.GetAppPath() + "\\Temp\\Angle" + ((int)angle).ToString() + "-vertical-" + ((int)range.FromFreq).ToString() + ".emf"; bitMapInfo.BmpFile2 = Utility.GetAppPath() + "\\Temp\\Angle" + ((int)angle).ToString() + "-horizontal-" + ((int)range.FromFreq).ToString() + ".emf"; foreach (WatsEmiSample sample in angleSamples[0]) { if (sample.mFreq < range.FromFreq) continue; else if (sample.mFreq > range.EndFreq) break; verticalSamples.Add(sample); } drawPicture(range, maxShowFreq, channelSettings, displayChannel, verticalSamples, minAbsRssi, maxAbsRssi, bitMapInfo.BmpFile1, bitMapInfo.Title1); foreach (WatsEmiSample sample in angleSamples[1]) { if (sample.mFreq < range.FromFreq) continue; else if (sample.mFreq > range.EndFreq) break; horizontalSamples.Add(sample); } drawPicture(range, maxShowFreq, channelSettings, displayChannel, horizontalSamples, minAbsRssi, maxAbsRssi, bitMapInfo.BmpFile2, bitMapInfo.Title2); bitMapInfos.Add(bitMapInfo); } return bitMapInfos; }
public static Dictionary<string, List<BitMapInfo>> create(EMIFileData emi, double azimuth, string relativeAzimuth, WatsEmiDataManager dataMgr, Dictionary<string, List<ChannelSetting>> allBandchannels, LimitSetting limitSetting, int minAbsRssi, int maxAbsRssi) { Dictionary<string, List<BitMapInfo>> allChannelBitmapInfos = new Dictionary<string,List<BitMapInfo>>(); List<BitMapInfo> channelBitmapInfos; BitMapInfo loBitMapInfo, hiBitMapInfo; List<WatsEmiSample> loVerticalSamples, hiVerticalSamples; List<WatsEmiSample> loHorizontalSamples, hiHorizontalSamples; string bandName; double curFreq; int counter = 0; List<BitMapInfo> channelBitmaps; List<Marker> loVerticalMarkers, loHoizontalMarkers; List<Marker> hiVerticalMarkers, hiHoizontalMarkers; List<ChannelSetting> channelSettings; List<ChannelSetting> pairChannelSettings; Marker marker; ChannelPower channelPower; foreach (KeyValuePair<string, List<ChannelSetting>> pair in allBandchannels) { bandName = pair.Key; channelBitmapInfos = new List<BitMapInfo>(); channelSettings = pair.Value; pairChannelSettings = new List<ChannelSetting>(); foreach (ChannelSetting channelSetting in channelSettings) pairChannelSettings.Add(channelSetting.Pair); loVerticalSamples = new List<WatsEmiSample>(); for (int i = 0; i < dataMgr.AllSamples[azimuth][0].Count; i++) { curFreq = dataMgr.AllSamples[azimuth][0][i].mFreq; if (curFreq >= channelSettings[0].StartFreq && curFreq <= channelSettings[channelSettings.Count - 1].EndFreq) { loVerticalSamples.Add(dataMgr.AllSamples[azimuth][0][i]); } } loHorizontalSamples = new List<WatsEmiSample>(); for (int i = 0; i < dataMgr.AllSamples[azimuth][1].Count; i++) { curFreq = dataMgr.AllSamples[azimuth][1][i].mFreq; if (curFreq >= channelSettings[0].StartFreq && curFreq <= channelSettings[channelSettings.Count - 1].EndFreq) { loHorizontalSamples.Add(dataMgr.AllSamples[azimuth][1][i]); } } hiVerticalSamples = new List<WatsEmiSample>(); for (int i = 0; i < dataMgr.AllSamples[azimuth][0].Count; i++) { curFreq = dataMgr.AllSamples[azimuth][0][i].mFreq; if (curFreq >= pairChannelSettings[0].StartFreq && curFreq <= pairChannelSettings[pairChannelSettings.Count - 1].EndFreq) { hiVerticalSamples.Add(dataMgr.AllSamples[azimuth][0][i]); } } hiHorizontalSamples = new List<WatsEmiSample>(); for (int i = 0; i < dataMgr.AllSamples[azimuth][1].Count; i++) { curFreq = dataMgr.AllSamples[azimuth][1][i].mFreq; if (curFreq >= pairChannelSettings[0].StartFreq && curFreq <= pairChannelSettings[pairChannelSettings.Count - 1].EndFreq) { hiHorizontalSamples.Add(dataMgr.AllSamples[azimuth][1][i]); } } loBitMapInfo = new BitMapInfo(); loBitMapInfo.Title1 = "Spectrum Analyzer Data MDEF-LAXI_" + bandName + "_" + relativeAzimuth + "V (LO)"; loBitMapInfo.Title2 = "Spectrum Analyzer Data MDEF-LAXI_" + bandName + "_" + relativeAzimuth + "H (LO)"; loBitMapInfo.BmpFile1 = Utility.GetAppPath() + "\\Temp\\Site_" + emi.Site_ID + "_Azimuth_" + relativeAzimuth + "_" + bandName + "_LowBand_Vertical_" + (++counter).ToString() + ".emf"; loBitMapInfo.BmpFile2 = Utility.GetAppPath() + "\\Temp\\Site_" + emi.Site_ID + "_Azimuth_" + relativeAzimuth + "_" + bandName + "_LowBand_Horizontal_" + (counter).ToString() + ".emf"; hiBitMapInfo = new BitMapInfo(); hiBitMapInfo.Title1 = "Spectrum Analyzer DataMDEF-LAXI_" + bandName + "_" + relativeAzimuth + "V (HI)"; hiBitMapInfo.Title2 = "Spectrum Analyzer DataMDEF-LAXI_" + bandName + "_" + relativeAzimuth + "H (HI)"; hiBitMapInfo.BmpFile1 = Utility.GetAppPath() + "\\Temp\\Site_" + emi.Site_ID + "_Azimuth_" + relativeAzimuth + "_" + bandName + "_HighBand_Vertical_" + (++counter).ToString() + ".emf"; hiBitMapInfo.BmpFile2 = Utility.GetAppPath() + "\\Temp\\Site_" + emi.Site_ID + "_Azimuth_" + relativeAzimuth + "_" + bandName + "_HighBand_Horizontal_" + (counter).ToString() + ".emf"; loVerticalMarkers = new List<Marker>(); loHoizontalMarkers = new List<Marker>(); hiVerticalMarkers = new List<Marker>(); hiHoizontalMarkers = new List<Marker>(); foreach (ChannelSetting channelSetting in channelSettings) { channelPower = new ChannelPower(emi.SA_RBW, channelSetting, limitSetting, dataMgr.AllChannelSamples[azimuth][channelSetting]); if (!channelPower.IsValidVPower) { marker = Utility.CreateMarker(channelSetting.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mVSamples); loVerticalMarkers.Add(marker); } if (!channelPower.IsValidVPairPower) { marker = Utility.CreateMarker(channelSetting.Pair.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mVPairSamples); hiVerticalMarkers.Add(marker); } if (!channelPower.IsValidHPower) { marker = Utility.CreateMarker(channelSetting.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mHSamples); loHoizontalMarkers.Add(marker); } if (!channelPower.IsValidHPairPower) { marker = Utility.CreateMarker(channelSetting.Pair.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mHPairSamples); hiHoizontalMarkers.Add(marker); } } drawPicture(emi, loVerticalSamples, channelSettings, limitSetting, loBitMapInfo.BmpFile1, loBitMapInfo.Title1, minAbsRssi, maxAbsRssi, loVerticalMarkers); drawPicture(emi, loHorizontalSamples, channelSettings, limitSetting, loBitMapInfo.BmpFile2, loBitMapInfo.Title2, minAbsRssi, maxAbsRssi, loHoizontalMarkers); drawPicture(emi, hiVerticalSamples, pairChannelSettings, limitSetting, hiBitMapInfo.BmpFile1, hiBitMapInfo.Title1, minAbsRssi, maxAbsRssi, hiVerticalMarkers); drawPicture(emi, hiHorizontalSamples, pairChannelSettings, limitSetting, hiBitMapInfo.BmpFile2, hiBitMapInfo.Title2, minAbsRssi, maxAbsRssi, hiHoizontalMarkers); channelBitmaps = new List<BitMapInfo>(); channelBitmaps.Add(loBitMapInfo); channelBitmaps.Add(hiBitMapInfo); allChannelBitmapInfos[bandName] = channelBitmaps; } return allChannelBitmapInfos; }
public static BitMapInfo create(EMIFileData emi, double azimuth, double actualAzimuth, string title, WatsEmiDataManager dataMgr, List<ChannelSetting> channelSettings, LimitSetting limitSetting, int minAbsRssi, int maxAbsRssi) { BitMapInfo bitMapInfo = new BitMapInfo(); List<WatsEmiSample> verticalSamples = new List<WatsEmiSample>(); List<WatsEmiSample> horizontalSamples = new List<WatsEmiSample>(); bitMapInfo.Title1 = title + " " + azimuth.ToString() + "\x00B0" + " V"; bitMapInfo.Title2 = title + " " + azimuth.ToString() + "\x00B0" + " H"; bitMapInfo.BmpFile1 = Utility.GetAppPath() + "\\Temp\\Site_" + emi.Site_ID + "_Azimuth_" + ((int)azimuth).ToString() + "_Vertical_" + (++counter).ToString() + ".emf"; bitMapInfo.BmpFile2 = Utility.GetAppPath() + "\\Temp\\Site_" + emi.Site_ID + "_Azimuth_" + ((int)azimuth).ToString() + "_Horizontal_" + (++counter).ToString() + ".emf"; for (int i = 0; i < dataMgr.AllSamples[actualAzimuth][0].Count; i++) { if (dataMgr.AllSamples[actualAzimuth][0][i].mFreq >= channelSettings[0].StartFreq && dataMgr.AllSamples[actualAzimuth][0][i].mFreq <= channelSettings[channelSettings.Count - 1].Pair.EndFreq) verticalSamples.Add(dataMgr.AllSamples[actualAzimuth][0][i]); } for (int i = 0; i < dataMgr.AllSamples[actualAzimuth][1].Count; i++) { if (dataMgr.AllSamples[actualAzimuth][1][i].mFreq >= channelSettings[0].StartFreq && dataMgr.AllSamples[actualAzimuth][1][i].mFreq <= channelSettings[channelSettings.Count - 1].Pair.EndFreq) horizontalSamples.Add(dataMgr.AllSamples[actualAzimuth][1][i]); } List<Marker> verticalMarkers = new List<Marker>(); List<Marker> hoizontalMarkers = new List<Marker>(); Marker marker; ChannelPower channelPower; foreach (ChannelSetting channelSetting in channelSettings) { channelPower = new ChannelPower(emi.SA_RBW, channelSetting, limitSetting, dataMgr.AllChannelSamples[actualAzimuth][channelSetting]); if (!channelPower.IsValidVPower) { marker = Utility.CreateMarker(channelSetting.ChannelName, dataMgr.AllChannelSamples[actualAzimuth][channelSetting].mVSamples); verticalMarkers.Add(marker); } if (!channelPower.IsValidVPairPower) { marker = Utility.CreateMarker(channelSetting.Pair.ChannelName, dataMgr.AllChannelSamples[actualAzimuth][channelSetting].mVPairSamples); verticalMarkers.Add(marker); } if (!channelPower.IsValidHPower) { marker = Utility.CreateMarker(channelSetting.ChannelName, dataMgr.AllChannelSamples[actualAzimuth][channelSetting].mHSamples); hoizontalMarkers.Add(marker); } if (!channelPower.IsValidHPairPower) { marker = Utility.CreateMarker(channelSetting.Pair.ChannelName, dataMgr.AllChannelSamples[actualAzimuth][channelSetting].mHPairSamples); hoizontalMarkers.Add(marker); } } verticalMarkers.Sort(Utility.SortMarkerByFrequency); hoizontalMarkers.Sort(Utility.SortMarkerByFrequency); drawPicture(emi, verticalSamples, channelSettings, limitSetting, bitMapInfo.BmpFile1, bitMapInfo.Title1, minAbsRssi, maxAbsRssi, verticalMarkers); drawPicture(emi, horizontalSamples, channelSettings, limitSetting, bitMapInfo.BmpFile2, bitMapInfo.Title2, minAbsRssi, maxAbsRssi, hoizontalMarkers); return bitMapInfo; }
public static List<BitMapInfo> create(EMIFileData emi, double azimuth, string title, WatsEmiDataManager dataMgr, List<ChannelSetting> channelSettings, LimitSetting limitSetting, int minAbsRssi, int maxAbsRssi, double span, List<FrequencyRange> ranges, ref string verticalCircleTitle, ref string horizontalCircleTitle, ref string verticalCircleBmpFile, ref string horizontalCircleBmpFile) { List<BitMapInfo> bitMapInfos = new List<BitMapInfo>(); List<WatsEmiSample> verticalSamples; List<WatsEmiSample> horizontalSamples; verticalCircleBmpFile = Utility.GetAppPath() + "\\Temp\\" + azimuth.ToString() + "-circle-vertical.emf"; verticalCircleTitle = "V-" + azimuth.ToString() + "\x00B0[" + ranges[0].FromFreq + "~" + ranges[ranges.Count - 1].EndFreq + " MHz]"; horizontalCircleBmpFile = Utility.GetAppPath() + "\\Temp\\" + azimuth.ToString() + "circle-horizontal.emf"; horizontalCircleTitle = "H-" + azimuth.ToString() + "\x00B0[" + ranges[0].FromFreq + "~" + ranges[ranges.Count - 1].EndFreq + " MHz]"; //draw circle picture drawCirclePicture(true, verticalCircleBmpFile, azimuth, 30, emi.SA_RBW, dataMgr.AllChannelSamples[azimuth], limitSetting); drawCirclePicture(false, horizontalCircleBmpFile, azimuth, 30, emi.SA_RBW, dataMgr.AllChannelSamples[azimuth], limitSetting); //calculate all Markers List<Marker> allVerticalMarkers = new List<Marker>(); List<Marker> allHoizontalMarkers = new List<Marker>(); Marker marker; ChannelPower channelPower; foreach (ChannelSetting channelSetting in channelSettings) { channelPower = new ChannelPower(emi.SA_RBW, channelSetting, limitSetting, dataMgr.AllChannelSamples[azimuth][channelSetting]); if (!channelPower.IsValidVPower) { marker = Utility.CreateMarker(channelSetting.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mVSamples); allVerticalMarkers.Add(marker); } if (!channelPower.IsValidVPairPower) { marker = Utility.CreateMarker(channelSetting.Pair.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mVPairSamples); allVerticalMarkers.Add(marker); } if (!channelPower.IsValidHPower) { marker = Utility.CreateMarker(channelSetting.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mHSamples); allHoizontalMarkers.Add(marker); } if (!channelPower.IsValidHPairPower) { marker = Utility.CreateMarker(channelSetting.Pair.ChannelName, dataMgr.AllChannelSamples[azimuth][channelSetting].mHPairSamples); allHoizontalMarkers.Add(marker); } } allVerticalMarkers.Sort(Utility.SortMarkerByFrequency); allHoizontalMarkers.Sort(Utility.SortMarkerByFrequency); //draw picture per range BitMapInfo bitMapInfo; List<Marker> verticalMarkers; List<Marker> horizontalMarkers; foreach (FrequencyRange range in ranges) { bitMapInfo = new BitMapInfo(); verticalSamples = new List<WatsEmiSample>(); horizontalSamples = new List<WatsEmiSample>(); verticalMarkers = new List<Marker>(); horizontalMarkers = new List<Marker>(); foreach (Marker rangeMarker in allVerticalMarkers) { if (rangeMarker.frequency >= range.FromFreq && rangeMarker.frequency <= range.EndFreq) verticalMarkers.Add(rangeMarker); } foreach (Marker rangeMarker in allHoizontalMarkers) { if (rangeMarker.frequency >= range.FromFreq && rangeMarker.frequency <= range.EndFreq) horizontalMarkers.Add(rangeMarker); } int markerRows = Math.Max(verticalMarkers.Count, horizontalMarkers.Count); bitMapInfo.Band = Utility.ConvertDoubleString(range.FromFreq) + "-" + Utility.ConvertDoubleString(range.EndFreq); bitMapInfo.Title1 = "V-" + Utility.ConvertDoubleString(azimuth) + "\x00B0" + "[" + Utility.ConvertDoubleString(range.FromFreq) + "~" + range.EndFreq + " MHz]"; bitMapInfo.Title2 = "H-" + Utility.ConvertDoubleString(azimuth) + "\x00B0" + "[" + Utility.ConvertDoubleString(range.FromFreq) + "~" + range.EndFreq + " MHz]"; bitMapInfo.BmpFile1 = Utility.GetAppPath() + "\\Temp\\Angle" + azimuth.ToString() + "-vertical-" + ((int)range.FromFreq).ToString() + ".emf"; bitMapInfo.BmpFile2 = Utility.GetAppPath() + "\\Temp\\Angle" + azimuth.ToString() + "-horizontal-" + ((int)range.FromFreq).ToString() + ".emf"; for (int i = 0; i < dataMgr.AllSamples[azimuth][0].Count; i++) { if (dataMgr.AllSamples[azimuth][0][i].mFreq >= range.FromFreq && dataMgr.AllSamples[azimuth][0][i].mFreq <= range.EndFreq) verticalSamples.Add(dataMgr.AllSamples[azimuth][0][i]); } for (int i = 0; i < dataMgr.AllSamples[azimuth][1].Count; i++) { if (dataMgr.AllSamples[azimuth][1][i].mFreq >= range.FromFreq && dataMgr.AllSamples[azimuth][1][i].mFreq <= range.EndFreq) horizontalSamples.Add(dataMgr.AllSamples[azimuth][1][i]); } drawPicture(emi, verticalSamples, span, range, limitSetting, bitMapInfo.BmpFile1, title + " V", minAbsRssi, maxAbsRssi, verticalMarkers, markerRows); drawPicture(emi, horizontalSamples, span, range, limitSetting, bitMapInfo.BmpFile2, title + " H", minAbsRssi, maxAbsRssi, horizontalMarkers, markerRows); bitMapInfos.Add(bitMapInfo); } return bitMapInfos; }