From 4198f9e163d9a33750365dd8e262508f7f182ac1 Mon Sep 17 00:00:00 2001 From: ZXCLI Date: Tue, 6 Oct 2026 02:46:41 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B8=A9=E5=BA=A6=E9=93=BE=E7=AC=AC?= =?UTF-8?q?=E4=BA=8C=E8=BD=AE=E6=94=B6=E6=95=9B=E2=80=94=E2=80=94=E7=A1=AE?= =?UTF-8?q?=E5=AE=9A=E4=B8=BA=20revise(band=5Fmap(counts))=EF=BC=8C?= =?UTF-8?q?=E6=96=9C=E7=8E=87=E9=80=90=E4=BD=8D=E5=90=BB=E5=90=88=EF=BC=8C?= =?UTF-8?q?=E4=BB=85=E5=89=A9=E6=81=92=E5=AE=9A=20-197mC=20=E5=8A=A0?= =?UTF-8?q?=E6=80=A7=E9=A1=B9=EF=BC=88=E5=B7=B2=E6=8E=92=E9=99=A4=E9=A1=B9?= =?UTF-8?q?=E4=B8=8E=E4=B8=8B=E4=B8=80=E6=AD=A5=E5=B7=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../temperature_chain_re_20261006.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/android_app/temperature_chain_re_20261006.md b/docs/android_app/temperature_chain_re_20261006.md index c474962..4d2713a 100644 --- a/docs/android_app/temperature_chain_re_20261006.md +++ b/docs/android_app/temperature_chain_re_20261006.md @@ -109,6 +109,38 @@ Tout = Teff + tab[idx] + (tab[idx+1]-tab[idx])*(dev+0x5C-5000*(idx+3))/5000 - 结论:**结构已定,系数待钉**。下一步只需在这几个字段上做单变量对照 (逐项开关 + 与官方输出比对),不需要再猜公式。 +## 4b. 第二轮收敛(同日稍晚):确认公式为 `revise(band_map(counts))`,只剩一个常数项 + +按"单变量对照 + 数据反解"推进,结论如下(全部脚本与数据在 `%TEMP%\mag160c_wincmp\`): + +- **曲线与修正被证实**: + - `E2T`/`iE2T`(`sub_180015840`/`8b0`)往返误差 ≤1 mC(`iE2T(E2T(29000))=28999`); + - 官方输出在 band 1 上是干净直线(拟合残差 **3.3 mC**,斜率 8.26479); + - 我的模型 `revise(band_map)` 的斜率 **8.26451**(差 0.003 %)→ **revise 就是 1/K 缩放** + (K = f8·f4·ε = 1.0×0.99991×0.98 = 0.979912,1/K = 1.020500)。 +- **只剩一个常数**:把官方数据反解回波段域(对 revise 求逆)后,与记录的波段映射 + 相差 **恒定 −197 mC**(环境取 `dev+0xD8`,即反编译字面值)或 **−95 mC** + (环境取 `dev+0x5C`);与计数无关 → 是**加性项**,不是斜率/表格问题。 +- **已排除**(逐项实测,非推断): + - 记录索引/第二条记录:`dev+0x98=0`,`dev+0x41884=1`,第 2 条记录**全 0**(未用); + - 记录的 gain/移位:与数据反解出的斜率**逐位吻合**(band1:记录 8.09905 × 1/K = 8.2645 ≈ 数据 8.2648); + - 环境修正查表 `dev+0xAC…0xC8`:**全 0**; + - `dev+0xEC/0xF0` 增益项:**0/0**(`dev+0x6C=1` 但系数为 0); + - 环境补偿 `v50/v54`:本机 `dev+0x54==0x5C`、`0x58==0x60` → `v50≈30`、`v54≈11` + (≈ +32 mC,方向相反,不是这 −197); + - 距离/大气项(`dev+0xA8=−0.0279`,v56=`dev+0x44CB8` 均值温度):按反编译算出的 + 增量 ≈ −320(辐射域)≈ −800 mC,**与官方输出不符 → 该项的实际语义仍未读对** + (可能 `dev+0xA8` 需与其他字段组合,或该项仅在对焦/距离参数被设置时才生效)。 +- 观察到的可疑未读字段:`dev+0x50 = 200`(int)、`dev+0x14 = 20000`(温度样)、 + `dev+0xD0 = 0.65`(float)——需与官方输出做单变量对照确认。 + +**下一步(精确做法,不猜)**: +1. 在 SDK 的 `SetNewIRFrameDelegate` 回调里读设备字段(最接近温度计算时刻),对同一个 + count 记录 (字段值, 官方输出) 序列;看 −197 是否随某个字段变化 → 定位该字段。 +2. 若 `dev+0xA8` 距离项确需生效,用 `MAG_SetFixPara`/`MAG_FixTemperature` 改变距离参数 + 再采一次,观察官方输出的变化量,反推该项的正确组合方式。 +3. 钉死后即按 §5 落地 Kotlin,并用本轮同帧数据做逐像素回归(band 1 目标 mC 级)。 + ## 5. 我们 App 侧要改什么(等模型钉死后再动手) 1. `TempMath` 增加"官方放射学分支"实现:波段映射(参数取自 DDT 尾部)+ §3 修正;