Beispiel #1
0
        private OBDParameterValue GetDM19Value(OBDParameter param, OBDResponse response)
        {
            OBDParameterValue value2 = new OBDParameterValue();

            if (response.GetDataByteCount() < 20)
            {
                value2.ErrorDetected = true;
                return(value2);
            }

            int    qty             = response.Data.Length / (20 * 2);
            string strData         = "";
            int    OriginalParam   = param.Parameter;
            int    OriginalService = param.Service;

            param.Service = 9;
            switch (param.SignalName)
            {
            case "CVN":
                param.Parameter = 0x06;
                for (int i = 0; i < qty; i++)
                {
                    strData += response.Data.Substring(i * 20 * 2, 4 * 2);
                }
                response.Data = strData;
                value2        = GetMode010209Value(param, response);
                for (int i = 0; i < value2.ListStringValue.Count; i++)
                {
                    string strVal = value2.ListStringValue[i];
                    value2.ListStringValue[i] = strVal.Substring(6, 2) + strVal.Substring(4, 2) + strVal.Substring(2, 2) + strVal.Substring(0, 2);
                }
                break;

            case "CAL_ID":
                param.Parameter = 0x04;
                for (int i = 0; i < qty; i++)
                {
                    strData += response.Data.Substring(4 * 2 + i * 20 * 2, 16 * 2);
                }
                response.Data = strData;
                value2        = GetMode010209Value(param, response);
                break;

            default:
                value2.ErrorDetected = true;
                break;
            }
            param.Parameter = OriginalParam;
            param.Service   = OriginalService;
            return(value2);
        }
Beispiel #2
0
        private OBDParameterValue GetDM5Value(OBDParameter param, OBDResponse response)
        {
            OBDParameterValue value2 = new OBDParameterValue();

            if (response.GetDataByteCount() < 8)
            {
                value2.ErrorDetected = true;
                return(value2);
            }

            switch (param.SignalName)
            {
            case "":
            case "OBDSUP":
                // OBD型式
                response.Data = response.GetDataByte(2);
                value2        = GetPIDValue(0x11C, response.Data, param.SignalName);
                break;

            case "ACT_DTC_CNT":
                // 激活的故障代码,未实现解析功能
                response.Data = response.GetDataByte(0);
                break;

            case "PRE_DTC_CNT":
                // 先前激活的诊断故障代码,未实现解析功能
                response.Data = response.GetDataByte(1);
                break;

            case "CON_MON":
                // 持续监视系统支持/状态,未实现解析功能
                response.Data = response.GetDataByte(3);
                break;

            case "NON_SUP":
                // 非持续监视系统支持,未实现解析功能
                response.Data = response.GetDataByte(4) + response.GetDataByte(5);
                break;

            case "NON_STAT":
                // 非持续监视系统状态,未实现解析功能
                response.Data = response.GetDataByte(6) + response.GetDataByte(7);
                break;

            default:
                value2.ErrorDetected = true;
                break;
            }
            return(value2);
        }
Beispiel #3
0
        public OBDParameterValue GetPIDSupport(OBDResponse response)
        {
            OBDParameterValue value2 = new OBDParameterValue();

            if (response.GetDataByteCount() < 4)
            {
                value2.ErrorDetected = true;
                return(value2);
            }
            int dataA = Utility.Hex2Int(response.GetDataByte(0));
            int dataB = Utility.Hex2Int(response.GetDataByte(1));
            int dataC = Utility.Hex2Int(response.GetDataByte(2));
            int dataD = Utility.Hex2Int(response.GetDataByte(3));

            value2.SetBitFlagBAT(dataA, dataB, dataC, dataD);
            return(value2);
        }