/// <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); }
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(); }