Exemplo n.º 1
0
        private void ComboSensorOrUnits_Update(List <DatedValue> arraySensorValues, DGChartControl chart, ComboBox comboSensor, ComboBox comboUnits)
        {
            arraySensorValues.Clear();
            chart.XData1 = null;
            chart.YData1 = null;
            if (comboSensor.Items.Count == 0)
            {
                return;
            }
            int selectedIndex = comboSensor.SelectedIndex;

            if (selectedIndex < 0)
            {
                return;
            }
            OBDParameter obdParameter = (OBDParameter)comboSensor.Items[selectedIndex];

            if (comboUnits.SelectedIndex == 0)
            {
                chart.Text        = obdParameter.Name + " (" + obdParameter.EnglishUnitLabel + ")";
                chart.YRangeStart = Math.Floor(obdParameter.EnglishMinValue);
                chart.YRangeEnd   = obdParameter.EnglishMinValue + 1.0;
            }
            else
            {
                chart.Text        = obdParameter.Name + " (" + obdParameter.MetricUnitLabel + ")";
                chart.YRangeStart = Math.Floor(obdParameter.MetricMinValue);
                chart.YRangeEnd   = obdParameter.MetricMinValue + 1.0;
            }
        }
Exemplo n.º 2
0
        protected int GetDataStartIndex(int headLen, OBDParameter param, bool bIsMultiline)
        {
            int iRet;

            switch (param.Service)
            {
            case 1:
                iRet = headLen + 4;
                break;

            case 2:
                iRet = headLen + 6;
                break;

            case 3:
            case 4:
            case 7:
            case 0x0A:
                iRet = headLen + 2;
                break;

            case 5:
                iRet = headLen + 6;
                break;

            case 9:
                return(param.Parameter % 2 == 0 ? headLen + 6 : headLen + 4);

            default:
                iRet = headLen + 4;
                break;
            }
            return(bIsMultiline ? iRet + 2 : iRet);
        }
Exemplo n.º 3
0
        public OBDParameter GetFreezeFrameCopy(int iFrame)
        {
            OBDParameter copy = GetCopy();

            copy.Service    = 2;
            copy.OBDRequest = "02" + copy.OBDRequest.Substring(2, 2) + iFrame.ToString("D2");
            return(copy);
        }
Exemplo n.º 4
0
        public OBDResponseList GetResponseList(OBDParameter param)
        {
            OBDResponseList responses = m_obdDevice.Query(param);
            string          strItem   = "Responses: ";

            for (int i = 0; i < responses.ResponseCount; i++)
            {
                strItem += string.Format("[{0}] ", responses.GetOBDResponse(i).Data);
            }
            m_log.TraceInfo(strItem);
            return(responses);
        }
Exemplo n.º 5
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);
                }
            }
        }
Exemplo n.º 6
0
        public List <OBDParameterValue> GetValueList(OBDParameter param, bool bEnglishUnits = false)
        {
            List <OBDParameterValue> ValueList = new List <OBDParameterValue>();

            if (param.PID.Length > 0)
            {
                m_log.TraceInfo("Requesting: " + param.PID);
            }
            else
            {
                m_log.TraceInfo("Requesting: " + param.OBDRequest);
            }
            OBDResponseList responses = m_obdDevice.Query(param);
            string          strItem   = "Responses: ";

            if (responses.ErrorDetected)
            {
                strItem += "Error Detected!";
                OBDParameterValue value = new OBDParameterValue {
                    ErrorDetected    = true,
                    StringValue      = "Error Detected in OBDResponseList!",
                    ShortStringValue = "ERROR_RESP"
                };
                ValueList.Add(value);
                m_log.TraceInfo(strItem);
                return(ValueList);
            }
            else
            {
                for (int i = 0; i < responses.ResponseCount; i++)
                {
                    strItem += string.Format("[{0}] ", responses.GetOBDResponse(i).Data);
                }
                strItem = strItem.TrimEnd();
                m_log.TraceInfo(strItem);
            }

            for (int i = 0; i < responses.ResponseCount; i++)
            {
                OBDParameterValue obdValue = m_obdInterpreter.GetValue(param, responses.GetOBDResponse(i), bEnglishUnits);
                if (obdValue.ErrorDetected)
                {
                    m_log.TraceError("Error Detected in OBDParameterValue!");
                }
                else
                {
                    m_log.TraceInfo(GetLogString(param, obdValue));
                }
                ValueList.Add(obdValue);
            }
            return(ValueList);
        }
