private void testPIDClassBTN_Click(object sender, EventArgs e) { ObdPid op = new ObdPid(); op.Mode = "01"; op.PID = "0C"; op.Description = "Engine RPM"; op.Formula = "(256 * A + B) / 4"; op.Response = "10 20"; addRxTxMessage(op.Val); List <ObdPid> obdlist = new List <ObdPid>(); obdlist.Add(op); int opindex = obdlist.FindIndex(obdpid => obdpid.Mode.Equals("01") && obdpid.PID.Equals("0C")); ObdPid opfound = obdlist.Find(delegate(ObdPid found) { return(found.PID == "0C"); }); addRxTxMessage("" + opfound.Description + " " + opindex.ToString()); OBDSpecialPID test = new OBDSpecialPID(); test.pid0101("81076504"); }
private void testPIDClassBTN_Click(object sender, EventArgs e) { ObdPid op = new ObdPid(); op.Mode = "01"; op.PID = "0C"; op.Description = "Engine RPM"; op.Formula = "(256 * A + B) / 4"; op.Response = "10 20"; addRxTxMessage(op.Val); List<ObdPid> obdlist = new List<ObdPid>(); obdlist.Add(op); int opindex = obdlist.FindIndex(obdpid => obdpid.Mode.Equals("01") && obdpid.PID.Equals("0C")); ObdPid opfound = obdlist.Find(delegate(ObdPid found) { return found.PID == "0C"; }); addRxTxMessage("" + opfound.Description + " " + opindex.ToString()); OBDSpecialPID test = new OBDSpecialPID(); test.pid0101("81076504"); }
private void responseParser(string response) { string responseTrim = Regex.Replace(response.TrimStart(new char[] { '?', '>', ' ' }).TrimEnd(new char[] { '?', '>', ' ' }).Trim(), " ", ""); int resint = 0; string checkResponse = ""; if (responseTrim.Length > 4) { checkResponse = responseTrim.Substring(0, 4); if (responseTrim.Substring(0, 2) == "43") checkResponse = responseTrim.Substring(0, 2); if (responseTrim.Substring(0, 2) == "41") resint = int.Parse(responseTrim.Substring(4, responseTrim.Length - 4), System.Globalization.NumberStyles.HexNumber); if (responseTrim.Substring(0, 2) == "91") checkResponse = responseTrim.Substring(0, 6); } OBDSpecialPID obdPids = new OBDSpecialPID(); switch (checkResponse) { case "43": string responseTrimSUb = responseTrim.Substring(2, 12); List<string> tcodes = obdPids.TroubleCodes(responseTrimSUb); foreach (string tCode in tcodes) { addRxTxMessage(tCode + ""); } break; case "Batt": if (outVoltageTB.InvokeRequired) { outVoltageTB.Invoke(new EventHandler( delegate { outVoltageTB.Text = responseTrim.TrimStart(new char[] { 'A', 'T', 'R', 'V', ' ' }); })); } else { outVoltageTB.Text = responseTrim.TrimStart(new char[] { 'A', 'T', 'R', 'V', ' ' }); } break; case "4100": checkPIDs(responseTrim.Substring(4, responseTrim.Length - 4), 0); break; case "4120": checkPIDs(responseTrim.Substring(4, responseTrim.Length - 4), 0x20); break; case "4140": checkPIDs(responseTrim.Substring(4, responseTrim.Length - 4), 0x40); break; case "910000": checkPIDs(responseTrim.Substring(6, responseTrim.Length - 6), 0); break; case "4101": OBDSpecialPID.EngineStatus stat = obdPids.pid0101(responseTrim.Substring(4, responseTrim.Length - 4)); addRxTxMessage("MIL Active: " + stat.MILActive.ToString(), Color.PowderBlue); addRxTxMessage("Trouble Code Count: " + stat.TroubleCodeCount.ToString() + "", Color.PowderBlue); addRxTxMessage("AC Refrigerant\r\nAvailable: " + stat.ACRefrigerant.Available + " Passed: " + stat.ACRefrigerant.Passed, Color.PowderBlue); addRxTxMessage("Catalyst\r\nAvailable: " + stat.Catalyst.Available + " Passed: " + stat.Catalyst.Passed, Color.PowderBlue); addRxTxMessage("CatalystHeated\r\nAvailable: " + stat.CatalystHeated.Available + " Passed: " + stat.CatalystHeated.Passed, Color.PowderBlue); addRxTxMessage("Components\r\nAvailable: " + stat.Components.Available + " Passed: " + stat.Components.Passed, Color.PowderBlue); addRxTxMessage("EGRSystem\r\nAvailable: " + stat.EGRSystem.Available + " Passed: " + stat.EGRSystem.Passed, Color.PowderBlue); addRxTxMessage("EvapSystem\r\nAvailable: " + stat.EvapSystem.Available + " Passed: " + stat.EvapSystem.Passed, Color.PowderBlue); addRxTxMessage("FuelSystem\r\nAvailable: " + stat.FuelSystem.Available + " Passed: " + stat.FuelSystem.Passed, Color.PowderBlue); addRxTxMessage("Misfire\r\nAvailable: " + stat.Misfire.Available + " Passed: " + stat.Misfire.Passed, Color.PowderBlue); addRxTxMessage("O2Sensor\r\nAvailable: " + stat.O2Sensor.Available + " Passed: " + stat.O2Sensor.Passed, Color.PowderBlue); addRxTxMessage("O2SensorHeater\r\nAvailable: " + stat.O2SensorHeater.Available + " Passed: " + stat.O2SensorHeater.Passed, Color.PowderBlue); addRxTxMessage("Reserved\r\nAvailable: " + stat.Reserved.Available + " Passed: " + stat.Reserved.Passed, Color.PowderBlue); addRxTxMessage("SecondaryAirSystem: " + stat.SecondaryAirSystem.Available + " Passed: " + stat.SecondaryAirSystem.Passed, Color.PowderBlue); //if ((resint & uint.Parse("", System.Globalization.NumberStyles.HexNumber); break; case "4103": addRxTxMessage(obdPids.pid0103(responseTrim.Substring(4, 2))); break; case "4104": int calcLoad = resint * 100 / 255; addRxTxMessage("" + calcLoad.ToString() + "% Engine Load"); break; case "4105": int tempC = resint - 40; int tempF = (9 * tempC / 5) + 32; addRxTxMessage("" + tempC.ToString() + " C coolant Temp"); addRxTxMessage("" + tempF.ToString() + " F coolant Temp"); break; case "4106": int trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% STFT Bank 1"); break; case "4107": trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% LTFT Bank 1"); break; case "4108": trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% STFT Bank 2"); break; case "4109": trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% LTFT Bank 2"); break; case "410A": int val = (resint - 128) * 100 / 128; addRxTxMessage("" + val.ToString() + " kPa Fuel Pressure"); break; case "410B": addRxTxMessage("" + resint.ToString() + " kPa MAP"); break; case "410C": val = (int)(resint / 4); addRxTxMessage("" + val.ToString() + " RPM"); setRPMGauge((float)(resint / 4)); break; case "410D": addRxTxMessage("" + resint.ToString() + " km/H "); break; case "410E": val = (resint / 2) - 64; addRxTxMessage("" + val.ToString() + " Degrees Advance"); break; case "410F": tempC = resint - 40; tempF = (9 * tempC / 5) + 32; addRxTxMessage("" + tempC.ToString() + " C Intake Temp"); addRxTxMessage("" + tempF.ToString() + " F Intake Temp"); break; case "4110": val = (resint / 100); addRxTxMessage("" + val.ToString() + " g/s MAF"); break; case "4111": val = resint * 100 / 255; addRxTxMessage("" + val.ToString() + "% Throttle"); break; case "4112": addRxTxMessage(obdPids.pid0112(responseTrim.Substring(4, responseTrim.Length - 4))); break; case "411C": addRxTxMessage(obdPids.pid011C(responseTrim.Substring(4, responseTrim.Length - 4))); break; default: //addRxTxMessage(response, Color.Lime); break; } }
private void responseParser(string response) { string responseTrim = Regex.Replace(response.TrimStart(new char[] { '?', '>', ' ' }).TrimEnd(new char[] { '?', '>', ' ' }).Trim(), " ", ""); int resint = 0; string checkResponse = ""; if (responseTrim.Length > 4) { checkResponse = responseTrim.Substring(0, 4); if (responseTrim.Substring(0, 2) == "43") { checkResponse = responseTrim.Substring(0, 2); } if (responseTrim.Substring(0, 2) == "41") { resint = int.Parse(responseTrim.Substring(4, responseTrim.Length - 4), System.Globalization.NumberStyles.HexNumber); } if (responseTrim.Substring(0, 2) == "91") { checkResponse = responseTrim.Substring(0, 6); } } OBDSpecialPID obdPids = new OBDSpecialPID(); switch (checkResponse) { case "43": string responseTrimSUb = responseTrim.Substring(2, 12); List <string> tcodes = obdPids.TroubleCodes(responseTrimSUb); foreach (string tCode in tcodes) { addRxTxMessage(tCode + ""); } break; case "Batt": if (outVoltageTB.InvokeRequired) { outVoltageTB.Invoke(new EventHandler( delegate { outVoltageTB.Text = responseTrim.TrimStart(new char[] { 'A', 'T', 'R', 'V', ' ' }); })); } else { outVoltageTB.Text = responseTrim.TrimStart(new char[] { 'A', 'T', 'R', 'V', ' ' }); } break; case "4100": checkPIDs(responseTrim.Substring(4, responseTrim.Length - 4), 0); break; case "4120": checkPIDs(responseTrim.Substring(4, responseTrim.Length - 4), 0x20); break; case "4140": checkPIDs(responseTrim.Substring(4, responseTrim.Length - 4), 0x40); break; case "910000": checkPIDs(responseTrim.Substring(6, responseTrim.Length - 6), 0); break; case "4101": OBDSpecialPID.EngineStatus stat = obdPids.pid0101(responseTrim.Substring(4, responseTrim.Length - 4)); addRxTxMessage("MIL Active: " + stat.MILActive.ToString(), Color.PowderBlue); addRxTxMessage("Trouble Code Count: " + stat.TroubleCodeCount.ToString() + "", Color.PowderBlue); addRxTxMessage("AC Refrigerant\r\nAvailable: " + stat.ACRefrigerant.Available + " Passed: " + stat.ACRefrigerant.Passed, Color.PowderBlue); addRxTxMessage("Catalyst\r\nAvailable: " + stat.Catalyst.Available + " Passed: " + stat.Catalyst.Passed, Color.PowderBlue); addRxTxMessage("CatalystHeated\r\nAvailable: " + stat.CatalystHeated.Available + " Passed: " + stat.CatalystHeated.Passed, Color.PowderBlue); addRxTxMessage("Components\r\nAvailable: " + stat.Components.Available + " Passed: " + stat.Components.Passed, Color.PowderBlue); addRxTxMessage("EGRSystem\r\nAvailable: " + stat.EGRSystem.Available + " Passed: " + stat.EGRSystem.Passed, Color.PowderBlue); addRxTxMessage("EvapSystem\r\nAvailable: " + stat.EvapSystem.Available + " Passed: " + stat.EvapSystem.Passed, Color.PowderBlue); addRxTxMessage("FuelSystem\r\nAvailable: " + stat.FuelSystem.Available + " Passed: " + stat.FuelSystem.Passed, Color.PowderBlue); addRxTxMessage("Misfire\r\nAvailable: " + stat.Misfire.Available + " Passed: " + stat.Misfire.Passed, Color.PowderBlue); addRxTxMessage("O2Sensor\r\nAvailable: " + stat.O2Sensor.Available + " Passed: " + stat.O2Sensor.Passed, Color.PowderBlue); addRxTxMessage("O2SensorHeater\r\nAvailable: " + stat.O2SensorHeater.Available + " Passed: " + stat.O2SensorHeater.Passed, Color.PowderBlue); addRxTxMessage("Reserved\r\nAvailable: " + stat.Reserved.Available + " Passed: " + stat.Reserved.Passed, Color.PowderBlue); addRxTxMessage("SecondaryAirSystem: " + stat.SecondaryAirSystem.Available + " Passed: " + stat.SecondaryAirSystem.Passed, Color.PowderBlue); //if ((resint & uint.Parse("", System.Globalization.NumberStyles.HexNumber); break; case "4103": addRxTxMessage(obdPids.pid0103(responseTrim.Substring(4, 2))); break; case "4104": int calcLoad = resint * 100 / 255; addRxTxMessage("" + calcLoad.ToString() + "% Engine Load"); break; case "4105": int tempC = resint - 40; int tempF = (9 * tempC / 5) + 32; addRxTxMessage("" + tempC.ToString() + " C coolant Temp"); addRxTxMessage("" + tempF.ToString() + " F coolant Temp"); break; case "4106": int trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% STFT Bank 1"); break; case "4107": trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% LTFT Bank 1"); break; case "4108": trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% STFT Bank 2"); break; case "4109": trim = (resint - 128) * 100 / 128; addRxTxMessage("" + trim.ToString() + "% LTFT Bank 2"); break; case "410A": int val = (resint - 128) * 100 / 128; addRxTxMessage("" + val.ToString() + " kPa Fuel Pressure"); break; case "410B": addRxTxMessage("" + resint.ToString() + " kPa MAP"); break; case "410C": val = (int)(resint / 4); addRxTxMessage("" + val.ToString() + " RPM"); setRPMGauge((float)(resint / 4)); break; case "410D": addRxTxMessage("" + resint.ToString() + " km/H "); break; case "410E": val = (resint / 2) - 64; addRxTxMessage("" + val.ToString() + " Degrees Advance"); break; case "410F": tempC = resint - 40; tempF = (9 * tempC / 5) + 32; addRxTxMessage("" + tempC.ToString() + " C Intake Temp"); addRxTxMessage("" + tempF.ToString() + " F Intake Temp"); break; case "4110": val = (resint / 100); addRxTxMessage("" + val.ToString() + " g/s MAF"); break; case "4111": val = resint * 100 / 255; addRxTxMessage("" + val.ToString() + "% Throttle"); break; case "4112": addRxTxMessage(obdPids.pid0112(responseTrim.Substring(4, responseTrim.Length - 4))); break; case "411C": addRxTxMessage(obdPids.pid011C(responseTrim.Substring(4, responseTrim.Length - 4))); break; default: //addRxTxMessage(response, Color.Lime); break; } }