Polar HRM
What’s this?
The Polar S7xx family of bike computers has a handy feature that allows you to download your exercise data to a PC running Windows. Thanks to the work of Dave Bailey, the Polar family now runs on Linux, too. Dave provided software to read Polar data into the PC and to display it in graphs. Later, he added a Perl interface to the library that makes his work accessible from scripts.
srdgraph
I am not really the greatest Perl programmer in the world, but there were a few things I didn’t like about Dave’s graphs: they are fixed size, which means a short ride gets the same width as a really long one, and that the altitude changes are not reflected in the graphs. This means that a ride with an elevation gain of 100 feet may look on a graph just as steep as one across the Sierras.
So far so good. Turns out, though, that the Perl script to create the graphs that I wanted was really short. Even after I added a few twists (like stitching workouts together for those pesky days when the monitor decides that your ‘short’ rest warrants a new workout), it ran just above 4k. How’s that for efficiency? (more…)
Reading Windows HRM Files
Some of us have started working out on the Polar series before Dave had completed his software. Then we are stuck with two different file formats that are entirely incompatible, since the Windows software saves a stripped down amount of information into files with the extension .hrm after download.
The HRM file structure is fairly well documented in a related project, called Polar Viewer. The author, Stefan Saring, did a wonderful job of creating a C# UI for the viewer using the MONO project framework. If you can use that, please do so – the UI is much easier to use than the text mode utilities here. I found getting Mono to run a little awkward, and I wanted automatic generation of web pages (see project HTML Tree), so I wrote an extension to the srd utilities to get the job done. (more…)
If you want to read up on the file format of HRM files, or if you want to contribute to decoding them, please check here.