/******************************* * Copyright (C) 2025. * * File Name: widget.h * Description: 显示与交互界面配置 * Others: * Version: 1.0 * Author: lipengpeng * Date: 2025-7-23 *******************************/ #ifndef WIDGET_H #define WIDGET_H #include <QSerialPort> #include <QWidget> #include <QTimer> #include "mymodbus.h" #include "communicationhistory.h" #include "serialcommunicator.h" /** * @class Widget * @brief 主窗口类,负责用户界面和串口通信控制 * * 该类提供串口连接、数据读写、历史记录管理等功能。 * 使用SerialCommunicator处理底层串口通信,MyModbus处理Modbus协议。 */ namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: /** * @brief 构造函数,初始化界面和通信对象 * @param parent 父窗口指针,默认为空 */ Widget(QWidget *parent = 0); /** * @brief 析构函数,清理资源 */ ~Widget(); bool readLineEdit(); private slots: //连接/断开串口按钮槽函数 void btnConnectClicked(); //发送写数据命令报文按钮槽函数 void onBtnWriteClicked(); //发送读数据命令报文按钮槽函数 void onBtnReadClicked(); //保存历史通信数据按钮槽函数 void onBtnSavedateClicked(); //读取历史通信数据按钮槽函数 void onBtnReaddateClicked(); //清空当前通信数据文本框按钮槽函数 void onBtnCleardateClicked(); //清空解析数据文本框按钮槽函数 void onBtnClearreadClicked(); void sicalDisconnected(); /** * @brief 串口数据接收槽函数 * @param data 接收到的字节数据 */ void onSerialDataReceived(const QByteArray &data); /** * @brief 串口状态变化槽函数 * @param status 状态描述字符串 */ void onSerialStatusChanged(const QString &status); void onTextChanged(); void staionConneting(bool online); // 串口通信超时处理槽函数 void onSerialTimeout(); void onBtnRefreshClicked(); void onBtnBatchInputClicked(); void onBtnCheckmsgClicked(); private: Ui::Widget *ui_; // 指向用户界面的指针 SerialCommunicator *serialComm_; // 串口通信处理对象 MyModbus *modbus_; // Modbus协议处理对象 }; #endif // WIDGET_H