Пример #1
0
        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;
        }
Пример #3
0
        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;
        }