No announcement yet.

An easier way to write software that interacts with your vehicle

  • Filter
  • Time
  • Show
Clear All
new posts

  • An easier way to write software that interacts with your vehicle

    If you are writing software to interact with your car (e.g. read OBD data, read non-OBD data, actuate devices on your car, etc.), then you know the complexity involved in dealing with the idiosyncracies of various vehicle connection hardware devices (e.g. J2534 devices, ELM, A2D devices, etc.) as well as the "message diversity" among vehicles.

    If you would like to focus on the neat stuff your software can do with easy vehicle interaction, rather than spending time solving the messy infrastructure problems described above, then you might be interested in looking at the Cardix vehicle interaction programming model.

    What does "vehicle interaction" mean? It means reading standard legislated OBD data, as well as sensing events and states such as door ajar, gear selection, seat occupants, wheel speed, steering wheel angle, etc. It also means actuating things like door locks, windows, entertainment & HVAC controls, side-view mirrors, etc.

    Here's how easy is it to get OBD data with Cardix on any consumer vehicle with any supported vehicle connection device:

    public void method()
    ICardix iVehicle = null;
    IVehicleOBD iobd = null;

    iVehicle = CardixLoader.LoadCardix();
    iobd = iVehicle.VehicleInterface as IVehicleOBD;
    iobd.OnOBDPowertrainDataReceived += new OBDPowertrainDataReceived(handlePTData);

    iobd.RequestPowertrainData(new OBD_SVCID_01_02_ParameterID[] { OBD_SVCID_01_02_ParameterID.EngineRPM });



    // This method handles incoming OBD data from the vehicle
    private void handlePTData(byte sourceECU, OBD_SVCID_01_02_ParameterID pid, object data, ulong timestamp)
    Trace.WriteLine("From ECU=0x" + sourceECU.ToString("x2") + " with timestamp=" + timestamp.ToString() + ": PID=" + pid.ToString() + ", data=" + data.ToString());

    } // end-method


    // And to do something such as unlock the doors, you would do this:

    IConvenience iconv = null;
    iconv = iVehicle.VehicleInterface as IConvenience;

    iconv.Actuate_DoorLock(IVSDoorID.FrontLeft, false);

    ================================================== ========

    For more information and an evaluation download, go to