颜色映射图例,规格尺寸修改
This commit is contained in:
@@ -10,8 +10,18 @@ classDiagram
|
||||
+bool connected
|
||||
+SerialBackend* serial
|
||||
+DataBackend* data
|
||||
+int rangeMin
|
||||
+int rangeMax
|
||||
+QColor colorLow
|
||||
+QColor colorMid
|
||||
+QColor colorHigh
|
||||
+setLightMode(bool)
|
||||
+setLanguage(string)
|
||||
+setRangeMin(int)
|
||||
+setRangeMax(int)
|
||||
+setColorLow(QColor)
|
||||
+setColorMid(QColor)
|
||||
+setColorHigh(QColor)
|
||||
}
|
||||
|
||||
class SerialConfig {
|
||||
@@ -60,6 +70,10 @@ classDiagram
|
||||
+setTransport(transport)
|
||||
}
|
||||
class GLWidget {
|
||||
+setRange(int, int)
|
||||
+setColorLow(QColor)
|
||||
+setColorMid(QColor)
|
||||
+setColorHigh(QColor)
|
||||
+dotClicked(index, row, col, value)
|
||||
}
|
||||
|
||||
@@ -160,6 +174,7 @@ classDiagram
|
||||
|
||||
AppBackend --> SerialBackend
|
||||
AppBackend --> DataBackend
|
||||
AppBackend ..> GLWidget : render config
|
||||
SerialBackend --> SerialConfig
|
||||
SerialBackend --> SensorRequest
|
||||
SerialBackend --> SensorSpec
|
||||
@@ -248,6 +263,15 @@ flowchart TD
|
||||
SB -->|updateProtocolBindings_| SW3[SerialSendWorker.setBuildRequestFunc]
|
||||
```
|
||||
|
||||
## 渲染/颜色映射流程 (Mermaid)
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
UI[LeftPanel 颜色映射] -->|rangeMin/rangeMax<br/>colorLow/Mid/High| AB[AppBackend]
|
||||
AB -->|rangeChanged/colorChanged| GL[GLWidget]
|
||||
GL -->|uMinV/uMaxV/uColorLow/Mid/High| SH[dots.frag]
|
||||
```
|
||||
|
||||
## 配置接口与步骤说明
|
||||
|
||||
- 设置协议:
|
||||
@@ -272,6 +296,11 @@ flowchart TD
|
||||
- `SerialSendWorker::setBuildRequestFunc(codec->buildRequest)`
|
||||
- 打开串口:
|
||||
- `SerialBackend::open()` -> `SerialSendWorker::openTransport(config)`,成功后在从站模式启动轮询发送。
|
||||
- 渲染/颜色映射配置:
|
||||
- QML 绑定 `AppBackend::rangeMin/rangeMax` 与 `colorLow/Mid/High`(`LeftPanel` 中的颜色映射面板)。
|
||||
- `setRangeMin/Max` 发出 `rangeChanged(min, max)`,由 `GLWidget::setRange` 同步到 `uMinV/uMaxV`。
|
||||
- `setColorLow/Mid/High` 发出 `color*Changed`,由 `GLWidget::setColor*` 同步到 `uColorLow/Mid/High`。
|
||||
- `dots.frag` 归一化公式:`value01 = clamp((v - min) / (max - min))`,并用 low->mid->high 线性插值。
|
||||
|
||||
## 分层设计概述
|
||||
|
||||
@@ -279,6 +308,7 @@ flowchart TD
|
||||
- 串口采集层:`Transport + Format + Codec + Decoder + Manager` 分层,独立于业务逻辑。
|
||||
- 串口线程化:读取/解码/发送三线程 + Packet/Frame 队列,降低 UI 卡顿风险。
|
||||
- 数据驱动层:负责帧缓存、数据导入导出与回放,提供渲染回调。
|
||||
- 渲染配置层:`AppBackend` 提供范围/颜色参数,`GLWidget` 将其转为 shader uniform 进行颜色映射。
|
||||
- UI 层:`NavBar + LeftPanel + OpenGL View + RightPanel` 的 1+3 布局。
|
||||
|
||||
## 类接口与成员说明(C++)
|
||||
@@ -289,11 +319,16 @@ flowchart TD
|
||||
- `lightMode` / `language` / `connected`:UI 基础状态。
|
||||
- `serial()` / `data()`:暴露子系统实例给 QML。
|
||||
- `setLightMode(bool)` / `setLanguage(string)`。
|
||||
- `rangeMin` / `rangeMax`:颜色映射的数值范围。
|
||||
- `colorLow` / `colorMid` / `colorHigh`:颜色映射的三个基准颜色。
|
||||
- `setRangeMin(int)` / `setRangeMax(int)` / `setColorLow(QColor)` / `setColorMid(QColor)` / `setColorHigh(QColor)`。
|
||||
- 成员变量:
|
||||
- `m_serial`:串口采集层对象。
|
||||
- `m_data`:数据驱动层对象。
|
||||
- `m_lightMode` / `m_language`:全局 UI 状态。
|
||||
- `m_rangeMin` / `m_rangeMax` / `m_colorLow` / `m_colorMid` / `m_colorHigh`:颜色映射参数。
|
||||
- 备注:串口连接成功后会清空历史数据缓存,避免旧数据残留。
|
||||
- `rangeChanged(min, max)` 用于驱动 `GLWidget::setRange`,颜色变更通过 `color*Changed` 同步。
|
||||
|
||||
### SerialBackend (`src/serial/serial_backend.h`)
|
||||
- 作用:串口采集层的统一控制器,负责协议选择、三线程调度与数据分发。
|
||||
@@ -395,9 +430,14 @@ flowchart TD
|
||||
|
||||
### GLWidget (`src/glwidget.h`)
|
||||
- 作用:OpenGL 渲染窗口,显示传感器点阵与背景。
|
||||
- 接口:
|
||||
- `setRange(int minV, int maxV)`:设置 `uMinV/uMaxV`。
|
||||
- `setColorLow(QColor)` / `setColorMid(QColor)` / `setColorHigh(QColor)`:设置 `uColorLow/uColorMid/uColorHigh`。
|
||||
- 信号:
|
||||
- `dotClicked(index, row, col, value)`:鼠标点击某个点时发出索引与数据值。
|
||||
- 备注:拾取使用屏幕投影 + 半径阈值,便于 RightPanel 订阅点击事件做曲线展示。
|
||||
- 备注:
|
||||
- 颜色映射在 `dots.frag` 内完成,低/中/高三段线性插值。
|
||||
- 拾取使用屏幕投影 + 半径阈值,便于 RightPanel 订阅点击事件做曲线展示。
|
||||
|
||||
### DataFrame (`src/data_frame.h`)
|
||||
- 字段:
|
||||
@@ -440,6 +480,9 @@ flowchart TD
|
||||
- 采样周期(从站模式可用)。
|
||||
- 采样参数:功能码、起始地址、读取长度。
|
||||
- 传感器规格:协议名、型号、网格规格占位。
|
||||
- 颜色映射:
|
||||
- 数值范围(min/max)。
|
||||
- 低/中/高三色选择(`ColorDialog`)。
|
||||
- 显示控制:显示网络/坐标轴、回放与导出入口。
|
||||
|
||||
### RightPanel(`qml/content/RightPanel.qml`)
|
||||
@@ -518,6 +561,7 @@ flowchart TD
|
||||
## 更新记录
|
||||
|
||||
- 2026-01-11:新增 `QtSerialTransport`(`QSerialPort` 传输实现)并设为默认传输;补齐点选拾取逻辑;新增数据流/时序图并补充可视化 TODO 说明。
|
||||
- 2026-01-12:`LeftPanel` 新增颜色映射参数;`AppBackend`/`GLWidget` 增加颜色与范围接口,shader 使用三色渐变映射数据值。
|
||||
- 2026-01-11:补充串口配置流程图与配置接口说明(协议/参数/解码器绑定/打开流程)。
|
||||
- 2026-01-05:新增串口三线程流水线(读/解码/发送)与 Packet/Frame 队列,更新协议起始符说明,补充队列溢出 TODO 与线程组件文档。
|
||||
- 2026-01-05:CollapsiblePanel 组件改为跟随 `backend.lightMode` 切换暗色主题配色。
|
||||
|
||||
Reference in New Issue
Block a user