First there are several discussions about custom dashboard viewers. If you search you should find them.
What you want to do will involve writing robot side code to send the data, and writing a PC application to decode it. There isn't any official documentation of the protocol, but I am in the processor of documenting it.
You can find my documentation on
my CodePlex page under the most resent release. That release should also include a C++ function which demonstrates sending custom data via the dashboard packets.
You should be able to implement simple battery monitoring from the battery voltage which is always included in the dashboard packets.