96 lines
5.1 KiB
Markdown
96 lines
5.1 KiB
Markdown
# MAG160C 热像仪工程
|
||
|
||
MAG160C 热像仪机芯(160×120 @15fps,USB VID `0x833C`)的完整逆向工程与双端实现:
|
||
|
||
- **C 参考实现**(`csdk/`,跨平台):官方 PC SDK 渲染/温度/USB 管线的逐像素复刻,
|
||
含 Windows 直连演示程序与 Linux 移植模块;
|
||
- **安卓统一 App**(`android/`,Kotlin + Compose,适配 Android 16):整合官方
|
||
4 个 App(普通版/专业版/ThermoScope/CoreSdkSample)的功能——实时预览、
|
||
拍照(MDT 温度容器)、录像、媒体库、离线分析、PDF 报告、任务巡检、远程预览;
|
||
- **逆向工程档案**(`analysis/`):三条 SDK 产品线(Linux/Windows/Android)的
|
||
反汇编、全量伪代码、协议结论与验证数据。
|
||
|
||
## 仓库结构
|
||
|
||
| 路径 | 内容 |
|
||
|---|---|
|
||
| `android/` | 安卓统一 App(Gradle 工程,package `com.mag160c.thermal`,纯 Kotlin 无 NDK)|
|
||
| `csdk/` | 纯 C SDK:USB 会话层、帧解析、温度换算、TCM 板通信、官方渲染管线复刻(见 `csdk/README.md`)|
|
||
| `analysis/` | 逆向工程总目录:三条 SDK 线的解包产物、协议规格、差分验证数据(见 `analysis/README.md`)|
|
||
| `docs/android_app/` | 安卓 App 文档:`DEVELOPMENT.md` 开发指南 / `app_manual.md` 操作手册 / `session_state.md` 开发进度与验证记录 |
|
||
| `IR_Camera_SDK-1.0.1/` | 原厂 Windows/Android/Linux SDK 原始包 |
|
||
| `app/` | 官方安卓 APK 存档(普通版/专业版/ThermoScope/demo)|
|
||
| `build-artifacts/` | 构建产物(安卓 APK、PC demo、DDT 标定数据)|
|
||
| `vendor-docs/` | 厂商资料 |
|
||
| `tools/` | 辅助脚本(会话恢复、帧数据检查)|
|
||
|
||
## 构建与测试
|
||
|
||
### 安卓 App
|
||
|
||
要求:JDK 21(Temurin)、Android SDK(API 36)、设备为 Android 12+。
|
||
|
||
```powershell
|
||
cd android
|
||
$env:JAVA_HOME = "C:\Tools\jdk-21" # 按本机 JDK 路径调整
|
||
.\gradlew.bat :app:assembleDebug test --no-daemon
|
||
# 产物:android\app\build\outputs\apk\debug\app-debug.apk
|
||
#(仓库同步副本:build-artifacts\mag160c-app-debug.apk)
|
||
```
|
||
|
||
单元测试 123 项(渲染管线逐字节黄金比对、协议字节序、网络回环等),无硬件可跑。
|
||
|
||
### C 参考实现(demo3:官方渲染管线复刻)
|
||
|
||
```powershell
|
||
gcc -O2 -w -DMAG160C_STATIC -I"csdk\third_party\libusb\win64" -I"csdk\include" -I"csdk\src" `
|
||
-o build-artifacts\mag160c_demo3.exe csdk\tools\mag160c_demo3.c `
|
||
csdk\src\mag160c_display.c csdk\src\mag160c_error.c `
|
||
csdk\third_party\libusb\win64\libusb-1.0.x64.a -lgdi32 -luser32
|
||
```
|
||
|
||
更多构建方式(CMake / Linux / CLI 工具 / 测试)见 `csdk/README.md`。
|
||
|
||
## 硬件与协议要点
|
||
|
||
- 设备:MAG160C 机芯,160×120 @15fps,FFC 快门自动校正
|
||
- USB:VID `0x833C` PID `0x0001`;端点 0x03 命令 / 0x82 响应 / 0x81 图像流 /
|
||
0x84 标定文件 / 0x05 标定上传
|
||
- 协议:命令 4 字节小端 `{magic}`(FFC 为 8 字节);帧格式
|
||
`0x1bb1b11b | counter | len | type | … | u16LE 像素 | 0x1bb1b11c`
|
||
- 权威协议结论:`analysis/magcx_official_flow.md`(官方 Java 源码逐行核对版)
|
||
|
||
## 文档导航
|
||
|
||
| 文档 | 内容 |
|
||
|---|---|
|
||
| `docs/android_app/DEVELOPMENT.md` | 安卓 App 开发指南(架构/约定/构建/注意事项)|
|
||
| `docs/android_app/app_manual.md` | App 操作手册(界面/设置/方向/排障)|
|
||
| `docs/android_app/session_state.md` | 开发进度与验证记录(39 轮真机验证)|
|
||
| `docs/android_app/reverse_apk_features.md` | 官方 4 App 逆向功能总表 |
|
||
| `analysis/README.md` | 逆向工程总目录索引 |
|
||
| `analysis/magcx_official_flow.md` | 权威 USB 协议结论 |
|
||
| `csdk/README.md` | C SDK 文档(构建/API/工具/测试/对齐记录)|
|
||
|
||
## 主要成果记录
|
||
|
||
- **2026-08**:官方 PC SDK(libmagcore / CoreSDKLib)逆向完成,C 管线逐像素复刻
|
||
(NUC/盲元与官方同帧抓帧 0/19200 误差)
|
||
- **2026-09 上旬**:安卓统一 App 完成(渲染管线 Kotlin 移植逐字节验证、USB 层
|
||
复刻官方 Java 源码、相机式 UI、MDT 拍照/录像/媒体库/分析/PDF/任务巡检)
|
||
- **2026-09-10**:真机联调打通(根因:USB 命令字节序反转,修复后单测锁死);
|
||
官方安卓 App 全量解包入库(jadx + Ghidra)
|
||
- **2026-09-11~12**:真机多轮联调,修复 launchMode 重连风暴、SET_CONFIGURATION
|
||
重枚举、软件画布掉帧(6.5fps→15.1fps)三个根因级问题;完成官方 7×7 细节
|
||
增强移植、标注风格重做、方向跟随等
|
||
- **2026-10 上旬**:官方真机渲染链全量逆向(39 轮验证)——逐行固定图案噪声的
|
||
来源定案:参考减除消除 98.4% 行 FPN,显示域对齐官方(暗区行交替
|
||
0.14-0.23 ×1e-2 弧长 ≈ 官方 0.15);7×7 细节增强的显示代价量化并写入设置说明
|
||
|
||
## 许可与使用声明
|
||
|
||
仓库包含原厂 SDK、反编译产物、二进制样本与抓帧数据。这些内容仅供本项目的
|
||
互操作性研究与设备调试使用,可能受原厂许可限制,不得用于其他用途;
|
||
不得分发账号凭据、访问令牌或私钥。工程代码(`android/`、`csdk/`、`docs/`、
|
||
`analysis/` 中自行编写的部分)按项目内部使用管理。
|