#fit #运动 #阅读 #生成 #解码 #设备 #garmin

fit-sdk

一个用于读取和解析由运动设备生成的FIT文件的轻量级crate。

1个不稳定版本

0.1.0 2019年3月31日

#8 in #garmin

MIT许可证

46KB
829

Fit

Fit是一个用于读取和解析由各种运动设备生成的FIT文件的轻量级crate。目前它已被专门设计用于读取Garmin Edges 1000和520以及Wahoo Elemnt生成的文件。它可能在没有问题的情况下适用于其他文件源,但除非是Garmin自行车电脑,否则可能不会100%完美地工作。

当前的API非常基础,基本上只有一个方法,该方法生成一个迭代器,该迭代器返回一个Message结构体的流。

重大变更!

从v0.5版本开始,此crate提供Message迭代器,而不是包含Vec<Message>的结构体。

安装

[dependencies]
fit = "0.5"

用法

extern crate fit;

use std::path::PathBuf;
use fit::Fit;

fn main() {
    let filepath = PathBuf::from("fits/2913547417.fit");
    let f = Fit::new(&filepath);
    for m in f {
	println!("Read a message of type {}", m.kind);
    }
}

一个典型的Message看起来可能像这样

Message {
  kind: Record,
  values: [
    DataField { field_num: 253, value: Time(1480856114) },
    DataField { field_num: 0,   value: F32(57.710945)   },
    DataField { field_num: 1,   value: F32(11.9945755)  },
    DataField { field_num: 5,   value: U32(1151)        },
    DataField { field_num: 29,  value: U32(0)           },
    DataField { field_num: 2,   value: U16(2394)        },
    DataField { field_num: 6,   value: U16(0)           },
    DataField { field_num: 7,   value: U16(0)           },
    DataField { field_num: 61,  value: U16(2234)        },
    DataField { field_num: 66,  value: I16(442)         },
    DataField { field_num: 3,   value: U8(113)          },
    DataField { field_num: 13,  value: I8(21)           }
  ],
  dev_values: None
}

Value枚举是围绕大多数Rust原生类型(如u16、i64或f32)的简单包装。

需要注意的一些事情

  • 速度以m/s记录,而不是kph。

贡献

欢迎在GitHub上提交bug报告和pull请求:https://github.com/richardbrodie/fit-rs

许可证

此crate在MIT许可证下作为开源软件提供。

无运行时依赖

~230KB