I did one in C/C++ back in 2000. It worked pretty well and I believe some people had some luck with it. In general most people found Dashboard Viewers to be unneeded but I'm sure some people found them useful. I know that Nate Smith did a version in Visual Basic.
My program, including source code, can be found at
http://www.bcpl.net/~mleese/dashboard.html
I did my Dashboard Viewer in two separate components. One was the graphical interface and the other was the library for reading from the dashboard port. I tried my best to abstract out the library for the interface as much as possible. The GUI is in C++ built with MFCs (because it was fast and I wanted a quick GUI). The library is written in straight C. They both have a dependency on the Win32 library. Someone (I forget their name but probably have it around somewhere) was kind enough to provide Java bindings for the library. That's not included with the source code above but I have it sitting on my harddrive if you're interested.
If you want a technical description of what I developed, feel free to ask. I can walk you through most of it as it isn't terribly complex. It does however use both Serial Port programming and Multithreading (the multithreading is done fairly badly but I haven't updated it since I learned better

). Anyway, I hope some of this helps.
Matt