Exemplo n.º 7
0
        public OBDParameterValue GetValue(string strPID, bool bEnglishUnits = false)
        {
            OBDParameter obdParameter = LookupParameter(strPID);

            if (obdParameter != null)
            {
                return(GetValue(obdParameter, bEnglishUnits));
            }

            OBDParameterValue value = new OBDParameterValue {
                ErrorDetected = true
            };

            return(value);
        }
Exemplo n.º 8
0
        public OBDParameterValue GetValue(OBDParameter param, bool bEnglishUnits = false)
        {
            if (param.PID.Length > 0)
            {
                m_log.TraceInfo("Requesting: " + param.PID);
            }
            else
            {
                m_log.TraceInfo("Requesting: " + param.OBDRequest);
            }
            if (param.Service == 0)
            {
                return(SpecialValue(param));
            }

            OBDResponseList responses = m_obdDevice.Query(param);
            string          strItem   = "Responses: ";

            if (responses.ErrorDetected)
            {
                strItem += "Error Detected!";
                m_log.TraceInfo(strItem);
                return(new OBDParameterValue {
                    ErrorDetected = true
                });
            }
            else
            {
                for (int i = 0; i < responses.ResponseCount; i++)
                {
                    strItem += string.Format("[{0}] ", responses.GetOBDResponse(i).Data);
                }
            }
            m_log.TraceInfo(strItem);
            OBDParameterValue obdValue = m_obdInterpreter.GetValue(param, responses, bEnglishUnits);

            if (obdValue.ErrorDetected)
            {
                m_log.TraceError("Error Detected in OBDParameterValue!");
            }
            else
            {
                m_log.TraceInfo(GetLogString(param, obdValue));
            }
            return(obdValue);
        }
Exemplo n.º 9
0
        public OBDParameterValue SpecialValue(OBDParameter param)
        {
            if (param.Parameter != 0)
            {
                return(null);
            }

            OBDParameterValue value     = new OBDParameterValue();
            string            respopnse = GetRawResponse("ATRV");

            m_log.TraceInfo("Response of \"ATRV\": " + respopnse);
            if (respopnse != null)
            {
                respopnse         = respopnse.Replace("V", "");
                value.DoubleValue = Utility.Text2Double(respopnse);
            }
            return(value);
        }
Exemplo n.º 10
0
        private string GetLogString(OBDParameter param, OBDParameterValue obdValue)
        {
            string strRet = "Values: ";

            if ((param.ValueTypes & (int)OBDParameter.EnumValueTypes.Double) == (int)OBDParameter.EnumValueTypes.Double)
            {
                strRet += string.Format("[Double: {0}] ", obdValue.DoubleValue.ToString());
            }
            if ((param.ValueTypes & (int)OBDParameter.EnumValueTypes.Bool) == (int)OBDParameter.EnumValueTypes.Bool)
            {
                strRet += string.Format("[Bool: {0}] ", obdValue.BoolValue.ToString());
            }
            if ((param.ValueTypes & (int)OBDParameter.EnumValueTypes.String) == (int)OBDParameter.EnumValueTypes.String)
            {
                strRet += string.Format("[String: {0}] ", obdValue.StringValue, obdValue.ShortStringValue);
            }
            if ((param.ValueTypes & (int)OBDParameter.EnumValueTypes.ListString) == (int)OBDParameter.EnumValueTypes.ListString)
            {
                strRet += "[ListString: ";
                foreach (string strx in obdValue.ListStringValue)
                {
                    strRet = string.Concat(strRet, strx + ", ");
                }
                strRet  = strRet.Substring(0, strRet.Length - 2);
                strRet += "]";
            }
            if ((param.ValueTypes & (int)OBDParameter.EnumValueTypes.ShortString) == (int)OBDParameter.EnumValueTypes.ShortString)
            {
                strRet += string.Format("[ShortString: {0}] ", obdValue.ShortStringValue);
            }
            if ((param.ValueTypes & (int)OBDParameter.EnumValueTypes.BitFlags) == (int)OBDParameter.EnumValueTypes.BitFlags)
            {
                strRet += "[BitFlags: ";
                for (int idx = 0; idx < 32; idx++)
                {
                    strRet += (obdValue.GetBitFlag(idx) ? "1" : "0");
                }
                strRet += "]";
            }
            return(strRet);
        }
