#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include "soft_bus_core/soft_bus_core.h" #include "serial_manager/serial_manager.h" QT_BEGIN_NAMESPACE class QListView; class QTableView; class QSplitter; class QLabel; namespace Ui { class MainWindow; } QT_END_NAMESPACE namespace QtCharts { class QChart; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void updateDeviceList(); void showRawData(const QString &deviceId); void showBusMessages(const QString &source); void updateChart(const BusMessage &message); void onDeviceSelected(const QModelIndex &index); void onSerialDataReceived(const QString &portName, const QByteArray &data); // btn_fun void on_btn_serial_clear_clicked(); void on_btn_serial_clear_send_clicked(); void on_btn_serial_send_clicked(); void on_checkbox_serial_hex_toggled(bool checked); void on_checkbox_serial_ascii_toggled(bool checked); // modbus_btn_fun void on_checkbox_modbus_rtu_toggled(bool checked); void on_checkbox_modbus_ascii_toggled(bool checked); void on_checkbox_modbus_tcp_toggled(bool checked); private: void createUI(); void createConnections(); void initializeSystem(); void modbusSetting_ui(const QString &deviceId); void onModbusControlChanged(int index); void onConfirmModbusSet(); void onGenerateModbusDatagram(); quint16 calculateCRC(const QByteArray &data); QList createRow(const QString ¶m, const QString &defaultValue); private: Ui::MainWindow *ui; // 核心组件 SoftBusCore *m_busCore; SerialManager *m_serialManager; // UI组件 QTableView *m_dataTable; // 原始数据表 QStandardItemModel *m_deviceModel; QStandardItemModel *m_raw_dataModel; QStandardItemModel *m_bus_dataModel; QStandardItemModel *m_serial_settingsModel; // 串口设置表Table; QLineSeries *m_dataSeries; QtCharts::QChart *m_chart; QString m_currentDeviceId; // 当前选择的设备ID }; #endif // MAINWINDOW_H