GrabBag/AppUtils/UICommon/Inc/NetworkConfigWidget.h

125 lines
3.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef NETWORKCONFIGWIDGET_H
#define NETWORKCONFIGWIDGET_H
#include <QComboBox>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QWidget>
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 隐藏由手眼标定页负责的参数(欧拉角顺序 / 输出欧拉角 / 方向向量调整 / 长轴对应轴)
*
* 当某应用将这些外参迁移到 HandEyeCalibWidget因为其按相机独立配置
* 在此控件中将对应的 ComboBox 隐藏;相关字段仍保留在 NetworkConfigData
* 以便与尚未迁移的应用保持 API 兼容。
*/
void setExtrinsicControlsVisible(bool visible);
private:
void setupUI(bool showPlcConfig, bool showTcpConfig);
void initEulerOrderComboBox();
void initOutputEulerOrderComboBox();
void initPoseOutputOrderComboBox();
void initDirVectorInvertComboBox();
void initByteOrderComboBox();
void initLongAxisDirComboBox();
private:
QComboBox* m_comboEulerOrder = nullptr;
QComboBox* m_comboOutputEulerOrder = nullptr;
QComboBox* m_comboPoseOutputOrder = nullptr;
QComboBox* m_comboDirVectorInvert = nullptr;
QComboBox* m_comboByteOrder = nullptr;
QComboBox* m_comboLongAxisDir = nullptr;
QLabel* m_labelEulerOrder = nullptr;
QLabel* m_labelOutputEulerOrder = nullptr;
QLabel* m_labelDirVectorInvert = nullptr;
QLabel* m_labelLongAxisDir = nullptr;
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