private void CollectData() { DisplayStatusMessage("请求MIL状态和故障码数量"); DisplayRequest("0101"); OBDParameterValue value5 = m_obdInterface.GetValue("SAE.MIL"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); if (!value5.ErrorDetected) { if (value5.BoolValue) { DisplayDetailMessage("MIL状态: On"); m_bReportForm.ReportPage1.MilStatus = true; } else { DisplayDetailMessage("MIL状态: Off"); m_bReportForm.ReportPage1.MilStatus = false; } } OBDParameterValue value3 = m_obdInterface.GetValue("SAE.DTC_COUNT"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); if (!value3.ErrorDetected) { m_bReportForm.ReportPage1.TotalCodes = (int)value3.DoubleValue; DisplayDetailMessage("存储的故障码数量: " + value3.DoubleValue.ToString()); } DisplayStatusMessage("请求存储的故障码列表"); OBDParameterValue value4 = m_obdInterface.GetValue("SAE.STORED_DTCS"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); if (!value4.ErrorDetected) { m_bReportForm.ReportPage1.DTCList.Clear(); foreach (string strVal in value4.ListStringValue) { m_bReportForm.ReportPage1.DTCList.Add(strVal); DisplayDetailMessage("存储的故障码: " + strVal); DTC dtc2 = m_obdInterface.GetDTC(strVal); if (dtc2 != null) { m_bReportForm.ReportPage1.DTCDefinitionList.Add(dtc2.Description); } } } DisplayStatusMessage("请求未决故障码列表"); OBDParameterValue value2 = m_obdInterface.GetValue("SAE.PENDING_DTCS"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); if (!value2.ErrorDetected) { m_bReportForm.ReportPage1.PendingList.Clear(); foreach (string strVal in value2.ListStringValue) { m_bReportForm.ReportPage1.PendingList.Add(strVal); DisplayDetailMessage("未决故障码: " + strVal); DTC dtc = m_obdInterface.GetDTC(strVal); if (dtc != null) { m_bReportForm.ReportPage1.PendingDefinitionList.Add(dtc.Description); } } } DisplayStatusMessage("检查冻结帧数据"); OBDParameter parameter = m_obdInterface.LookupParameter("SAE.FF_DTC"); if (parameter != null) { OBDParameter freezeFrameCopy = parameter.GetFreezeFrameCopy(0); value2 = m_obdInterface.GetValue(freezeFrameCopy); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); if (!value2.ErrorDetected) { m_bReportForm.ReportPage1.FreezeFrameDTC = value2.StringValue; DisplayDetailMessage("找到冻结帧数据 " + value2.StringValue); CollectFreezeFrameData(); } else { m_bReportForm.ReportPage1.FreezeFrameDTC = "P0000"; DisplayDetailMessage("未找到冻结帧数据"); } CollectMonitoringTestData(); this.BeginInvoke((EventHandler) delegate { progressBar.Value = progressBar.Maximum; btnGenerate.Enabled = true; // ReportForm窗体类里需要调用SaveFileDialog.ShowDialog() // 该方法需要调用COM对象(系统中的打开文件通用对话框),故需要调用者线程具有STA模式(单线程单元模式) // 而Task无法显式设置线程模式为STA,故只能在主UI线程里调用ReportForm窗体类 m_bReportForm.ShowDialog(); }); } }
private void ReadFreezeFrameData() { while (true) { this.BeginInvoke(new Action(() => { freezeFrame.Reset(); })); OBDParameter parameter = m_obdInterface.LookupParameter("SAE.FF_DTC"); if (parameter == null) { MessageBox.Show( "加载SAE.FF_DTC参数时发生错误", "出错", MessageBoxButtons.OK, MessageBoxIcon.Hand ); break; } OBDParameterValue value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (value.ErrorDetected) { m_obdInterface.GetLogger().TraceError("Error while requesting SAE.FF_DTC"); MessageBox.Show( "请求SAE.FF_DTC命令时发生错误", "出错", MessageBoxButtons.OK, MessageBoxIcon.Hand ); break; } if (string.Compare(value.StringValue, "P0000") == 0) { MessageBox.Show( string.Format("在 #{0} 帧中,没有发现冻结帧信息", m_FrameNumber), "信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk ); break; } this.BeginInvoke(new Action(() => { progressBar.Value = 0; freezeFrame.DTC = value.StringValue; })); parameter = m_obdInterface.LookupParameter("SAE.FUEL1_STATUS"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.FuelSystem1Status = value.StringValue; })); } parameter = m_obdInterface.LookupParameter("SAE.FUEL2_STATUS"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.FuelSystem2Status = value.StringValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.LOAD_CALC"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.CalculatedLoad = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.ECT"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.EngineCoolantTemp = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.STFT1"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.STFT1 = value.DoubleValue; })); } parameter = m_obdInterface.LookupParameter("SAE.STFT3"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.STFT3 = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.LTFT1"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.LTFT1 = value.DoubleValue; })); } parameter = m_obdInterface.LookupParameter("SAE.LTFT3"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.LTFT3 = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.STFT2"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.STFT2 = value.DoubleValue; })); } parameter = m_obdInterface.LookupParameter("SAE.STFT4"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.STFT4 = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.LTFT2"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.LTFT2 = value.DoubleValue; })); } parameter = m_obdInterface.LookupParameter("SAE.LTFT4"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.LTFT4 = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.MAP"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.IntakePressure = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.RPM"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.EngineRPM = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.VSS"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.VehicleSpeed = value.DoubleValue; })); } this.BeginInvoke(new Action(() => { progressBar.Increment(progressBar.Step); })); if (!m_KeepReading) { break; } parameter = m_obdInterface.LookupParameter("SAE.SPARKADV"); if (parameter == null) { break; } value = m_obdInterface.GetValue(parameter.GetFreezeFrameCopy(m_FrameNumber)); if (!value.ErrorDetected) { this.BeginInvoke(new Action(() => { freezeFrame.SparkAdvance = value.DoubleValue; })); } break; } this.BeginInvoke(new Action(() => { progressBar.Value = progressBar.Maximum; btnRefresh.Enabled = true; btnCancel.Enabled = false; })); }
private void CollectFreezeFrameData() { OBDParameter param = m_obdInterface.LookupParameter("SAE.FUEL1_STATUS"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowFuelSystemStatus = false; if (param != null) { param = param.GetFreezeFrameCopy(0); OBDParameterValue value17 = m_obdInterface.GetValue(param); if (!value17.ErrorDetected) { m_bReportForm.ReportPage1.ShowFuelSystemStatus = true; DisplayDetailMessage("燃油系统 1: " + value17.StringValue); m_bReportForm.ReportPage1.FuelSystem1Status = value17.StringValue; } } OBDParameter freezeFrameCopy = m_obdInterface.LookupParameter("SAE.FUEL2_STATUS"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowFuelSystemStatus = false; if (freezeFrameCopy != null) { freezeFrameCopy = freezeFrameCopy.GetFreezeFrameCopy(0); OBDParameterValue value3 = m_obdInterface.GetValue(freezeFrameCopy); if (!value3.ErrorDetected) { m_bReportForm.ReportPage1.ShowFuelSystemStatus = true; DisplayDetailMessage("燃油系统 2: " + value3.StringValue); m_bReportForm.ReportPage1.FuelSystem2Status = value3.StringValue; } } OBDParameter parameter16 = m_obdInterface.LookupParameter("SAE.LOAD_CALC"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowCalculatedLoad = false; if (parameter16 != null) { OBDParameter parameter17 = parameter16.GetFreezeFrameCopy(0); OBDParameterValue value2 = m_obdInterface.GetValue(parameter17); if (!value2.ErrorDetected) { m_bReportForm.ReportPage1.ShowCalculatedLoad = true; DisplayDetailMessage("计算负荷: " + value2.DoubleValue.ToString()); m_bReportForm.ReportPage1.CalculatedLoad = value2.DoubleValue; } } OBDParameter parameter14 = m_obdInterface.LookupParameter("SAE.ECT"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowEngineCoolantTemp = false; if (parameter14 != null) { parameter14 = parameter14.GetFreezeFrameCopy(0); OBDParameterValue value16 = m_obdInterface.GetValue(parameter14); if (!value16.ErrorDetected) { m_bReportForm.ReportPage1.ShowEngineCoolantTemp = true; DisplayDetailMessage("发动机冷却液温度: " + value16.DoubleValue.ToString()); m_bReportForm.ReportPage1.EngineCoolantTemp = value16.DoubleValue; } } OBDParameter parameter13 = m_obdInterface.LookupParameter("SAE.STFT1"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowSTFT13 = false; if (parameter13 != null) { parameter13 = parameter13.GetFreezeFrameCopy(0); OBDParameterValue value15 = m_obdInterface.GetValue(parameter13); if (!value15.ErrorDetected) { m_bReportForm.ReportPage1.ShowSTFT13 = true; DisplayDetailMessage("短时燃油修正 - 组 1: " + value15.DoubleValue.ToString()); m_bReportForm.ReportPage1.STFT1 = value15.DoubleValue; } } OBDParameter parameter12 = m_obdInterface.LookupParameter("SAE.STFT3"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowSTFT13 = false; if (parameter12 != null) { parameter12 = parameter12.GetFreezeFrameCopy(0); OBDParameterValue value14 = m_obdInterface.GetValue(parameter12); if (!value14.ErrorDetected) { m_bReportForm.ReportPage1.ShowSTFT13 = true; DisplayDetailMessage("短时燃油修正 - 组 3: " + value14.DoubleValue.ToString()); m_bReportForm.ReportPage1.STFT3 = value14.DoubleValue; } } OBDParameter parameter11 = m_obdInterface.LookupParameter("SAE.LTFT1"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowLTFT13 = false; if (parameter11 != null) { parameter11 = parameter11.GetFreezeFrameCopy(0); OBDParameterValue value13 = m_obdInterface.GetValue(parameter11); if (!value13.ErrorDetected) { m_bReportForm.ReportPage1.ShowLTFT13 = true; DisplayDetailMessage("长时燃油修正 - 组 1: " + value13.DoubleValue.ToString()); m_bReportForm.ReportPage1.LTFT1 = value13.DoubleValue; } } OBDParameter parameter10 = m_obdInterface.LookupParameter("SAE.LTFT3"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowLTFT13 = false; if (parameter10 != null) { parameter10 = parameter10.GetFreezeFrameCopy(0); OBDParameterValue value12 = m_obdInterface.GetValue(parameter10); if (!value12.ErrorDetected) { m_bReportForm.ReportPage1.ShowLTFT13 = true; DisplayDetailMessage("长时燃油修正 - 组 3: " + value12.DoubleValue.ToString()); m_bReportForm.ReportPage1.LTFT3 = value12.DoubleValue; } } OBDParameter parameter9 = m_obdInterface.LookupParameter("SAE.STFT2"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowSTFT24 = false; if (parameter9 != null) { parameter9 = parameter9.GetFreezeFrameCopy(0); OBDParameterValue value11 = m_obdInterface.GetValue(parameter9); if (!value11.ErrorDetected) { m_bReportForm.ReportPage1.ShowSTFT24 = true; DisplayDetailMessage("短时燃油修正 - 组 2: " + value11.DoubleValue.ToString()); m_bReportForm.ReportPage1.STFT2 = value11.DoubleValue; } } OBDParameter parameter8 = m_obdInterface.LookupParameter("SAE.STFT4"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowSTFT24 = false; if (parameter8 != null) { parameter8 = parameter8.GetFreezeFrameCopy(0); OBDParameterValue value10 = m_obdInterface.GetValue(parameter8); if (!value10.ErrorDetected) { m_bReportForm.ReportPage1.ShowSTFT24 = true; DisplayDetailMessage("短时燃油修正 - 组 4: " + value10.DoubleValue.ToString()); m_bReportForm.ReportPage1.STFT4 = value10.DoubleValue; } } OBDParameter parameter7 = m_obdInterface.LookupParameter("SAE.LTFT2"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowLTFT24 = false; if (parameter7 != null) { parameter7 = parameter7.GetFreezeFrameCopy(0); OBDParameterValue value9 = m_obdInterface.GetValue(parameter7); if (!value9.ErrorDetected) { m_bReportForm.ReportPage1.ShowLTFT24 = true; DisplayDetailMessage("长时燃油修正 - 组 2: " + value9.DoubleValue.ToString()); m_bReportForm.ReportPage1.LTFT2 = value9.DoubleValue; } } OBDParameter parameter6 = m_obdInterface.LookupParameter("SAE.LTFT4"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowLTFT24 = false; if (parameter6 != null) { parameter6 = parameter6.GetFreezeFrameCopy(0); OBDParameterValue value8 = m_obdInterface.GetValue(parameter6); if (!value8.ErrorDetected) { m_bReportForm.ReportPage1.ShowLTFT24 = true; DisplayDetailMessage("长时燃油修正 - 组 4: " + value8.DoubleValue.ToString()); m_bReportForm.ReportPage1.LTFT4 = value8.DoubleValue; } } OBDParameter parameter5 = m_obdInterface.LookupParameter("SAE.MAP"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowIntakePressure = false; if (parameter5 != null) { parameter5 = parameter5.GetFreezeFrameCopy(0); OBDParameterValue value7 = m_obdInterface.GetValue(parameter5); if (!value7.ErrorDetected) { m_bReportForm.ReportPage1.ShowIntakePressure = true; DisplayDetailMessage("进气歧管压力: " + value7.DoubleValue.ToString()); m_bReportForm.ReportPage1.IntakePressure = value7.DoubleValue; } } OBDParameter parameter4 = m_obdInterface.LookupParameter("SAE.RPM"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowEngineRPM = false; if (parameter4 != null) { parameter4 = parameter4.GetFreezeFrameCopy(0); OBDParameterValue value6 = m_obdInterface.GetValue(parameter4); if (!value6.ErrorDetected) { m_bReportForm.ReportPage1.ShowEngineRPM = true; DisplayDetailMessage("发动机转数: " + value6.DoubleValue.ToString()); m_bReportForm.ReportPage1.EngineRPM = value6.DoubleValue; } } OBDParameter parameter3 = m_obdInterface.LookupParameter("SAE.VSS"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowVehicleSpeed = false; if (parameter3 != null) { parameter3 = parameter3.GetFreezeFrameCopy(0); OBDParameterValue value5 = m_obdInterface.GetValue(parameter3); if (!value5.ErrorDetected) { m_bReportForm.ReportPage1.ShowVehicleSpeed = true; DisplayDetailMessage("车辆速度: " + value5.DoubleValue.ToString()); m_bReportForm.ReportPage1.VehicleSpeed = value5.DoubleValue; } } OBDParameter parameter2 = m_obdInterface.LookupParameter("SAE.SPARKADV"); this.BeginInvoke((EventHandler) delegate { progressBar.Value += 1; }); m_bReportForm.ReportPage1.ShowSparkAdvance = false; if (parameter2 != null) { parameter2 = parameter2.GetFreezeFrameCopy(0); OBDParameterValue value4 = m_obdInterface.GetValue(parameter2); if (!value4.ErrorDetected) { m_bReportForm.ReportPage1.ShowSparkAdvance = true; DisplayDetailMessage("点火提前角: " + value4.DoubleValue.ToString()); m_bReportForm.ReportPage1.SparkAdvance = value4.DoubleValue; } } }