Update time!
Making progress on the diagnostic application, currently dubbed as OBDXplorer.
Past week has been working out the layout of the program and the overall flow to ensure I do not end up with a major design flaw once beginning the core implementation.
Currently up to the following:
1) Majority of screens/design has been completed
2) OBDX Scantool auto detect and connection implemented, still need to do an auto detect ECU method.
3) Template class/function setup to deal with DPID implementation for both VPW and CANBus ecus.
4) Template screen for DTC fault reading and clearing - I would like to also implement Freeze data into this.
The data logging view has a few different screens to move between which include:
1) Dash - gauges and bars plus small graph view
2) Graph - Large graph with ability to enable/disable live data parameters (May configure to allow more then 1 graph)
3) List view - all data in a list, shows max and min values and can be setup to trigger coloured boxes depending on received value
4) Advanced 3 param graph logging - 2 parameters with fixed values are placed on X and Y, and the third (Z) axis is logged to the actual input cells.
Just found out the hard way, that there is a dedicated heat map that I could have used instead of trying to make a datagrid color format, so a bit of wasted time, but least this will work out
much better and cleaner.
Todays job is completing the ECU auto detect routine and complete the following:
1) Get VIN
2) Get Serial
3) Get OS
4) Scan vehicle for supports PIDs - optional, can take a min or so depending on size of data list.
The last scan is optional, as the application will check against its local records if a vehicle with matching VIN/Serial/OS has already been connected before, and use that for its supported PID list
I then need to finish off the PID saving into either a JSON or XML format so they can be instantly imported into a full list. This will also be used for user defined parmeters which can be also be added manually. Ontop of that is finding a math parser which will deal with a multi bit encoded parameter to allow selecting different options per enabled bit. Some of these seem to accept a "if ((Y & bit)/(2^bit)) then blah elseif blah blah" statements, so this would allow isolating exact bits and rotating right to detect if 0 or 1.
Some PIDs like the Auxilary Inputs/Outputs are bit encoded with multiple different items, such as "Power take off output supported" and "Manual trans neutral gear supported" ect, so its basically like having multiple PIDs inside a single PID, these may need to be entered individually with the same PID value, but different calc to indicate the option. It will then be a matter of making sure the PID is not added twice to the DPID frame. If each of the gauges/displays are data bound to their respective PID object, then they should instantly update as soon as the received data bytes are parsed into the PID object and calculated (fingers crossed that works!).
So... lots to do! Hopefully no more then a couple weeks.
- obdxplorer home screen.PNG (77.5 KiB) Viewed 3950 times
- obdxplorer dashdisplay.PNG (268.52 KiB) Viewed 3950 times
- obdxplorer colourmap.PNG (111.36 KiB) Viewed 3950 times