protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (referencesProcess == null || measurementProcess == null) { return; } referencesProcess.Register( measurementProcess.MeasurementController, measurementProcess.MeasurementJob, enableTestChannel); foreach (var item in referencesProcess.TestItems) { AddTestInfoRow(item.ItemID, item.ItemName, item.LastValueString); } comboBox1.Items.AddRange(referencesProcess.Wavelengths.Select(q => q.ToString("F3")).ToArray()); var source = new List <KeyValuePair <int, string> >(); foreach (var channel in referencesProcess.Channels) { source.Add(new KeyValuePair <int, string>(channel, MeasurementController.GetPortName(channel))); } comboBox2.BindingDataSource(source); if (comboBox1.Items.Count > 0) { comboBox1.SelectedIndex = 0; } if (comboBox2.Items.Count > 0) { comboBox2.SelectedIndex = 0; } comboBox1.Enabled = false; comboBox2.Enabled = false; referencesProcess.RegisterCallback( this, TestCallback, SetTestInfo, ReadingCallbck); referencesProcess.ProcessStart += ReferencesProcess_ProcessStart; referencesProcess.ProcessStop += ReferencesProcess_ProcessStop; btStart.Enabled = true; }
/// <summary> /// 注册测试信息 /// </summary> /// <param name="controller"></param> /// <param name="job"></param> /// <param name="testChannel"></param> public void Register(MeasurementController controller, MeasurementJobInformation job, bool[] testChannel) { MeasurementController = controller; MeasurementJob = job; //点测测试组 var ILgroups = job.SpecData.TestSystemGroups.Where(q => q.TestGroupTestType == "Point" || q.TestGroupTestType == "PointPDL").Select(q => q.TestGroupID).ToList(); //回损测试组 var RLgroups = job.SpecData.TestSystemGroups.Where(q => q.TestGroupTestType == "RL").Select(q => q.TestGroupID).ToList(); //点测测试项 var ilTestItems = job.SpecData.WorkInfoSpecItems.Where(q => ILgroups.Any(g => g == q.TestGroupID) || RLgroups.Any(g => g == q.TestGroupID)).ToList(); //插损 //回损测试项 var rl1TestItems = job.SpecData.WorkInfoSpecItems.Where(q => RLgroups.Any(g => g == q.TestGroupID)).ToList(); //按端口归组 var portILGroup = ilTestItems.GroupBy(q => q.PortSetting % TestPortSetting.DataDivide).ToList(); TestItems.Clear(); TestItems.Add(new ReferenceTestItem() { ItemID = Guid.NewGuid(), TestTypeID = TestTypes[0], ItemName = "连接仪器", Wavelenght = 0D, Channel = 0, ReferenceType = -1, ReferenceData = default(List <TPointTestItem>), LastValueString = "", ValueString = "", ReferenceResult = -1, OrderID = TestItems.Count + 1 }); Wavelengths.Clear(); Channels.Clear(); for (int i = 0; i < Framework.MeasurementSystemSetting.SystemData.Setting.Profile.SimultaneousNumber; i++) { if (testChannel.Length > i && !testChannel[i]) { continue; } foreach (var port in portILGroup) { if (port.Key == 0) { continue; } var list = port.ToList(); if (list.Count < 1) { continue; } var channel = MeasurementController.GetSimultaneityPort(i, port.Key); string name = MeasurementController.GetPortName(channel); var wlGroup = list.Where(q => q.TestSetting.IsDouble()).GroupBy(q => q.TestSetting.CastTo <double>()); foreach (var wlItem in wlGroup) { var wl = wlItem.Key; var refData = ""; var oldRef = job.ReferenceData.GetReference(1, channel, wl); if (oldRef != null) { refData = oldRef.Power.ToString("F3"); } TestItems.Add(new ReferenceTestItem() { ItemID = Guid.NewGuid(), TestTypeID = TestTypes[1], ItemName = $"获取 IL (功率计 {name}, 波长 {wl}) 归零值", Wavelenght = wl, Channel = channel, ReferenceType = 1, ReferenceData = new List <TPointTestItem>(), LastValueString = refData, ValueString = "", ReferenceResult = -1, OrderID = TestItems.Count + 1 }); if (!Wavelengths.Contains(wl)) { Wavelengths.Add(wl); } if (!Channels.Contains(channel)) { Channels.Add(channel); } } } } //按端口归组 var portRLGroup = rl1TestItems.GroupBy(q => q.PortSetting % TestPortSetting.DataDivide).ToList(); for (int i = 0; i < Framework.MeasurementSystemSetting.SystemData.Setting.Profile.SimultaneousNumber; i++) { if (testChannel.Length > i && !testChannel[i]) { continue; } foreach (var port in portRLGroup) { if (port.Key == 0) { continue; } var list = port.ToList(); if (list.Count < 1) { continue; } var channel = MeasurementController.GetSimultaneityPort(i, port.Key); string name = MeasurementController.GetPortName(channel); var wlGroup = list.Where(q => q.TestSetting.IsDouble()).GroupBy(q => q.TestSetting.CastTo <double>()); foreach (var wlItem in wlGroup) { var wl = wlItem.Key; var refData = ""; var oldRef = job.ReferenceData.GetReference(2, channel, wl); if (oldRef != null) { refData = oldRef.Power.ToString("F3"); } TestItems.Add(new ReferenceTestItem() { ItemID = Guid.NewGuid(), TestTypeID = TestTypes[2], ItemName = $"获取 ({name},波长 {wl}) 的系统回损", Wavelenght = wl, Channel = channel, ReferenceType = 2, ReferenceData = new List <TPointTestItem>(), LastValueString = refData, ValueString = "", ReferenceResult = -1, OrderID = TestItems.Count + 1 }); if (!Wavelengths.Contains(wl)) { Wavelengths.Add(wl); } if (!Channels.Contains(channel)) { Channels.Add(channel); } } } } TestItems.Add(new ReferenceTestItem() { ItemID = Guid.NewGuid(), TestTypeID = TestTypes[TestTypes.Length - 1], ItemName = "保存数据", Wavelenght = 0D, Channel = 0, ReferenceType = -1, ReferenceData = new List <TPointTestItem>(), LastValueString = "", ValueString = "", ReferenceResult = -1, OrderID = TestItems.Count + 1 }); }
public void AddTestInfoRow(WorkInfoSpecItem specItem) { var row = testItem.NewRow(); row["TestItemID"] = specItem.SpecItemID; row["TestItemName"] = specItem.ItemName; foreach (var resultItem in BaseSettingsManager.Get <ResultSettings>().NeedSettingResult) { if (!specItem.ComputeSetting.ContainsKey(resultItem.ResultID)) { row[string.Format("TestItemCompute{0}", resultItem.ResultID)] = "N/A"; } else { var computeItem = specItem.ComputeSetting[resultItem.ResultID]; row[string.Format("TestItemCompute{0}", resultItem.ResultID)] = string.IsNullOrEmpty(computeItem.ComputeValue) ? "未设置" : OperatorManager.GetOperator(computeItem.ComputeSign).GetDisplayString(computeItem.ComputeValue); } } row["TestItemPortSetting"] = MeasurementController.GetPortName(specItem.PortSetting); if (string.IsNullOrEmpty("specItem.TestTemp") || !specItem.TestTemp.IsNumeric()) { row["TestItemTemp"] = ""; } else { row["TestItemTemp"] = $"{specItem.TestTemp}℃"; } row["TestItemValue"] = ""; row["TestItemMaxValue"] = ""; row["TestItemMinValue"] = ""; row["TestItemLastValue"] = "-999"; row["TestItemStatus"] = -10; testItem.Rows.Add(row); var resultInfo = new ResultInfo() { TestInfoDataRow = row }; testReslut[specItem.SpecItemID] = resultInfo; var dgvResult = default(DataGridView); if (!dgvResults.TryGetValue(specItem.TestTemp, out dgvResult)) { return; } if (!specItem.TestSetting.IsDouble()) { return; } var wl = specItem.TestSetting.CastTo(1550D); var names = specItem.ItemName.Split(":"); var name = names.Length > 1 ? names[1] : names[0]; names = name.Split("@"); name = names[0]; var setting = TestPortSetting.Get(specItem.PortSetting); if (setting.ChannelID < 1 && name == "UL") { name = "IL"; } if (!dgvResult.Columns.Contains(name)) { dgvResult.Columns.Add(name, name); dgvResult.Columns[name].SortMode = DataGridViewColumnSortMode.NotSortable; } foreach (DataGridViewRow dataRow in dgvResult.Rows) { if (dataRow.Cells["Wavelength"].Value.ToString() == wl.ToString("F3") && dataRow.Cells["Port"].Value.ToString() == specItem.PortSetting.ToString()) { resultInfo.ResultViewCell = dataRow.Cells[name]; } } }
public void SetSetting(string[] temps, List <double> wls, List <int> chs) { for (int i = 0; i < temps.Length; i++) { var temp = temps[i]; if (string.IsNullOrEmpty(temp)) { continue; } var text = $"{temp}℃"; var tagPage = new TabPage() { Name = Guid.NewGuid().ToString(), Text = text }; var dgvResult = new DataGridViewEx(); dgvResults[temp] = dgvResult; dgvResult.AllowUserToAddRows = false; dgvResult.AllowUserToDeleteRows = false; dgvResult.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; dgvResult.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; var dataGridViewCellStyle = new DataGridViewCellStyle(); dataGridViewCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle.BackColor = SystemColors.Window; dataGridViewCellStyle.Font = new Font("微软雅黑", 10.5F, FontStyle.Bold, GraphicsUnit.Point, ((byte)(134))); dataGridViewCellStyle.ForeColor = SystemColors.ControlText; dataGridViewCellStyle.SelectionBackColor = SystemColors.Highlight; dataGridViewCellStyle.SelectionForeColor = SystemColors.HighlightText; dataGridViewCellStyle.WrapMode = DataGridViewTriState.False; dgvResult.DefaultCellStyle = dataGridViewCellStyle; dgvResult.Location = new Point(322, 14); dgvResult.Name = Guid.NewGuid().ToString(); dgvResult.ReadOnly = true; dgvResult.RowHeadersWidth = 21; dgvResult.RowTemplate.Height = 27; dgvResult.SelectionMode = DataGridViewSelectionMode.CellSelect; dgvResult.Size = new Size(586, 161); dgvResult.Dock = DockStyle.Fill; tagPage.Controls.Add(dgvResult); dgvResult.Columns.Add("Wavelength", "波长"); dgvResult.Columns.Add("Port", "Port"); dgvResult.Columns.Add("PortName", "端口"); dgvResult.Columns[1].Visible = false; dgvResult.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; dgvResult.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable; dgvResult.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable; var multPort = chs.Any(q => TestPortSetting.Get(q).DataID > 0); foreach (var wl in wls) { foreach (var ch in chs) { var setting = TestPortSetting.Get(ch); var port = setting.ChannelID; if (port < 1) { continue; } var name = $"Ch{port}"; if (multPort) { name = $"{setting.DataID + 1}-{setting.ChannelID}"; } dgvResult.Rows.Add(wl.ToString("F3"), ch, name); } if (multPort) { dgvResult.Rows.Add(wl.ToString("F3"), 0, "1均一性"); dgvResult.Rows.Add(wl.ToString("F3"), 1000000, "2均一性"); } else { dgvResult.Rows.Add(wl.ToString("F3"), 0, "均一性"); } } dgvResult.MergeColumnNames.Add("Wavelength"); tabControl3.TabPages.Add(tagPage); } cbWavelength.Items.AddRange(wls.Select(q => q.ToString("F3")).ToArray()); var source = new List <KeyValuePair <int, string> >(); foreach (var channel in chs) { source.Add(new KeyValuePair <int, string>(channel, MeasurementController.GetPortName(channel))); } cbChannel.BindingDataSource(source); if (cbWavelength.Items.Count > 0) { cbWavelength.SelectedIndex = 0; } if (cbChannel.Items.Count > 0) { cbChannel.SelectedIndex = 0; } cbUnit.Text = "dBm"; }