Exemple #1
0
        /// <summary>
        /// 弹框
        /// </summary>
        /// <param name="type"></param>
        /// <param name="msg"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        private int ShowMessage(int type, string msg, string title = "归零测试")
        {
            if (currentChannel == int.MinValue)
            {
                currentChannel = Channels.FirstOrDefault();
            }
            if (currentWavelength == double.MinValue)
            {
                currentWavelength = Wavelengths.FirstOrDefault();
            }

            testInfoCallback?.Invoke(currentWavelength, currentChannel);

            FormMessageBox.SetShow(refForm, title, msg, type);

            while (FormMessageBox.MessageBoxResult == 0)
            {
                if (IsStop)
                {
                    FormMessageBox.SetClose(2);
                    break;
                }
                var p = MeasurementController.GetMeterAllChannelPower(1, 1);
                readingCallback?.Invoke(string.Join(", ", p.Values.Select(q => q == double.MinValue ? "-" : q.ToString("F2")).ToArray()));
                System.Threading.Thread.Sleep(50);
            }
            readingCallback?.Invoke("-");
            if (FormMessageBox.MessageBoxResult == 2)
            {
                IsStop = true;
            }
            return(FormMessageBox.MessageBoxResult);
        }
Exemple #2
0
        private void GetPower()
        {
            var pws = MeasurementController.GetMeterAllChannelPower(0, 0);
            var str = "";

            if (pws.Count < 1)
            {
                str = "-";
            }
            foreach (var pw in pws)
            {
                var ch = pw.Key;
                var p  = pw.Value;
                if (p == double.MinValue)
                {
                    str = "-";
                    break;
                }
                if (currentUnit == "dB")
                {
                    var rf = MeasurementJob.ReferenceData.GetReference(1, currentChannel, currentWavelength);
                    if (rf == null)
                    {
                        currentUnit = "dBm";
                    }
                    else
                    {
                        p = Math.Abs(rf.Power - p);
                    }
                }
                str += $"{p:F2}{currentUnit}\r\n";
            }

            readingCallback?.Invoke(str, "-", "-");
        }
Exemple #3
0
        private Dictionary <int, List <double> > GetAllChannelMeterPowers(int id, int sww, double time)
        {
            var result = new Dictionary <int, List <double> >();
            var sw     = System.Diagnostics.Stopwatch.StartNew();

            while (!IsStop)
            {
                var powers = MeasurementController.GetMeterAllChannelPower(id, sww);
                if (powers.Count < 1)
                {
                    continue;
                }
                var max = new StringBuilder();
                var min = new StringBuilder();
                foreach (var pw in powers)
                {
                    if (!result.ContainsKey(pw.Key))
                    {
                        result[pw.Key] = new List <double>();
                    }
                    if (pw.Value != double.MinValue)
                    {
                        result[pw.Key].Add(pw.Value);
                    }

                    var maxP = result[pw.Key].Max();
                    var minP = result[pw.Key].Min();
                    if (maxP == double.MinValue || minP == double.MinValue)
                    {
                        max.Append($"{pw.Key}: -\r\n");
                        min.Append("-\r\n");
                    }
                    else
                    {
                        max.Append($"{pw.Key}: {maxP:F3}\r\n");
                        min.Append($"{minP:F3}\r\n");
                    }
                }
                readingCallback?.Invoke(
                    "-",
                    max.ToString(),
                    min.ToString()
                    );

                if (sw.ElapsedMilliseconds > time * 1000D)
                {
                    sw.Stop();
                    break;
                }
            }
            return(result);
        }
