dxTemp
1. 概述
本模块是 dxmodules 库的组成部分,通过 UART 提供 HM 红外测温功能:单帧峰值温度(getTemp)、多帧统计(measure)、完整 32×32 热成像图(getThermalMap)以及 ROI / 人脸关联额温测量(getRectTemp),并支持可选的 setCompensation 校准。
主要功能包括:
- UART 生命周期:
init/deinit用于串口通道初始化(底层使用dxUart)。 - 多帧统计:
measure(frames)— 在全视野内连续读取峰值温度(每帧间隔约 125 ms),返回max/min/avg及每帧samples(已应用补偿)。 - 简单测温:
getTemp()— 全 32×32 视野内单帧峰值温度。 - 热成像图:
getThermalMap()— 原始网格数据 +getPixel(col, row)辅助方法。 - 人脸 ROI 测温:
getRectTemp(rect)— 将可见光摄像头矩形映射到 HM 网格;发热判断路径与 C 驱动行 为一致。 - 校准:
setCompensation({ offset, envSlop, envStandard })应用于所有对外温度输出。
设备侧协议概要:
- CalcT:
{0xA5, 0x55, 0x01, 0xFB}→ 7 字节响应(峰值 + 网格)。 - QueryT:
"QueryT\r\n"→ 2054 字节热图数据 + CRC。 - SetRect:
{0xA9, 0xEE, 0x01, 0xFB, x, y, w, h}→ 4 字节 ACK。
注意
measure()在每帧之间执行多次CalcT读取,间隔os.sleep(125);默认 8 帧 是推荐值,但会增加延迟(8 帧约 1 秒)。getThermalMap/getRectTemp在 UART 超时或 CRC/头部错误时可能返回null;访问.map或.value前务必做判空检查。init({ timeout })中的硬件速率和超时参数会影响高负载下的可靠性。
2. 文件
- dxTemp.js
- 将 dxTemp.js 放置在项目的
dxmodules目录下(与其他 dx* 模块同级)。- 串口访问依赖 dxUart 及设备
/dev/tty*(或已配置的路径)。
3. 依赖
- dxUart — 为温度模块 UART 提供 open/send/receive/flush/ioctl 操作。
- dxLogger — 日志记录。
- os —
measure中帧间延迟使用sleep。
4. 兼容设备
运行 DejaOS(或相同 QuickJS + dxUart 技术栈)、并在已配置 UART 上连接了 HM 红外测温模块的设备(默认 115200-8-N-1)。
5. 使用方法
引入
import temper from "../dxmodules/dxTemp.js";