Datalogger I'm working on
Posted: Thu Jun 01, 2006 11:32 am
Just in case anyone is interested, I have come a long way with my datalogger. I originally started this as a way to dig in to the ECU and just as a homework project to learn C#. The focus is on correctness and ease of implementation, I knew I defininately was not going to use c or c++, now that I think about it perhaps python would have been better.
However here is what I have implemented:
1. XML based definitions for all items, you can add and remove items at will.
2. Object oriented abstraction of all lower levels functions, protocol structure, etc.
2. Multithreaded model that moves each function into a prioritized thread with queing functionality. The focus is on communicating with the ECU as fast as the serial port will allow (and as accurately timed as possible), and offloading processing to lower priority threads. Data is que-able to the limits of system ram, so in effect all other processing is infinitely deferrable.
3. Virtual register implementation, information such as current gear, acceleration, torque, horsepower, etc are calculated. (This is waaay harder than one might think)
4. Virtual gauge display. I designed a GDI+ gauge control that looks almost indestinguishable from the 05 LGT gauges, full vector graphics, anti-aliased, etc, quite trick.
I still have a few things I want to do like cleaning up some of the classes, some things are kind of hacks since the proper way to do things isn't always clear. Also I need to implement high performance counters, currently it is only really accurate to 1 ms resolution. Ideally new functionality is just lines of code away because of abstraction. i.e. if I ever get my hands on a SSM Also interpolated gauges would be nice 60fps > 10-20fps, heh
I still haven't decided what I want to do with it :/ *shrug*
However here is what I have implemented:
1. XML based definitions for all items, you can add and remove items at will.
2. Object oriented abstraction of all lower levels functions, protocol structure, etc.
2. Multithreaded model that moves each function into a prioritized thread with queing functionality. The focus is on communicating with the ECU as fast as the serial port will allow (and as accurately timed as possible), and offloading processing to lower priority threads. Data is que-able to the limits of system ram, so in effect all other processing is infinitely deferrable.
3. Virtual register implementation, information such as current gear, acceleration, torque, horsepower, etc are calculated. (This is waaay harder than one might think)
4. Virtual gauge display. I designed a GDI+ gauge control that looks almost indestinguishable from the 05 LGT gauges, full vector graphics, anti-aliased, etc, quite trick.
I still have a few things I want to do like cleaning up some of the classes, some things are kind of hacks since the proper way to do things isn't always clear. Also I need to implement high performance counters, currently it is only really accurate to 1 ms resolution. Ideally new functionality is just lines of code away because of abstraction. i.e. if I ever get my hands on a SSM Also interpolated gauges would be nice 60fps > 10-20fps, heh
I still haven't decided what I want to do with it :/ *shrug*