Exemple #4
0
        private void GetPointTestData(IMeasurementTask testTask, string temp, TestSystemGroup systemGroup, WorkInfoSpecItem item, bool testAgain)
        {
            if (!item.TestSetting.IsDouble())
            {
                return;
            }
            var wl = item.TestSetting.CastTo(1550D);

            if (item.PortSetting == 0)
            {
                return;
            }

            var type = "Point";

            if (!testAgain && testTask.ContainsTestData(type, temp, item.PortSetting, wl))
            {
                return;
            }

            currentChannel    = MeasurementController.GetSimultaneityPort(testTask.TestOrderID, item.PortSetting);
            currentWavelength = wl;
            testInfoCallback?.Invoke(currentWavelength, currentChannel, currentUnit);

            var pws = default(Dictionary <int, double>);

            if (!MeasurementController.RunPointTest(
                    false,
                    currentWavelength,
                    () =>
            {
                return(!IsStop);
            },
                    () =>
            {
                var setting = TestPortSetting.Get(currentChannel);
                pws = MeasurementController.GetMeterAllChannelPower(setting.DeviceID, setting.SwitchID);
            }))
            {
                throw new Exception(MeasurementController.ErrorString);
            }

            if (pws == null || pws.Count < 1)
            {
                throw new Exception($"读取功率失败,{MeasurementController.ErrorString}");
            }

            var items = MeasurementJob.SpecData.GetTestGroupWorkInfoSpecItems(systemGroup.TestGroupID);

            foreach (var testItem in items)
            {
                var pw = 0D;
                var c  = TestPortSetting.Get(testItem.PortSetting).ChannelID;
                if (!pws.TryGetValue(c, out pw))
                {
                    continue;
                }
                if (pw == double.MinValue)
                {
                    throw new Exception($"读取功率失败,{MeasurementController.ErrorString}");
                }
                AddPointTestData(testTask, type, temp, testItem.PortSetting, currentWavelength, pw);
            }
        }
Exemple #5
0
        private void GetManualPointPDLPointPDLTestData(IMeasurementTask testTask, string temp, TestSystemGroup systemGroup, WorkInfoSpecItem item, bool testAgain)
        {
            if (!item.TestSetting.IsDouble())
            {
                return;
            }
            var wl = item.TestSetting.CastTo(1550D);

            if (item.PortSetting == 0)
            {
                return;
            }

            var type = "PointPDL";

            if (!testAgain && testTask.ContainsTestData(type, temp, item.PortSetting, wl))
            {
                return;
            }

            currentChannel    = MeasurementController.GetSimultaneityPort(testTask.TestOrderID, item.PortSetting);
            currentWavelength = wl;
            testInfoCallback?.Invoke(currentWavelength, currentChannel, currentUnit);

            var pws = new Dictionary <int, List <double> >();

            if (!MeasurementController.ChangeWaveLength(currentWavelength))
            {
                throw new Exception($"切换波长失败,{MeasurementController.ErrorString}");
            }


            FormMessageBox.SetShow(null, "正在测试", "请摇动手摇偏振控制器,完成后点击[继续测试]进行测试", 0);

            var setting = TestPortSetting.Get(currentChannel);

            while (FormMessageBox.MessageBoxResult == 0)
            {
                if (IsStop)
                {
                    FormMessageBox.SetClose(2);
                    break;
                }
                var powers = MeasurementController.GetMeterAllChannelPower(setting.DeviceID, setting.SwitchID);
                if (powers.Count < 1)
                {
                    continue;
                }
                var max = new StringBuilder();
                var min = new StringBuilder();
                foreach (var pw in powers)
                {
                    if (!pws.ContainsKey(pw.Key))
                    {
                        pws[pw.Key] = new List <double>();
                    }
                    if (pw.Value != double.MinValue)
                    {
                        pws[pw.Key].Add(pw.Value);
                    }

                    var maxP = pws[pw.Key].Max();
                    var minP = pws[pw.Key].Min();
                    if (maxP == double.MinValue || minP == double.MinValue)
                    {
                        max.Append($"{pw.Key}: -\r\n");
                        min.Append("-\r\n");
                    }
                    else
                    {
                        max.Append($"{pw.Key}: {maxP:F3}\r\n");
                        min.Append($"{minP:F3}\r\n");
                    }
                }
                readingCallback?.Invoke(
                    "-",
                    max.ToString(),
                    min.ToString()
                    );
            }
            readingCallback?.Invoke("-", "-", "-");
            if (FormMessageBox.MessageBoxResult != 1)
            {
                IsStop = true;
                return;
            }

            if (pws == null || pws.Count < 1)
            {
                throw new Exception($"读取功率失败,{MeasurementController.ErrorString}");
            }
            var items = MeasurementJob.SpecData.GetTestGroupWorkInfoSpecItems(systemGroup.TestGroupID);

            foreach (var testItem in items)
            {
                var pw = default(List <double>);
                var c  = TestPortSetting.Get(testItem.PortSetting).ChannelID;
                if (!pws.TryGetValue(c, out pw))
                {
                    continue;
                }
                if (pw.Count < 2)
                {
                    throw new Exception($"读取功率失败,{MeasurementController.ErrorString}");
                }
                AddPointPDLTestData(testTask, type, temp, testItem.PortSetting, currentWavelength, pw);
            }
        }