/// <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); }
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, "-", "-"); }
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); }
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); } }
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); } }