예제 #1
0
        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");
        }
예제 #2
0
        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");
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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;
            }
        }