解码可疑时间戳

问题描述 投票:0回答:1

我正在编写一个工具来解码通过迷你 USB 电缆从 Beurer BF-105 秤检索的数据。

我真正困扰的部分是我认为应该编码测量时间戳的 4 个字节。

我在过去 3 天收集了以下示例数据:

00101101 10001001 10001111 11111100 = 2024-03-17 ~11:00
00101101 10001001 11001000 01110101 = 2024-03-17 15:28:24 (?)
00101101 10001010 10101000 01001100 = 2024-03-18 07:21
00101101 10001010 10110001 10011110 = 2024-03-18 07:23
00101101 10001011 00111111 10000110 = 2024-03-18 18:08:13
00101101 10001011 01000000 00110010 = 2024-03-18 18:10:39
00101101 10001011 11100110 00010000 = 2024-03-19 05:58:23
00101101 10001011 11111010 01001110 = 2024-03-19 07:24:46

00101101 10001001 10011011 11101000 = 2024-03-17 ~16:00
00101101 10001010 10011110 00000001 = 2024-03-18 ~07:00
00101101 10001011 11101101 10010100 = 2024-03-19 06:30:20
00101101 10001011 11101101 10101010 = 2024-03-19 06:30:54

我在那里看到的一件事是,至少第二个字节的低几位对日期进行编码,因为每天的变化它都会增加 1。但我不明白它是如何编码的。

有人在这里看到我遗漏的任何模式吗?这些片段想告诉我什么?

我已经开始将为 BF-100 创建的工具修改为 BF-105 的不同编码: https://gitlab.com/thomas351/beurer_bf100_parser/-/blob/bf105/src/main.rs

与用户部分中的生日存储和文件末尾的检索时间不同,它显然不仅仅是单独编码日历的 3 个常用部分(年、月和日),没有任何偏移。将整个前 2 个字节解释为单个 u16 整数,得出过去 3 天的值 11657、11658 和 11659。像这样解释它适合我迄今为止收集的数据,但将 1992 年 4 月 17 日设为零 - 这似乎不是一个明智的偏移量。

更新:

正如 @htmlcoderexe 指出的那样,一天之间的切换不会发生在午夜,而是在 ~11:00 和 18:08 之间的某个时间发生。或者根据我新获得的两个样本,大约在 11:00 到 17:50 之间:

00101101 10001100 10001100 11100011 = 2024-03-19 17:50:09
00101101 10001100 10001101 00000001 = 2024-03-19 17:51:30
binary reverse-engineering decoding binary-data
1个回答
0
投票

终于想通了。它是一个 u32,表示自 2000-01-01 00:00:00 以来经过的秒数。

© www.soinside.com 2019 - 2024. All rights reserved.