Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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));
                }
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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;
            });
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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;
            }));
        }
Ejemplo n.º 8
0
        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();
                });
            }
        }
Ejemplo n.º 9
0
        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);
        }