#ifndef NETWORKCONFIGWIDGET_H #define NETWORKCONFIGWIDGET_H #include #include #include #include #include namespace Ui { class NetworkConfigWidget; } struct NetworkConfigData { int eulerOrder = 11; int outputEulerOrder = 10; // 输出欧拉角解码约定(仅影响旋转矩阵 → 欧拉角的展示/下发,不影响坐标转换) int poseOutputOrder = 0; // 机器人姿态输入/输出顺序 int dirVectorInvert = 0; // 兼容旧接口,界面不再提供配置 int byteOrder = 0; int longAxisDir = 0; // 兼容旧接口,界面不再提供配置 QString plcServerIp = "192.168.0.88"; int plcServerPort = 502; int addrPhotoRequest = 1001; int addrDataComplete = 1003; int addrCoordDataStart = 2002; int tcpServerPort = 5020; }; enum NetworkEulerOrder { EULER_ORDER_XYZ = 10, EULER_ORDER_ZYX = 11, EULER_ORDER_ZXY = 12, EULER_ORDER_YXZ = 13, EULER_ORDER_YZX = 14, EULER_ORDER_XZY = 15 }; enum NetworkPoseOutputOrder { NET_POSE_OUTPUT_RX_RY_RZ = 0, NET_POSE_OUTPUT_RX_RZ_RY = 1, NET_POSE_OUTPUT_RY_RX_RZ = 2, NET_POSE_OUTPUT_RY_RZ_RX = 3, NET_POSE_OUTPUT_RZ_RX_RY = 4, NET_POSE_OUTPUT_RZ_RY_RX = 5 }; enum NetworkDirVectorInvert { NET_DIR_INVERT_NONE = 0, NET_DIR_INVERT_XY = 1, NET_DIR_INVERT_XZ = 2, NET_DIR_INVERT_YZ = 3 }; enum NetworkByteOrder { NET_BYTE_ORDER_BIG = 0, NET_BYTE_ORDER_LITTLE = 1 }; class NetworkConfigWidget : public QWidget { Q_OBJECT public: explicit NetworkConfigWidget(bool showPlcConfig = true, bool showTcpConfig = false, QWidget* parent = nullptr); ~NetworkConfigWidget(); void setConfig(const NetworkConfigData& config); NetworkConfigData getConfig() const; int eulerOrder() const; int outputEulerOrder() const; int poseOutputOrder() const; int dirVectorInvert() const; int byteOrder() const; int longAxisDir() const; /** * @brief 隐藏由工具参数页负责的参数(欧拉角顺序 / 输出欧拉角 / 姿态输入输出顺序) * * 方向向量调整与长边对应轴已不再提供界面配置,接口保留默认值以兼容旧调用。 */ void setExtrinsicControlsVisible(bool visible); /** * @brief 单独显示/隐藏姿态输入输出顺序。 */ void setPoseOutputOrderVisible(bool visible); private: void setupUI(bool showPlcConfig, bool showTcpConfig); void initEulerOrderComboBox(); void initOutputEulerOrderComboBox(); void initPoseOutputOrderComboBox(); void initByteOrderComboBox(); private: Ui::NetworkConfigWidget* ui = nullptr; QComboBox* m_comboEulerOrder = nullptr; QComboBox* m_comboOutputEulerOrder = nullptr; QComboBox* m_comboPoseOutputOrder = nullptr; QComboBox* m_comboByteOrder = nullptr; QLabel* m_labelEulerOrder = nullptr; QLabel* m_labelOutputEulerOrder = nullptr; QLabel* m_labelPoseOutputOrder = nullptr; NetworkConfigData m_configCache; QGroupBox* m_groupPlc = nullptr; QLineEdit* m_editPlcIp = nullptr; QLineEdit* m_editPlcPort = nullptr; QLineEdit* m_editAddrPhotoRequest = nullptr; QLineEdit* m_editAddrDataComplete = nullptr; QLineEdit* m_editAddrCoordDataStart = nullptr; QGroupBox* m_groupTcp = nullptr; QLineEdit* m_editTcpPort = nullptr; }; #endif // NETWORKCONFIGWIDGET_H