It seems feasible to write a proxy and transcribe all communication between the software on Windows host and device behind USB-UART bridge.
Once protocol and data format are established, code can be written to fetch data.
There are choices as how to organize things. At first it seems natural to use a database to store all results. However the question is what DB to use? Or shall we use ODBC to support virtually all? If we use sqlite, we can access data with HTML5.
At the end I came to conclusion that there is nothing better than plain CSV files named after tracks. All can be enumerated, some deleted, are human-readable, and can be accessed from other software easily.
The problem would be how to get overall statistics? Like it would be sweet to use R to see trends in progress across multiple runs.
In the end I'd like to see everything modularized such that same code can be reused with GUI for download progress, or built into a larger app.
Right now there are few independent components (with some code duplication like in download.py and settings.py :( )
- download.py is the main program to extract tracks, laps, points
- settings.py extracts all settings that can be fetched, like time zone threshold, user information, etc
- babelize.cmd is a hook script that optionally can be called by donload.py. It contains commands to execute for each track fetched.
- schwinn810.cmd is a convenience script to reduce amount of typing necessary to provide download.py with options
- csv2tcx.py converts laps & points into a single TCX file (gpsbabel lacks laps support)
- tcx2garmin, mmr_uploader are "templates" on how TCX could be uploaded automatically from babelize.cmd . For now, refer to source code.
Batch/shell scripts babelize and schwinn810 can be renamed for convenience.
Please follow this guide.
There is a ppa available with package for Oneiric Ocelot. Install as any other package. Use
dpkg-reconfigure -plow schwinn810 to change settings.
Just using up-to-date code
At these early stages, I'd recommend to use python source code and do not do compilation into binaries. However, if you don't feel like installing tons of stuff on Windows, refer to download section. I upload binary builds for MS Windows from time to time.
To make Windows redistributable
- Install Python 2.7 (preffered) or 3.2, pip, pyserial, cx_Freeze, and pytz.
ExecuteRefer to setup.py and distutils manual on how to build
cxfreeze --compress --include-modules serial.win32 download.py --target-dir dist
At this point one should not expect an exact copy of software for other OSes.
Code proxy and transcribe communication making it possible for others to develop software independently.
- Improve data format details.
Write some python (?) code that dumps data from serial port into CSV Make it more unicsv-friendly so gpsbabel can convert data to GPX and/or TCX.
- Write some GUI, R code
- Export to various web sites
Move command line options to a configuration file and make things debconf friendly