You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

105 lines
2.4 KiB

  1. /*******************************
  2. * Copyright (C) 2025.
  3. *
  4. * File Name: widget.h
  5. * Description: 显示与交互界面配置
  6. * Others:
  7. * Version: 1.0
  8. * Author: lipengpeng
  9. * Date: 2025-7-23
  10. *******************************/
  11. #ifndef WIDGET_H
  12. #define WIDGET_H
  13. #include <QSerialPort>
  14. #include <QWidget>
  15. #include <QTimer>
  16. #include "mymodbus.h"
  17. #include "communicationhistory.h"
  18. #include "serialcommunicator.h"
  19. /**
  20. * @class Widget
  21. * @brief 主窗口类,负责用户界面和串口通信控制
  22. *
  23. * 该类提供串口连接、数据读写、历史记录管理等功能。
  24. * 使用SerialCommunicator处理底层串口通信,MyModbus处理Modbus协议。
  25. */
  26. namespace Ui {
  27. class Widget;
  28. }
  29. class Widget : public QWidget
  30. {
  31. Q_OBJECT
  32. public:
  33. /**
  34. * @brief 构造函数,初始化界面和通信对象
  35. * @param parent 父窗口指针,默认为空
  36. */
  37. Widget(QWidget *parent = 0);
  38. /**
  39. * @brief 析构函数,清理资源
  40. */
  41. ~Widget();
  42. bool readLineEdit();
  43. private slots:
  44. //连接/断开串口按钮槽函数
  45. void btnConnectClicked();
  46. //发送写数据命令报文按钮槽函数
  47. void onBtnWriteClicked();
  48. //发送读数据命令报文按钮槽函数
  49. void onBtnReadClicked();
  50. //保存历史通信数据按钮槽函数
  51. void onBtnSavedateClicked();
  52. //读取历史通信数据按钮槽函数
  53. void onBtnReaddateClicked();
  54. //清空当前通信数据文本框按钮槽函数
  55. void onBtnCleardateClicked();
  56. //清空解析数据文本框按钮槽函数
  57. void onBtnClearreadClicked();
  58. void sicalDisconnected();
  59. /**
  60. * @brief 串口数据接收槽函数
  61. * @param data 接收到的字节数据
  62. */
  63. void onSerialDataReceived(const QByteArray &data);
  64. /**
  65. * @brief 串口状态变化槽函数
  66. * @param status 状态描述字符串
  67. */
  68. void onSerialStatusChanged(const QString &status);
  69. void onTextChanged();
  70. void staionConneting(bool online);
  71. // 串口通信超时处理槽函数
  72. void onSerialTimeout();
  73. void onBtnRefreshClicked();
  74. void onBtnBatchInputClicked();
  75. void onBtnCheckmsgClicked();
  76. private:
  77. Ui::Widget *ui_; // 指向用户界面的指针
  78. SerialCommunicator *serialComm_; // 串口通信处理对象
  79. MyModbus *modbus_; // Modbus协议处理对象
  80. };
  81. #endif // WIDGET_H