feat:初始化wuhan_QT界面代码

This commit is contained in:
xu
2026-09-09 17:00:37 +08:00
commit 40473ad10b
537 changed files with 23934 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
#ifndef UDPCOMMUNICATION_H
#define UDPCOMMUNICATION_H
#include <QObject>
#include <QUdpSocket>
#include <QTimer>
#include "global.h"
// ===================== UDP 通信层(收包 / 发包) =====================
// 与车载端经 UDP 报文通信,JSON 文本协议:
// 上行(UI→车载端)命令见各 sendXxx();
// 下行(车载端→UI)遥测见 parse() 中 "t" 字段分支。
// 本类同时承担“通信超时判定”:连续 2s 未收到心跳则判为通信异常。
class UdpCommunication : public QObject
{
Q_OBJECT
public:
explicit UdpCommunication(Telemetry* tel, QObject* parent = nullptr);
bool start();
void stop();
// 是否启用内置模拟车载端(离线演示)
bool mockEnabled() const { return m_mock; }
int localPort() const { return m_localPort; }
// ---------- 上行命令(发包) ----------
void sendChassisMove(const QString& dir, double speed);
void sendArmMove(const QString& axis, int dir); // dir: +1 / -1 / 0(停止)
void sendArmReturn();
void sendArmPause();
void sendGasStart();
void sendGasStop();
void sendWashStart(const QString& mode); // "clean" / "disinfect"
void sendWashStop();
void sendBallValve(int valve, bool open); // valve: 1=D1, 2=D2
void sendPumpPower(const QString& pump, bool on); // "plunger"/"air"/"leaf"
void sendPumpRpm(const QString& pump, int rpm);
void sendSetParam(const QString& key, double value);
void sendSelfCheckStart();
void sendEstop();
void sendEstopReset();
signals:
void telemetryUpdated(); // 任意遥测包到达(页面据此刷新)
void commOkChanged(bool ok); // 通信状态变化
void estopReceived(bool triggered); // 收到急停
void selfCheckItem(int index, bool ok); // 自检单项结果(0~9)
void selfCheckDone(bool allOk); // 自检完成
void faultAppended(const QString& system, const QString& code, const QString& desc);
private slots:
void onReadyRead();
void onHeartbeatTimeout();
private:
void sendJson(const QJsonObject& obj);
void parse(const QJsonObject& obj);
Telemetry* m_tel = nullptr;
QUdpSocket* m_socket = nullptr;
QTimer* m_hbTimer = nullptr;
int m_localPort = 9000;
QString m_remoteHost = "127.0.0.1";
int m_remotePort = 9001;
bool m_mock = true;
bool m_lastCommOk = true;
};
#endif // UDPCOMMUNICATION_H