ROWFILE/1
.rowfile 在一个文件里保存一次完整的划船训练。Row Smarter 现在就能导出和导入它。它在无损训练记录之外,还包含供电子表格和训练网站使用的 CSV 与 TCX 导出。
现在就可以直接分享这个文件。它包含完整训练,传递过程中不会损失内容。
容器封装
容器是一种确定性的拼接格式,不是 zip 文件。每个条目的原始字节由 ASCII 结构包围:
ROWFILE/1\n
>> <name> <size in bytes, decimal>\n
<size raw bytes>\n
...repeated per entry...manifest.json 最先写入。读取程序必须接受任意条目顺序,跳过不认识的名称,并拒绝重复出现的名称。
条目名称
Row Smarter 写入以下固定名称:
manifest.json:归档版本和写入程序详情。session.json:导入器信任的无损副本。summary.csv:训练摘要导出。samples.csv:记录的采样点。strokes.csv:记录的划桨。rowingdata.csv:rowingdata 风格导出。beats.csv:原始 RR间期。session.tcx:TCX 导出。
CSV 和 TCX 条目与单独导出的文件逐字节一致。拼接的归档可能没有 session.json;这种情况下,导入器会尽可能从这些条目恢复数据。
manifest.json
formatVersion 是唯一必需键。当工具从单独文件拼装归档时,其他值可以缺失。
formatVersion:整数。当前容器格式为1。sessionID:可选的 UUID 字符串。appVersion:可选字符串。writer:可选字符串。Row Smarter 写入RowSmarter;恢复工具写入stitch-rowfile。
session.json
训练模式为版本 1。数值不舍入。下文标明必需键;其他键均可选。
训练
v:必需整数,训练模式版本。id:必需 UUID 字符串,训练标识。start:必需数值,自平台Date参考日期起的秒数。dur:必需时长对象;mov:运动时间的时长对象。dist:必需数值,单位为米的距离。name:训练课名称;tz:开始时的时区标识符;utc:开始时相对 UTC 的偏移秒数。mass:运动员体重,单位千克;age:运动员年龄,单位岁。maxW:最大瓦数;minSplit:最小每 500 米秒数;maxSR:最大桨频。plan:保存的WorkoutPlan文档;race:比赛对象。avgPace:平均每 500 米秒数;avgW:平均瓦数;work:总功,单位焦耳;kcal:千卡。strokeCount:必需整数;avgSR:平均桨频。avgHR:平均心率,单位次/分钟;peakHR:峰值心率,单位次/分钟。avgLen:平均划距,单位厘米;avgRatio:平均拉桨与回桨比率。samples:必需的采样点对象数组;strokes:必需的划桨对象数组;beats:必需的心搏对象数组。prov:来源对象;hk:HealthKit 训练 UUID 字符串。
时长对象
s:必需整数,整数秒。a:必需整数,阿秒。
采样点对象
t:必需时长对象,已用时间。d:距离,单位米;p:分段配速,以每 500 米秒数表示;w:瓦数。sr:桨频;sc:划桨次数;hr:心率,单位次/分钟。df:drag factor;sl:划距,单位厘米。ap:平均分段配速,以每 500 米秒数表示;aw:平均瓦数;wj:功,单位焦耳。hr0:原始心率,单位次/分钟。
划桨对象
i:必需整数,划桨标识;t:必需时长对象,开始时间。dr:拉桨时长;rc:回桨时长;ds:若时间来自推导而非设备报告,则为真。d:距离,单位米;w:平均瓦数。fc:力量曲线对象;pf:峰值力量,单位牛顿;af:平均力量,单位牛顿。dl:拉桨长度,单位厘米;sd:单桨距离,单位米。
力量曲线对象
f:必需的力量采样点数组。dt:必需时长对象,采样间隔。cal:必需布尔值,表示采样点是否已校准。
心搏对象
e:必需时长对象,已用时间。r:必需数值,RR间期,单位秒。
比赛对象
id:必需比赛标识;name:比赛名称;dist:比赛距离,单位米。own:运动员的参赛者标识;src:结果来源。field:必需的竞争者数组。每位竞争者必须有参赛者标识p,之后是可选的显示名称n、航道l、名次r、距离(米)d、已用毫秒数e和完成标记f。
来源对象
kind:划船机类型;erg:划船机名称;hrm:心率计名称。app:应用版本;build:应用构建号;ver:记录版本。si:采样间隔,单位秒;npc:每个计数对应的力量牛顿数;hrfix:心率修正次数。imf:导入格式;isrc:导入来源应用;iat:导入时间,以自平台Date参考日期起的秒数表示;ifn:导入文件名。fid:训练数据保真度;mtd:运动时间是否由推导得出。