Files
SatelliteControl/mainwindow.h
2025-07-03 19:44:06 +08:00

110 lines
3.1 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QUdpSocket>
#include <QMainWindow>
#include <memory>
#include <vector>
#include <QTimer>
#include <QBarSet>
#include <QStackedBarSeries>
#include "RecordQuery.h"
#include "LoggerWidget.h"
#include "msg.h"
#include "spdlog/spdlog.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class QPolarChart;
class QChart;
class QBarCategoryAxis;
class QValueAxis;
class QTableWidgetItem;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void test1();
private slots:
void on_rdbChannelUHF_clicked();
void on_rdbChannelS_clicked();
void on_rdbChannelBeiDou_clicked();
void on_rdbChannelAuto_clicked();
void on_btnCallAnswer_clicked();
void on_btnCallReject_clicked();
void on_btnSendMessage_clicked();
void on_btnRecordQuery_clicked();
void readPendingDatagrams();
void on_tblMessageList_currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous);
void handleHovered(bool status, int index, QBarSet *barset);
protected:
void keyPressEvent(QKeyEvent* event) override;
private:
void createBeiDouSignalStrengthChart();
void createAzimuthMapChart();
void setSignalStrengthValues(const QStringList& categories,const QList<qreal> &yValues);
void setAzimuthValues(const QList<QPointF> &points);
//-------------------------------------------------
// 消息列表操作
//-------------------------------------------------
void UpdateMessageList();
//-------------------------------------------------
// 与底层消息交互
//-------------------------------------------------
bool sendUdpMessage(const QByteArray &udpMessage);
bool call(const QString& number);
bool hangUpCall();
bool acceptCall();
bool rejectCall();
bool sendShortMessage(const QString &number,const QString& message);
void processCommand(const QByteArray& cmd);
void processTianTongVoiceCmd(const QByteArray& cmd);
void processUhfVoiceCmd(const QByteArray& cmd);
void processTianTongShortMessageCmd(const QByteArray& cmd);
void processUhfShortMessageCmd(const QByteArray& cmd);
void processBeiDouShortMessageCmd(const QByteArray& cmd);
void processStatusReportCmd(const QByteArray& cmd);
void processSearchSatelliteStatusReport(const QByteArray& cmd);
void StartupTalkingTimer();
void ShutdownTalkingTimer();
void test();
private:
Ui::MainWindow *ui;
CallStatus m_callStatus = CallStatus::kIdle;
std::vector<Record> m_msgList;
int m_unReadMsgCount = 0;
int m_callDuration = 0;
std::shared_ptr<QTimer> m_timer;
std::shared_ptr<spdlog::logger> m_logger;
std::shared_ptr<QUdpSocket> m_udpSocket;
std::shared_ptr<QUdpSocket> m_udpServerSocket;
std::shared_ptr<RecordQuery> m_recordQueryWidget;
std::shared_ptr<LoggerWidget> m_loggerWidget;
QChart* m_signalStrengthChart;
QPolarChart* m_azimuthChart;
QBarCategoryAxis* m_signalStrengthChartXAxis;
QValueAxis* m_signalStrengthChartYAxis;
QStackedBarSeries *m_stackedSeries;
};
#endif // MAINWINDOW_H