Exemplo n.º 11
0
        public OBDParameter GetCopy()
        {
            OBDParameter p = new OBDParameter {
                Category         = Category,
                ValueTypes       = ValueTypes,
                EnglishMaxValue  = EnglishMaxValue,
                EnglishMinValue  = EnglishMinValue,
                EnglishUnitLabel = EnglishUnitLabel,
                Manufacturer     = Manufacturer,
                MetricMaxValue   = MetricMaxValue,
                MetricMinValue   = MetricMinValue,
                MetricUnitLabel  = MetricUnitLabel,
                Name             = Name,
                m_OBDRequest     = OBDRequest,
                m_parameter      = Parameter,
                PID          = PID,
                Priority     = Priority,
                Service      = Service,
                SubParameter = SubParameter,
                Type         = Type
            };

            return(p);
        }
Exemplo n.º 12
0
 public abstract OBDResponseList Query(OBDParameter param);
Exemplo n.º 13
0
        public OBDResponseList Parse(OBDParameter param, string response, int headLen)
        {
            if (string.IsNullOrEmpty(response))
            {
                response = "";
            }

            OBDResponseList responseList = new OBDResponseList(response);

            response = Strip(response);
            if (ErrorCheck(response))
            {
                responseList.ErrorDetected = true;
                return(responseList);
            }

            List <string> lines = SplitByCR(response);

            lines.Sort();
            List <List <string> > groups = new List <List <string> >();
            List <string>         group  = new List <string> {
                lines[0]
            };

            groups.Add(group);
            if (lines[0].Length < headLen)
            {
                responseList.ErrorDetected = true;
                return(responseList);
            }

            string header = lines[0].Substring(0, headLen);

            for (int i = 1; i < lines.Count; i++)
            {
                if (lines[i].Length >= headLen)
                {
                    if (lines[i].Substring(0, headLen).CompareTo(header) == 0)
                    {
                        group.Add(lines[i]);
                    }
                    else
                    {
                        group = new List <string> {
                            lines[i]
                        };
                        groups.Add(group);
                        header = lines[i].Substring(0, headLen);
                    }
                }
                else
                {
                    responseList.ErrorDetected = true;
                    return(responseList);
                }
            }
            for (int i = 0; i < groups.Count; i++)
            {
                OBDResponse obd_response = new OBDResponse();
                bool        bIsMultiline = false;
                if (groups[i].Count > 1)
                {
                    bIsMultiline = true;
                }
                int dataStartIndex1 = GetDataStartIndex(headLen, param, bIsMultiline, false);
                int length1         = groups[i][0].Length - dataStartIndex1;
                obd_response.Header = groups[i][0].Substring(0, headLen);
                obd_response.Data   = length1 > 0 ? groups[i][0].Substring(dataStartIndex1, length1) : "";
                int dataStartIndex2 = GetDataStartIndex(headLen, param, bIsMultiline, true);
                for (int j = 1; j < groups[i].Count; j++)
                {
                    int length2 = groups[i][j].Length - dataStartIndex2;
                    obd_response.Data += (length2 > 0 ? groups[i][j].Substring(dataStartIndex2, length2) : "");
                }
                responseList.AddOBDResponse(obd_response);
            }
            return(responseList);
        }
