public void UpdateThread() { if (!IsPlotting) { return; } do { if (m_obdInterface.ConnectedStatus) { if (sensorsEnable[0]) { OBDParameterValue obdParameterValue = m_obdInterface.GetValue(comboSensor1.Items[sensorsIndex[0]] as OBDParameter, unitsIndex[0] == 0); if (!obdParameterValue.ErrorDetected) { m_arraySensorValues[0].Add(new DatedValue(obdParameterValue.DoubleValue)); UpdateChart(0, chart1); } } if (sensorsEnable[1]) { OBDParameterValue obdParameterValue = m_obdInterface.GetValue(comboSensor2.Items[sensorsIndex[1]] as OBDParameter, unitsIndex[1] == 0); if (!obdParameterValue.ErrorDetected) { m_arraySensorValues[1].Add(new DatedValue(obdParameterValue.DoubleValue)); UpdateChart(1, chart2); } } if (sensorsEnable[2]) { OBDParameterValue obdParameterValue = m_obdInterface.GetValue(comboSensor3.Items[sensorsIndex[2]] as OBDParameter, unitsIndex[2] == 0); if (!obdParameterValue.ErrorDetected) { m_arraySensorValues[2].Add(new DatedValue(obdParameterValue.DoubleValue)); UpdateChart(2, chart3); } } if (sensorsEnable[3]) { OBDParameterValue obdParameterValue = m_obdInterface.GetValue(comboSensor4.Items[sensorsIndex[3]] as OBDParameter, unitsIndex[3] == 0); if (!obdParameterValue.ErrorDetected) { m_arraySensorValues[3].Add(new DatedValue(obdParameterValue.DoubleValue)); UpdateChart(3, chart4); } } } else { Thread.Sleep(300); } } while (IsPlotting); }
public void ReadCodes() { m_ListDTC.Clear(); m_ListPending.Clear(); m_ListPermanent.Clear(); OBDParameterValue value; value = m_obdInterface.GetValue("SAE.MIL"); if (!value.ErrorDetected) { SetMilStatus(value.BoolValue); } value = m_obdInterface.GetValue("SAE.DTC_COUNT"); if (!value.ErrorDetected) { SetDTCTotal((int)value.DoubleValue); } value = m_obdInterface.GetValue("SAE.STORED_DTCS"); if (!value.ErrorDetected) { foreach (string dtc in value.ListStringValue) { m_ListDTC.Add(m_obdInterface.GetDTC(dtc)); } } value = m_obdInterface.GetValue("SAE.PENDING_DTCS"); if (!value.ErrorDetected) { foreach (string dtc in value.ListStringValue) { m_ListPending.Add(m_obdInterface.GetDTC(dtc)); } } value = m_obdInterface.GetValue("SAE.PERMANENT_DTCS"); if (!value.ErrorDetected) { foreach (string dtc in value.ListStringValue) { m_ListPermanent.Add(m_obdInterface.GetDTC(dtc)); } } }
private void UpdateThread() { while (IsRunThread) { if (m_obdInterface.ConnectedStatus && IsLogging) { foreach (SensorDisplayControl control in panelDisplay.Controls) { OBDParameter param = (OBDParameter)control.Tag; OBDParameterValue value = m_obdInterface.GetValue(param, radioDisplayEnglish.Checked); if (!value.ErrorDetected) { string text = param.EnglishUnitLabel; if (!radioDisplayEnglish.Checked) { text = param.MetricUnitLabel; } SensorLogItem sensorLogItem = new SensorLogItem( param.Name, value.DoubleValue.ToString(), text, value.DoubleValue.ToString(), text); m_ListLog.Add(sensorLogItem); this.Invoke((EventHandler) delegate { scrollTime.Maximum = m_ListLog.Count - 1; scrollTime.Value = scrollTime.Maximum; }); DateTime dateTime = new DateTime(0L); this.Invoke((EventHandler) delegate { lblTimeElapsed.Text = dateTime.Add(sensorLogItem.Time.Subtract(m_dtStartTime)).ToString("mm:ss.fff", DateTimeFormatInfo.InvariantInfo); }); text = value.DoubleValue.ToString(); if (radioDisplayEnglish.Checked) { control.EnglishDisplay = text + " " + param.EnglishUnitLabel; } else { control.MetricDisplay = text + " " + param.MetricUnitLabel; } } } } else { Thread.Sleep(300); } } }
private new void Capture() { m_KphValues = new List <DatedValue>(); while (m_bCapture) { OBDParameterValue obdParameterValue = m_obdInterface.GetValue("SAE.VSS"); if (!obdParameterValue.ErrorDetected && obdParameterValue.DoubleValue > 0.0) { if (m_KphValues.Count == 0) { this.BeginInvoke((EventHandler) delegate { StartTimer(); }); } m_KphValues.Add(new DatedValue(obdParameterValue.DoubleValue * m_obdInterface.ActiveProfile.SpeedCalibrationFactor)); this.CalculateTimeslip(); } } this.BeginInvoke((EventHandler) delegate { StopTimer(); btnOpen.Enabled = true; }); }
private void UpdateThread() { if (!m_RunThread) { return; } do { if (m_obdInterface.ConnectedStatus && IsWorking) { OBDParameterValue sae_maf = m_obdInterface.GetValue("SAE.MAF", false); OBDParameterValue sae_vss = m_obdInterface.GetValue("SAE.VSS", false); if (!sae_maf.ErrorDetected && !sae_vss.ErrorDetected) { double sae_vss_double = sae_vss.DoubleValue; double speed_miles = sae_vss_double * 0.621371192; double fuel_liters_hour = ((sae_maf.DoubleValue * 0.068027210884353748) * 3600.0) * 0.0013020833333333333; double fuel_gallons_hour = fuel_liters_hour * 0.264172052; DateTime now = DateTime.Now; double hours_start = now.Subtract(this.m_StartTime).TotalSeconds * 0.00027777777777777778; double hours_prev = now.Subtract(this.m_PrevTime).TotalSeconds * 0.00027777777777777778; this.m_PrevTime = now; if (this.radioEnglishUnits.Checked) { this.sensorInstantFuelConsumption.EnglishDisplay = fuel_gallons_hour.ToString("0.000") + " 加仑 / 小时"; this.m_TotalFuelConsumption += hours_prev * fuel_gallons_hour; double total = this.m_TotalFuelConsumption; sensorTotalConsumed.EnglishDisplay = total.ToString("0.00") + " 加仑"; this.sensorAvgFuelConsumption.EnglishDisplay = ((this.m_TotalFuelConsumption / hours_start)).ToString("0.00") + " 加仑 / 小时"; this.m_TotalDistance += hours_prev * speed_miles; this.sensorDistance.EnglishDisplay = m_TotalDistance.ToString("0.00") + " 英里"; this.sensorInstantFuelEconomy.EnglishDisplay = (((1.0 / fuel_gallons_hour) * speed_miles)).ToString("0.00") + " 英里 / 加仑"; double miles_gallon = 0.0; if (this.m_TotalDistance > 0.0) { miles_gallon = this.m_TotalDistance / this.m_TotalFuelConsumption; } this.sensorAvgFuelEconomy.EnglishDisplay = miles_gallon.ToString("0.00") + " 英里 / 加仑"; double cost_per_mile = 0.0; if (miles_gallon > 0.0) { cost_per_mile = ((double)numericFuelCost.Value) * (1.0 / miles_gallon); } this.sensorCostPerMile.Title = "每英里的平均成本"; this.sensorCostPerMile.EnglishDisplay = "$" + cost_per_mile.ToString("0.00"); this.sensorTotalCost.EnglishDisplay = "$" + ((((double)numericFuelCost.Value) * m_TotalFuelConsumption)).ToString("0.00"); } else { this.sensorInstantFuelConsumption.EnglishDisplay = fuel_liters_hour.ToString("0.000") + " 升 / 小时"; this.m_TotalFuelConsumption += hours_prev * fuel_liters_hour; double total = this.m_TotalFuelConsumption; sensorTotalConsumed.EnglishDisplay = total.ToString("0.00") + " 升"; this.sensorAvgFuelConsumption.EnglishDisplay = ((this.m_TotalFuelConsumption / hours_start)).ToString("0.00") + " 升 / 小时"; this.m_TotalDistance += hours_prev * sae_vss_double; this.sensorDistance.EnglishDisplay = m_TotalDistance.ToString("0.00") + " 千米"; this.sensorInstantFuelEconomy.EnglishDisplay = (((1.0 / fuel_liters_hour) * sae_vss_double)).ToString("0.00") + " 千米 / 升"; double kilometers_liter = 0.0; if (this.m_TotalDistance > 0.0) { kilometers_liter = this.m_TotalDistance / this.m_TotalFuelConsumption; } this.sensorAvgFuelEconomy.EnglishDisplay = kilometers_liter.ToString("0.00") + " 千米 / 升"; double cost_per_kilometer = 0.0; if (kilometers_liter > 0.0) { cost_per_kilometer = ((double)numericFuelCost.Value) * (1.0 / kilometers_liter); } this.sensorCostPerMile.Title = "每千米的平均成本"; this.sensorCostPerMile.EnglishDisplay = cost_per_kilometer.ToString("0.00"); this.sensorTotalCost.EnglishDisplay = (((double)numericFuelCost.Value) * m_TotalFuelConsumption).ToString("0.00"); } } } else { Thread.Sleep(300); } } while (m_RunThread); }
public void UpdateTests() { progressBar.Minimum = 0; progressBar.Maximum = 35; OBDParameterValue value; value = m_obdInterface.GetValue("SAE.MISFIRE_SUPPORT"); progressBar.Value = 1; TestStatus status = m_ListConTests[0]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.MISFIRE_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.FUEL_SUPPORT"); progressBar.Value = 2; status = m_ListConTests[1]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.FUEL_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.CCM_SUPPORT"); progressBar.Value = 3; status = m_ListConTests[2]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.CCM_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } gridConTests.Refresh(); value = m_obdInterface.GetValue("SAE.CAT_SUPPORT"); progressBar.Value = 4; status = m_ListNonConTests[0]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.CAT_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.HCAT_SUPPORT"); progressBar.Value = 5; status = m_ListNonConTests[1]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.HCAT_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.EVAP_SUPPORT"); progressBar.Value = 6; status = m_ListNonConTests[2]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.EVAP_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.AIR_SUPPORT"); progressBar.Value = 7; status = m_ListNonConTests[3]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.AIR_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.AC_SUPPORT"); progressBar.Value = 8; status = m_ListNonConTests[4]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.AC_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.O2_SUPPORT"); progressBar.Value = 9; status = m_ListNonConTests[5]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.O2_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.O2HTR_SUPPORT"); progressBar.Value = 10; status = m_ListNonConTests[6]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.O2HTR_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } value = m_obdInterface.GetValue("SAE.EGR_SUPPORT"); progressBar.Value = 11; status = m_ListNonConTests[7]; if (!value.ErrorDetected) { if (!value.BoolValue) { status.Status = "不适用"; } else { value = m_obdInterface.GetValue("SAE.EGR_STATUS"); if (!value.ErrorDetected) { status.Status = value.BoolValue ? "完成" : "未完成"; } else { status.Status = "出错"; } } } else { status.Status = "出错"; } gridNonConTests.Refresh(); if (m_obdInterface.IsParameterSupported("SAE.FUEL1_STATUS")) { value = m_obdInterface.GetValue("SAE.FUEL1_STATUS"); progressBar.Value++; lblFuel1.Text = value.ErrorDetected ? "出错" : value.StringValue; } else { lblFuel1.Text = "不适用"; } if (m_obdInterface.IsParameterSupported("SAE.FUEL2_STATUS")) { value = m_obdInterface.GetValue("SAE.FUEL2_STATUS"); progressBar.Value++; lblFuel2.Text = value.ErrorDetected ? "出错" : value.StringValue; } else { lblFuel2.Text = "不适用"; } if (m_obdInterface.IsParameterSupported("SAE.PTO_STATUS")) { value = m_obdInterface.GetValue("SAE.PTO_STATUS"); progressBar.Value++; lblPTO.Text = value.ErrorDetected ? "出错" : value.StringValue; } else { lblPTO.Text = "不适用"; } if (m_obdInterface.IsParameterSupported("SAE.SECAIR_STATUS")) { value = m_obdInterface.GetValue("SAE.SECAIR_STATUS"); progressBar.Value++; lblAir.Text = value.ErrorDetected ? "出错" : value.StringValue; } else { lblAir.Text = "不适用"; } if (m_obdInterface.IsParameterSupported("SAE.OBD_TYPE")) { value = m_obdInterface.GetValue("SAE.OBD_TYPE"); progressBar.Value++; lblOBD.Text = value.ErrorDetected ? "出错" : value.StringValue; } else { lblOBD.Text = "不适用"; } string strContent = ""; OBDParameter param = new OBDParameter { OBDRequest = "0902", Service = 9, Parameter = 2, ValueTypes = (int)OBDParameter.EnumValueTypes.ListString }; OBDParameterValue val = m_obdInterface.GetValue(param); progressBar.Value++; strContent += "VIN:"; foreach (string item in val.ListStringValue) { strContent += "\n" + item; } param.OBDRequest = "0904"; val = m_obdInterface.GetValue(param); progressBar.Value++; strContent += "\n\nCAL ID:"; foreach (string item in val.ListStringValue) { strContent += "\n" + item; } param.OBDRequest = "0906"; val = m_obdInterface.GetValue(param); progressBar.Value++; strContent += "\n\nCVN:"; foreach (string item in val.ListStringValue) { strContent += "\n" + item; } //param.OBDRequest = "0908"; //param.SubParameter = 0; //val = m_obdInterface.GetValue(param); //progressBar.Value++; //strContent += "\n\nIPT:"; //strContent += "\n" + val.DoubleValue; ////foreach (string item in val.ListStringValue) { //// strContent += "," + Utility.Hex2Int(item); ////} param.OBDRequest = "090A"; val = m_obdInterface.GetValue(param); progressBar.Value++; strContent += "\n\nECU名称:"; foreach (string item in val.ListStringValue) { strContent += "\n" + item; } lblVehicleInfo.Text = strContent; progressBar.Value++; /*string strContent = ""; * string strHeader; * int counter; * * if (m_obd2Interface.IsParameterSupported("SAE.O2B1S1A_PRESENT")) { * strHeader = "PID $13 Bank 1: "; * strContent += strHeader; * counter = 0; * value = m_obd2Interface.GetValue("SAE.O2B1S1A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 1, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B1S2A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 2, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B1S3A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 3, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B1S4A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 4, "; ++counter; * } * if (counter == 0) { * strContent = strContent.Substring(0, strContent.Length - strHeader.Length); * } else { * strContent = strContent.Substring(0, strContent.Length - 2); * } * * strHeader = "\n\r\nPID $13 Bank 2: "; * strContent += strHeader; * counter = 0; * value = m_obd2Interface.GetValue("SAE.O2B2S1A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 1, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B2S2A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 2, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B2S3A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 3, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B2S4A_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 4, "; ++counter; * } * if (counter == 0) { * strContent = strContent.Substring(0, strContent.Length - strHeader.Length); * } else { * strContent = strContent.Substring(0, strContent.Length - 2); * } * } * * if (m_obd2Interface.IsParameterSupported("SAE.O2B1S1B_PRESENT")) { * strHeader = "\n\r\nPID $1D Bank 1: "; * strContent += strHeader; * counter = 0; * value = m_obd2Interface.GetValue("SAE.O2B1S1B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 1, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B1S2B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 2, "; ++counter; * } * if (counter == 0) { * strContent = strContent.Substring(0, strContent.Length - strHeader.Length); * } else { * strContent = strContent.Substring(0, strContent.Length - 2); * } * * strHeader = "\n\r\nPID $1D Bank 2: "; * strContent += strHeader; * counter = 0; * value = m_obd2Interface.GetValue("SAE.O2B2S1B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 1, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B2S2B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 2, "; ++counter; * } * if (counter == 0) { * strContent = strContent.Substring(0, strContent.Length - strHeader.Length); * } else { * strContent = strContent.Substring(0, strContent.Length - 2); * } * * strHeader = "\n\r\nPID $1D Bank 3: "; * strContent += strHeader; * counter = 0; * value = m_obd2Interface.GetValue("SAE.O2B3S1B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 1, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B3S2B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 2, "; ++counter; * } * if (counter == 0) { * strContent = strContent.Substring(0, strContent.Length - strHeader.Length); * } else { * strContent = strContent.Substring(0, strContent.Length - 2); * } * * strHeader = "\n\r\nPID $1D Bank 4: "; * strContent += strHeader; * counter = 0; * value = m_obd2Interface.GetValue("SAE.O2B4S1B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 1, "; ++counter; * } * * value = m_obd2Interface.GetValue("SAE.O2B4S2B_PRESENT"); * progressBar.Value++; * if (!value.ErrorDetected && value.BoolValue) { * strContent += "传感器 2, "; ++counter; * } * if (counter == 0) { * strContent = strContent.Substring(0, strContent.Length - strHeader.Length); * } else { * strContent = strContent.Substring(0, strContent.Length - 2); * } * }*/ if (m_obdInterface.GetDevice() == HardwareType.ELM327) { value = m_obdInterface.GetValue("ELM.BATTERY_VOLTAGE"); if (!value.ErrorDetected) { lblBattery.Text = value.DoubleValue.ToString() + " V"; } } else { lblBattery.Text = "不适用"; } progressBar.Value = progressBar.Maximum; }
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 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 ReadTestResults() { o2TestResultsControl1.Reset(); progressBar.Maximum = 12; progressBar.Value = 0; if (!m_obdInterface.GetValue("SAE.O2_SUPPORT").ErrorDetected) { OBDParameterValue value; value = m_obdInterface.GetValue("SAE.O2_STATUS"); if (!value.ErrorDetected && value.BoolValue) { progressBar.Increment(1); int selectedSensorId = GetSelectedSensorID(); progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 1, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue01 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 2, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue02 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 3, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue03 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 4, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue04 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 5, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue05 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 5, 1, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMinimum05 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 5, 2, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMaximum05 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 6, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue06 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 6, 1, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMinimum06 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 6, 2, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMaximum06 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 7, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue07 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 7, 1, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMinimum07 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 7, 2, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMaximum07 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 8, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue08 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 8, 1, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMinimum08 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 8, 2, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMaximum08 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 9, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue09 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 9, 1, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMinimum09 = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 9, 2, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMaximum09 = value.DoubleValue; } progressBar.Increment(1); value = m_obdInterface.GetValue(new OBDParameter(5, 10, 0, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestValue0A = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 10, 1, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMinimum0A = value.DoubleValue; } value = m_obdInterface.GetValue(new OBDParameter(5, 10, 2, selectedSensorId)); if (!value.ErrorDetected) { o2TestResultsControl1.TestMaximum0A = value.DoubleValue; } progressBar.Value = progressBar.Maximum; return; } } MessageBox.Show("该辆车不适用氧气传感器监测或者监测未完成", "不适用", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }