59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
#ifndef MOCKVEHICLE_H
|
|
#define MOCKVEHICLE_H
|
|
|
|
#include <QObject>
|
|
#include <QUdpSocket>
|
|
#include <QTimer>
|
|
#include <QVector>
|
|
|
|
// ===================== 内置模拟车载端(离线演示) =====================
|
|
// 以独立 UDP 套接字在回环地址上与遥控端通信:向 UI 端口周期发送遥测,
|
|
// 接收并响应 UI 下发的控制命令(行驶/机械臂/球阀/泵/洗消/自检/急停等)。
|
|
class MockVehicle : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit MockVehicle(QObject* parent = nullptr);
|
|
bool enabled() const { return m_enabled; }
|
|
|
|
private slots:
|
|
void onReadyRead();
|
|
void onSendTick();
|
|
void onSelfCheckTick();
|
|
|
|
private:
|
|
void sendJson(const QJsonObject& obj);
|
|
void sendTelemetry();
|
|
void sendHeartbeat();
|
|
void handleCommand(const QJsonObject& o);
|
|
|
|
QUdpSocket* m_socket = nullptr;
|
|
QTimer* m_sendTimer = nullptr;
|
|
QTimer* m_selfCheckTimer = nullptr;
|
|
|
|
int m_localPort = 9000; // 遥控端收包端口(本端发送目标)
|
|
int m_remotePort = 9001; // 本端绑定端口(遥控端发包目标)
|
|
bool m_enabled = true;
|
|
bool m_plantSelfCheckFault = false;
|
|
|
|
// 模拟车辆状态
|
|
bool m_estop = false;
|
|
bool m_gasRunning = false;
|
|
bool m_washRunning = false;
|
|
QString m_washMode = "手动消除";
|
|
bool m_valve1Open = false; // D1 控制状态(开/关)
|
|
bool m_valve2Open = false;
|
|
bool m_pPlunger = false, m_pAir = false, m_pLeaf = false;
|
|
double m_speed = 3.45;
|
|
int m_airRpm = 300, m_plungerRpm = 200, m_leafRpm = 200;
|
|
QVector<double> m_js{30, 20, 0, 90, 45, 0};
|
|
bool m_armHomed = true;
|
|
QString m_armReturn = "idle";
|
|
|
|
// 自检序列
|
|
bool m_selfCheckActive = false;
|
|
int m_selfCheckIndex = 0;
|
|
};
|
|
|
|
#endif // MOCKVEHICLE_H
|