13 个不稳定版本
0.7.0 | 2024年3月20日 |
---|---|
0.6.1 | 2023年9月5日 |
0.6.0 | 2023年6月3日 |
0.5.1 | 2022年8月31日 |
0.2.0 | 2020年6月4日 |
#394 在 解析器实现 中
每月下载量 238
3MB
95K SLoC
Fitparser
概述
解析 FIT 格式的文件并使用 Serde 导出其内容。此代码受到了 python-fitparse 模块的极大启发,并使用了由 ANT 维护的 Fit 文件 SDK 定义的规范。
该 crate 的目标是根据定义的 FIT 配置文件解析有效的 FIT 文件,并将它们的数据导出为更易用的格式。为此,我们利用了 Serde 框架,允许最终用户将数据导出为满足他们需求的任何格式。此库提供了一个 fit_to_json
示例可执行文件,作为使用 Serde 实现其他序列化格式的模板。
注意
- 此库目前 不支持 编写 FIT 文件。
- 带有开发者数据字段的文件可以被解析,但开发者字段将被删除。
- Fit SDK 由 Garmin/Ant 定期更新,此库可能不是最新的;请检查
src/profile/messages.rs
中的打包版本。提交一个问题,我会很高兴更新它!
用法
有关完整的使用信息,请参阅 docs.rs/fitparser 中的库文档。下面是调用解析器对 FIT 文件进行操作的基本示例。
use fitparser;
use std::fs::File;
use std::io::prelude::*;
println!("Parsing FIT files using Profile version: {}", fitparser::profile::VERSION);
let mut fp = File::open("tests/fixtures/Activity.fit")?;
for data in fitparser::from_reader(&mut fp)? {
// print the data in FIT file
println!("{:#?}", data);
}
对于更底层的反序列化过程控制,例如从流数据源读取,您可以使用 de::FitStreamProcessor
结构。请参阅 streaming.rs
示例文件以获取基本用法和手动处理 FitObject
变体的说明。
还提供了其他解码选项,可以自定义解析器的输出。请参阅 fitparser/src/de/mod.rs
的源代码以查看所有选项(或查看 crate 文档)。fit_to_json
示例程序也演示了目前所有可用的选项。
更新 FIT 配置文件
所有FIT文件都是根据可定制的配置文件生成的。此处使用的配置文件来自ANT的官方SDK,可以通过以下链接访问:这里。cargo build命令期望环境变量FIT_PROFILE
设置为所需的Profile.xlsx文件路径,并将变量FIT_PROFILE_VERSION
设置为适当的版本。为了简化更新过程,提供了一个脚本./bin/update_profile.sh
,该脚本接受配置文件路径作为第一个参数,并可选地接受配置版本作为第二个参数。如果Profile.xlsx文件的路径包含FitSDKRelease_XX.YY.ZZ
,则可以省略版本号。
./bin/update_profile.sh ~/Downloads/FitSDKRelease_21.40.00/Profile.xlsx
构建库不需要配置文件,因为生成的文件已提交到仓库。只有在需要支持自定义扩展或ANT发布更新版本时,才需要更新配置文件。
依赖关系
~2.1–3MB
~59K SLoC