手闸状态指示器是 DeviceArea 组件中的核心功能之一,用于实时显示高压发生器手闸的当前状态,为操作人员提供即时的视觉反馈。
实时状态显示
状态反馈
交互体验
src/pages/exam/DeviceArea.tsx
src/states/exam/deviceAreaSlice.ts
使用 Redux 管理两个关键状态:
类型:GeneratorStatus
枚举
关键状态值:
GENERATOR_RAD_OFF
(0): 手闸抬起GENERATOR_RAD_PREPARE
(1): 手闸一档按下GENERATOR_RAD_READY
(2): 手闸二档按下GENERATOR_RAD_XRAYON
(3): 发生器点片出线GENERATOR_RAD_XRAYOFF
(4): 发生器点片结束出线类型:GENERATOR_STATUS
枚举
关键状态值:
GENERATOR_STATUS_SHUTDOWN
(0): 关机GENERATOR_STATUS_INIT
(1): 初始化GENERATOR_STATUS_SLEEP
(2): 睡眠GENERATOR_STATUS_CHARGING
(3): 充电GENERATOR_STATUS_STANDBY
(4): 待机GENERATOR_STATUS_EXP
(5): 曝光中GENERATOR_STATUS_ERROR
(6): 错误GENERATOR_STATUS_CALIBRATION
(7): 校准GENERATOR_STATUS_SERVICE
(8): 服务// 颜色显示优先级(从高到低)
IF generatorStatus_2 === GENERATOR_STATUS_STANDBY
➜ 显示绿色 (text-green-500)
➜ 含义:发生器处于待机状态,准备就绪
ELSE IF generatorStatus === GeneratorStatus.GENERATOR_RAD_PREPARE
➜ 显示黄色 (text-yellow-500)
➜ 含义:手闸一档按下,准备状态
ELSE IF generatorStatus === GeneratorStatus.GENERATOR_RAD_READY
➜ 显示黄色 (text-yellow-500)
➜ 含义:手闸二档按下,就绪状态
ELSE
➜ 显示默认色(无特殊样式)
➜ 含义:其他状态(如手闸抬起等)
通过 MQTT 事件驱动状态更新:
// 在 deviceAreaSlice.ts 中注册事件监听器
// 发生器待机状态
emitter.on('GENERATOR_STATUS_STANDBY', () => {
store.dispatch(setGeneratorStatus_2(GENERATOR_STATUS.GENERATOR_STATUS_STANDBY));
});
// 手闸抬起
emitter.on('GENERATOR_RAD_OFF', () => {
store.dispatch(setGeneratorStatus(GeneratorStatus.GENERATOR_RAD_OFF));
});
// 手闸一档按下
emitter.on('GENERATOR_RAD_PREPARE', () => {
store.dispatch(setGeneratorStatus(GeneratorStatus.GENERATOR_RAD_PREPARE));
});
// 手闸二档按下
emitter.on('GENERATOR_RAD_READY', () => {
store.dispatch(setGeneratorStatus(GeneratorStatus.GENERATOR_RAD_READY));
});
// DeviceArea.tsx 中的手闸状态指示器按钮
<Button
style={btnStyle}
className={classValue}
icon={
<ToolOutlined
className={
generatorStatus_2 === GENERATOR_STATUS.GENERATOR_STATUS_STANDBY
? 'text-green-500'
: generatorStatus === GeneratorStatus.GENERATOR_RAD_PREPARE
? 'text-yellow-500'
: generatorStatus === GeneratorStatus.GENERATOR_RAD_READY
? 'text-yellow-500'
: ''
}
/>
}
title={`手闸状态指示器: ${generatorStatus}`}
/>
同时监控两个层面的状态:
generatorStatus_2
): 系统级状态generatorStatus
): 操作级状态发生器待机状态(绿色)优先于手闸操作状态(黄色),确保系统状态的优先显示。
eventEmitter
监听硬件 MQTT 事件enum GeneratorStatus {
GENERATOR_SYNC_ERR = -1, // 错误状态
GENERATOR_RAD_OFF, // 手闸抬起
GENERATOR_RAD_PREPARE, // 手闸一档按下
GENERATOR_RAD_READY, // 手闸二档按下
GENERATOR_RAD_XRAYON, // 发生器点片出线
GENERATOR_RAD_XRAYOFF, // 发生器点片结束出线
GENERATOR_FLU_OFF, // 脚闸抬起
GENERATOR_FLU_READY, // 脚闸踩下
GENERATOR_FLU_XRAYON, // 透视出线
GENERATOR_FLU_XRAYOFF, // 透视结束出线
GENERATOR_FLU_CINE_READY, // 电影模式准备
GENERATOR_SYNC_MAX, // 状态最大值(枚举边界)
}
enum GENERATOR_STATUS {
GENERATOR_STATUS_SHUTDOWN, // 关机
GENERATOR_STATUS_INIT, // 初始化
GENERATOR_STATUS_SLEEP, // 睡眠
GENERATOR_STATUS_CHARGING, // 充电
GENERATOR_STATUS_STANDBY, // 待机
GENERATOR_STATUS_EXP, // 曝光中
GENERATOR_STATUS_ERROR, // 错误
GENERATOR_STATUS_CALIBRATION, // 校准
GENERATOR_STATUS_SERVICE, // 服务
GENERATOR_STATUS_MAX, // 状态最大值(枚举边界)
}
src/pages/exam/DeviceArea.tsx
- 组件UI实现src/states/exam/deviceAreaSlice.ts
- 状态管理和事件监听src/domain/mqttServiceForDevice.ts
- MQTT 消息处理(可能包含事件发送)src/utils/eventEmitter.ts
- 事件发射器工具