|
- /**
- * @file free_monitor_widget.h
- * @brief 定义自由寄存器监控控件
- * @version 1.0.0
- * @author suyu
- * @date 2026-08-22
- */
-
- #pragma once
-
- #include "domain/runtime_state.h"
- #include "services/plc_communication_gateway.h"
-
- #include <QWidget>
-
- #include <memory>
-
- namespace Ui {
- class FreeMonitorWidget;
- }
-
- class RegisterMonitorService;
-
- /** 自由监控 UI:地址列表属于当前会话,读写统一委托 RegisterMonitorService */
- class FreeMonitorWidget final : public QWidget
- {
- Q_OBJECT
-
- public:
- /** 创建自由监控控件并绑定监控服务 */
- explicit FreeMonitorWidget(
- RegisterMonitorService &service,
- QWidget *parent = nullptr);
- /** 释放 Designer 界面对象 */
- ~FreeMonitorWidget() override;
-
- /** 根据当前模式和通信状态开启或关闭写入入口 */
- void setWriteEnabled(bool enabled);
- /** 根据运行模式和 PLC 状态刷新所有监控值 */
- void refreshValues(ApplicationMode mode, PlcConnectionState plc_state);
- /** 从服务重新加载当前会话中的地址列表 */
- void reloadAddresses();
-
- signals:
- /** 监控地址列表发生变化时发出 */
- void monitorAddressesChanged();
- /** 操作完成后发出可直接显示的消息 */
- void operationMessage(const QString &message);
-
- private:
- /** 从输入框添加一个或多个监控地址 */
- void addAddresses();
- /** 删除当前选中的监控地址 */
- void removeSelectedAddresses();
- /** 清空当前会话中的监控地址 */
- void clearAddresses();
- /** 写入指定行中的寄存器值 */
- void writeRow(int row);
- /** 根据当前权限刷新写入控件状态 */
- void updateWriteControls();
- /** 统一处理监控服务返回结果 */
- void handleResult(const QString &action, bool succeeded, const std::string &message);
-
- /** Qt Designer 生成的界面对象 */
- std::unique_ptr<Ui::FreeMonitorWidget> ui_;
- /** 寄存器监控服务,不由控件拥有 */
- RegisterMonitorService &service_;
- /** 当前是否允许执行寄存器写入 */
- bool write_enabled_ = false;
- };
|