125 lines
3.5 KiB
C++
125 lines
3.5 KiB
C++
#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
|