Showing posts with label fit file format. Show all posts
Showing posts with label fit file format. Show all posts

Sunday, 10 May 2020

Di2 Fit File Decoder V1.1.0.4

Just a small update to add the distance ridden in each gear combination:


No other changes (some very minor code tweaks only)

Installer file available from this link

Saturday, 18 April 2020

Di2 Fit File Decoder V1.1.1

Di2 Fit File Decoder V1.1.1 - Another Update April 2020

This is a small (traditional) Windows desktop application written in C#/.Net to decode a .fit file and extract the data from Shimano Di2 Gearshifting. This gear shift data is monitored using (in my case) the SM-EWW01 unit connected in series with the normal cable routing:



The application was started because I want to plot the gear data in my (much bigger) Strava data extraction tool, so the first step was to get the data and understand it

The fit file format information and sample C# code came from the Ant+ working group (Link) - you need to register, but it's free.

Using the sample console code to decode a fit file I was able to build a simple Windows application to get the gear shift data ("event data"), and the time based data (i.e. the "record "data). I then plotted this data against time/distance in  aline chart, displayed it in a data table and created a simple bar chart/histogram plot of the distribution of time/count in each gear combination.

Version 1 used file storage and V1.1 used a SQL database (as I was more familiar with these having used one for my main Strava Application. I left the code at V1.1 for a while whilst I went back to the Strava application and made some further updates. These were mostly in improving the code quality and readbility based on some learning that I gained from this Di2 application.

However this got the Strava Application up to a better level so I went back to the Di2 Application again to make some further updates to make it easier to bring the relevant code into the Strava application. This includes
  • finding why the database size was so large and fixing it to an extent
  • general minor bug fixes
  • some UI improvements
  • allowing the user to select pre-saved data from the Database and displaying it
  • ability to load and process multiple files simultaneously (i.e. select a whole directory of files)
  • a new feature to display a total time/count bar chart for shifts.

The Application can be downloaded from here (It's an installer file)

The other posts about this software are:
First Release: Here
Second Release: Here

Sunday, 17 November 2019

Di2 Fit File Decoder V1.1.0

See the latest version here: V1.1.0.4 

My application (Di2 Fit File Decoder) has had a minor update. In this release (V1.1.0) it now uses a MS SQL database to store the data. This uses more disk space but is easier to store the data and also extract it in other ways that are better and easier than using file based methods

Updates
Data Stored in SQL data base (Fit_File_data.mdb)
Additional data tab now added for displaying the Fit File contents in a tabular format
The Time/distance graph of the shift date is now a tab in its own right
The Time/distance graph now correctly updates
Export of the shift summary data (time/count) enabled
Some coding improvements (tidier code, some compiler information issues addressed)

Still to do
Improved error handling
Investigate why 3 text files containing the shift data totalling ~12KByte results in a SQL database of ~73MByte

I'll continue to tweak the code but the next steps are to incorporate this code as part of my Strava data application - I have learnt more and implemented some code in this application that will improve the Strava data application and make some steps to improve the readability - I have developed the code for the application on the fly and its becoming a bit of a monster to maintain and develop to be honest and I can see some improvements to apply that will improve this

As before there are 2 links  - 1 for the standalone exe file and one for the .Net (C#) project:

Exe file Link 
.Net project Link - I am more than grateful to recieve any feedback on the code

The code is provided completely "as-is" with no warranty

I have developed it to meet a personal interest in the data and to develop my software skills - I am a mechanical engineer NOT a software engineer

Updated Screenshots: