Ejemplo n.º 1
0
        /// <summary>
        /// 从报文提取 OBD状态
        /// </summary>
        /// <param name="packet">报文</param>
        /// <returns>OBD状态</returns>
        public static Models.Feedback.OBDState ToODBState(byte[] packet)
        {
            //var data = packet.PacketData(1).ToArray();
            //var model = new Models.Feedback.OBDState();
            //model.ConnectState = ValueConvert.ODBConnectSateFrom(data[0]);
            //model.FailuresCount = data[1];
            //model.Bank1ShortCorrection = ValueConvert.ConvetToSbyteSafe(data[2]);
            //model.Bank1LongCorrection = ValueConvert.ConvetToSbyteSafe(data[3]);
            //model.Bank2ShortCorrection = ValueConvert.ConvetToSbyteSafe(data[4]);
            //model.Bank2LongCorrection = ValueConvert.ConvetToSbyteSafe(data[5]);
            //return model;
            var data  = packet.PacketData(1).ToArray();
            var model = new Models.Feedback.OBDState();

            model.ConnectState         = ValueConvert.ODBConnectSateFrom(data[0]);
            model.FailuresCount        = data[2];
            model.Bank1ShortCorrection = (float)Math.Round(((float)data[6] - 128) / 1.28f, 1);
            model.Bank1LongCorrection  = (float)Math.Round(((float)data[7] - 128) / 1.28f, 1);
            model.Bank2ShortCorrection = (float)Math.Round(((float)data[8] - 128) / 1.28f, 1);
            model.Bank2LongCorrection  = (float)Math.Round(((float)data[9] - 128) / 1.28f, 1);
            model.Bank1Oxygen          = (float)Math.Round((float)data[10] * 0.005f, 2);
            if (data.Count() >= 13)
            {
                model.GasCorrection = (SByte)data[12];
            }
            return(model);
        }
Ejemplo n.º 2
0
        private void ProcessODBState(Models.Feedback.OBDState model)
        {
            switch (model.ConnectState)
            {
            case IGT.Models.Enums.OBDConnectState.Init:
                labOBDConnectValue.Text = LangWords["419"]; break;

            case IGT.Models.Enums.OBDConnectState.Connecting:
                labOBDConnectValue.Text = LangWords["420"]; break;

            case IGT.Models.Enums.OBDConnectState.Connected:
                labOBDConnectValue.Text = LangWords["421"]; break;

            case IGT.Models.Enums.OBDConnectState.NoConnect:
                labOBDConnectValue.Text = LangWords["422"]; break;

            case IGT.Models.Enums.OBDConnectState.Error:
                labOBDConnectValue.Text = LangWords["423"]; break;
            }
            labOBDErrorValue.Text       = model.FailuresCount == 0 ? LangWords["426"] : LangWords["425"];
            rtdlOBDBank1Short.ValueText = model.Bank1ShortCorrection.ToString();
            rtdlOBDBank1Long.ValueText  = model.Bank1LongCorrection.ToString();
            rtdlBank1Oxygen.ValueText   = model.Bank1Oxygen.ToString();
            rtdlGasCorrection.ValueText = model.GasCorrection.ToString();
        }