Exemplo n.º 14
0
 public override OBDResponseList Query(OBDParameter param)
 {
     return(m_Parser.Parse(param, GetOBDResponse(param.OBDRequest)));
 }
Exemplo n.º 15
0
        protected int GetDataStartIndex(int headLen, OBDParameter param, bool bIsMultiline, bool bConsecutiveLine)
        {
            int iRet;

            if (bConsecutiveLine)
            {
                // 连续帧
                return(headLen + 2);
            }
            switch (param.Service)
            {
            case 1:
                iRet = headLen + 6;
                break;

            case 2:
                iRet = headLen + 8;
                break;

            case 3:
            case 7:
            case 0x0A:
                iRet = headLen + 6;
                break;

            case 4:
                iRet = headLen + 4;
                break;

            case 5:
                iRet = headLen + 8;
                break;

            case 9:
                iRet = param.Parameter % 2 == 0 && param.Parameter % 0x20 != 0 ? headLen + 8 : headLen + 6;
                break;

            case 0x19:
                // ISO 27145 ReadDTCInformation
                string reportType = param.OBDRequest.Substring(2, 2);
                if (reportType == "42")
                {
                    iRet = headLen + 14;
                }
                else if (reportType == "55")
                {
                    iRet = headLen + 12;
                }
                else
                {
                    iRet = headLen + 6;
                }
                break;

            case 0x22:
                // ISO 27145 ReadDataByIdentifer
                iRet = headLen + 8;
                break;

            default:
                iRet = headLen + 6;
                break;
            }
            return(bIsMultiline ? iRet + 2 : iRet);
        }
Exemplo n.º 16
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;
        }
Exemplo n.º 17
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;
            }));
        }
Exemplo n.º 18
0
        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;
                }
            }
        }
Exemplo n.º 19
0
 public abstract OBDResponseList Parse(OBDParameter param, string response);
Exemplo n.º 20
0
        public bool LoadParameters(string fileName)
        {
            int          lineNo = 0;
            string       line;
            OBDParameter param;

            string[] tokens;
            char[]   comma = new char[] { ',' };

            try {
                using (StreamReader streamReader = new StreamReader(fileName)) {
                    while ((line = streamReader.ReadLine()) != null)
                    {
                        ++lineNo;
                        line = line.Trim();
                        // Ignore empty and comment lines
                        if (line.Length == 0 || line[0] == '#')
                        {
                            continue;
                        }

                        tokens = line.Split(comma);
                        for (int idx = 0; idx < tokens.Length; idx++)
                        {
                            tokens[idx] = (tokens[idx] ?? "").Trim();
                        }

                        param = new OBDParameter {
                            PID          = tokens[0],
                            Name         = tokens[1],
                            OBDRequest   = tokens[2],
                            Service      = int.Parse(tokens[3]),
                            Parameter    = int.Parse(tokens[4]),
                            SubParameter = int.Parse(tokens[5])
                        };

                        switch (tokens[6])
                        {
                        case "Airflow":
                            param.Category = 0; break;

                        case "DTC":
                            param.Category = 1; break;

                        case "Emissions":
                            param.Category = 2; break;

                        case "Fuel":
                            param.Category = 3; break;

                        case "General":
                            param.Category = 4; break;

                        case "O2":
                            param.Category = 5; break;

                        case "Powertrain":
                            param.Category = 6; break;

                        case "Speed":
                            param.Category = 7; break;

                        case "Temperature":
                            param.Category = 8; break;
                        }
                        switch (tokens[7])
                        {
                        case "Generic":
                            param.Type = 0; break;

                        case "Manufacturer":
                            param.Type = 1; break;

                        case "Scripted":
                            param.Type = 2; break;
                        }

                        switch (tokens[8])
                        {
                        case "SAE":
                            param.Manufacturer = 0; break;

                        case "GM":
                            param.Manufacturer = 1; break;

                        case "Ford":
                            param.Manufacturer = 2; break;

                        case "SH_OBD":
                            param.Manufacturer = 3; break;
                        }

                        param.Priority         = int.Parse(tokens[9]);
                        param.EnglishUnitLabel = tokens[10];
                        param.MetricUnitLabel  = tokens[11];

                        try {
                            param.EnglishMinValue = Utility.Text2Double(tokens[12]);
                            param.EnglishMaxValue = Utility.Text2Double(tokens[13]);
                            param.MetricMinValue  = Utility.Text2Double(tokens[14]);
                            param.MetricMaxValue  = Utility.Text2Double(tokens[15]);
                        } catch (Exception e) {
                            m_log.TraceError("Utility.Text2Double() occur error: " + e.Message);
                        }

                        int valueType = 0x00;
                        if (int.Parse(tokens[16]) > 0)
                        {
                            valueType = 0x01;
                        }
                        if (int.Parse(tokens[17]) > 0)
                        {
                            valueType |= 0x02;
                        }
                        if (int.Parse(tokens[18]) > 0)
                        {
                            valueType |= 0x04;
                        }
                        if (int.Parse(tokens[19]) > 0)
                        {
                            valueType |= 0x08;
                        }

                        param.ValueTypes = valueType;
                        m_listAllParameters.Add(param);
                    }
                }
                m_log.TraceInfo(string.Format("Loaded {0} parameters from {1}", lineNo, fileName));
                return(true);
            } catch (Exception e) {
                m_log.TraceError(string.Format("Failed to load parameters from: {0}, reason: {1}", fileName, e.Message));
                return(false);
            }
        }
