Measured on real hardware: IO1=right IO2=left IO3=top IO4=middle IO5=bottom (0x01=right 0x02=left 0x04=top 0x08=middle 0x10=bottom). The earlier verbal 'left=IO1/upper=IO2...' spec was wrong; this reverts to the original Phase-1 mapping, which the measurement confirms. - protocol.js REGION constants + getRegionName + REGION_NAMES - CRITICAL: buildVendorCommand ioMasks was built from REGION.* constants whose values just flipped, scrambling IO slot order; pin to literal [0x01..0x10] - diagnosis.js REGION_DEFS key↔mask; pd_region_map values unchanged (PD is keyed by orientation, which is stable) — right=PD5 left=PD1 top=PD2 middle=PD3,6,7 bottom=PD4 - common.js region labels back to right/left/top/middle/bottom (上/中/下) - treatment-setup / manual-treatment / treating / scan-report / ble-debug face-map bindings and REGION_MAP realigned - verified: mock pipeline lands left→IO2, middle→IO4 correctly
66 行
2.8 KiB
Plaintext
66 行
2.8 KiB
Plaintext
<!-- 临时调试页:真机联调用(区域/波长/极性/分桶验证),上线前移除,不走 i18n -->
|
||
<view class="page">
|
||
<view class="page-header page-header-gradient" style="padding-top: {{statusBarHeight + 8}}px;">
|
||
<view class="nav-back nav-back-light" bindtap="onBack">‹ 返回</view>
|
||
<view class="page-header-title">调试工具(临时)</view>
|
||
<view class="page-header-subtitle">{{connected ? '设备已连接' : '设备未连接'}}</view>
|
||
</view>
|
||
|
||
<view class="page-content">
|
||
<!-- 实时状态 -->
|
||
<view class="card">
|
||
<view class="card-title">FFE4 实时状态 <text class="frames">({{frames}} 帧)</text></view>
|
||
<view class="pd-row">
|
||
<view class="pd-cell" wx:for="{{pd}}" wx:key="*this">
|
||
<view class="pd-idx">PD{{index + 1}}</view>
|
||
<view class="pd-val">{{item}}</view>
|
||
</view>
|
||
</view>
|
||
<view class="status-row">
|
||
<text>VBAT {{vbat}}mV ({{battery}}%)</text>
|
||
<text>贴合 {{fitting}}</text>
|
||
<text>光色 {{scanWave}}</text>
|
||
<text>状态 {{runState}}</text>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 波长选择 -->
|
||
<view class="card">
|
||
<view class="card-title">波长(点分区/全脸时使用)</view>
|
||
<view class="wave-row">
|
||
<view class="wave-chip {{selectedWave === item.key ? 'active' : ''}}" wx:for="{{waves}}" wx:key="key"
|
||
bindtap="onSelectWave" data-key="{{item.key}}">{{item.label}}</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 脸型图:点区发 2 秒治疗 -->
|
||
<view class="card">
|
||
<view class="card-title">点分区 → 该区 2 秒治疗(对物理位置)</view>
|
||
<view class="face-map">
|
||
<view class="face-region forehead" bindtap="onTapRegion" data-mask="4">上\nIO3</view>
|
||
<view class="face-region left-cheek" bindtap="onTapRegion" data-mask="2">左\nIO2</view>
|
||
<view class="face-region right-cheek" bindtap="onTapRegion" data-mask="1">右\nIO1</view>
|
||
<view class="face-region nose" bindtap="onTapRegion" data-mask="8">中\nIO4</view>
|
||
<view class="face-region chin" bindtap="onTapRegion" data-mask="16">下\nIO5</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 指令按钮 -->
|
||
<view class="card">
|
||
<view class="card-title">指令</view>
|
||
<view class="btn-row">
|
||
<button class="dbg-btn" bindtap="onScanCmd">检测指令</button>
|
||
<button class="dbg-btn" bindtap="onTreatAll">全脸 2s</button>
|
||
<button class="dbg-btn dbg-btn-stop" bindtap="onStop">停止</button>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 日志 -->
|
||
<view class="card">
|
||
<view class="card-title">发送日志 <text class="log-clear" bindtap="onClearLog">清空</text></view>
|
||
<view class="log-line" wx:for="{{logs}}" wx:key="*this">{{item}}</view>
|
||
<view class="log-empty" wx:if="{{logs.length === 0}}">暂无</view>
|
||
</view>
|
||
</view>
|
||
</view>
|