#ifndef SIMULATIONMODE_H #define SIMULATIONMODE_H #include #include #include #include /** * @brief 模拟模式类 * * 用于在没有真实设备的情况下测试应用程序 * 模拟ModbusTCP控制器和机械臂的行为 */ class SimulationMode : public QObject { Q_OBJECT public: explicit SimulationMode(QObject *parent = nullptr); // 启用/禁用模拟模式 void setEnabled(bool enabled); bool isEnabled() const { return m_enabled; } // 模拟控制器连接 bool simulateControllerConnect(); void simulateControllerDisconnect(); // 模拟机械臂连接 bool simulateRobotConnect(); void simulateRobotDisconnect(); // 模拟ModbusTCP寄存器读写 bool simulateReadRegister(int address, uint16_t& value); bool simulateWriteRegister(int address, uint16_t value); bool simulateReadRegisters(int startAddress, int quantity, std::vector& values); // 模拟机械臂运动 bool simulateMoveL(double x, double y, double z, double rx, double ry, double rz); bool simulateMoveJ(double x, double y, double z, double rx, double ry, double rz); // 设置模拟检测结果 void setSimulatedDetectionResult(float x, float y, float z, float roll, float pitch, float yaw); signals: void logMessage(const QString& message); private: bool m_enabled = false; // 模拟寄存器 std::map m_registers; // 模拟检测结果 float m_detectionX = 100.0f; float m_detectionY = 200.0f; float m_detectionZ = 300.0f; float m_detectionRoll = 0.0f; float m_detectionPitch = 0.0f; float m_detectionYaw = 90.0f; // 随机数生成器 std::mt19937 m_randomEngine; std::uniform_real_distribution m_positionNoise; std::uniform_real_distribution m_angleNoise; // 模拟检测延迟定时器 QTimer* m_detectionTimer = nullptr; // 辅助函数 void initializeRegisters(); void simulateDetectionProcess(); float addNoise(float value, float noiseRange); }; #endif // SIMULATIONMODE_H