Exemplo n.º 21
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();
                });
            }
        }
Exemplo n.º 22
0
 public override OBDResponseList Parse(OBDParameter param, string response)
 {
     return(Parse(param, response, HEADER_LENGTH));
 }
Exemplo n.º 23
0
        public bool InitOBD()
        {
            bool bRet = true;
            // 获取ISO15031 Mode01 PID支持情况
            OBDParameter param = new OBDParameter(1, 0, 0)
            {
                ValueTypes = 32
            };

            m_listSupportedParameters.Clear();

            for (int i = 0; (i * 0x20) < 0x100; i++)
            {
                param.Parameter = i * 0x20;
                OBDParameterValue value = GetValue(param);
                if (value.ErrorDetected)
                {
                    bRet = false;
                    break;
                }
                foreach (OBDParameter param2 in m_listAllParameters)
                {
                    if (param2.Parameter > 2 && param2.Parameter > (i * 0x20) && param2.Parameter < ((i + 1) * 0x20) && value.GetBitFlag(param2.Parameter - param.Parameter - 1))
                    {
                        m_listSupportedParameters.Add(param2);
                    }
                }
                if (!value.GetBitFlag(31))
                {
                    break;
                }
            }

            if (!bRet)
            {
                // 获取ISO27145 PID支持情况
                bRet  = true;
                param = new OBDParameter(0x22, 0, 0)
                {
                    ValueTypes = 32
                };
                m_listSupportedParameters.Clear();

                for (int i = 0; (i * 0x20) < 0x100; i++)
                {
                    param.Parameter = 0xF400 + i * 0x20;
                    OBDParameterValue value = GetValue(param);
                    if (value.ErrorDetected)
                    {
                        bRet = false;
                        break;
                    }
                    foreach (OBDParameter param2 in m_listAllParameters)
                    {
                        if (param2.Parameter > 2 && param2.Parameter > (i * 0x20) && param2.Parameter < ((i + 1) * 0x20) && value.GetBitFlag(param2.Parameter - param.Parameter - 1))
                        {
                            m_listSupportedParameters.Add(param2);
                        }
                    }
                    if (!value.GetBitFlag(31))
                    {
                        break;
                    }
                }
                UseISO27145 = bRet;
                m_log.TraceInfo("Current vehicle support ISO 27145 only!");
            }
            return(bRet);
        }