image_framework_ymj/image_framework/plugins/MsgBase.h

112 lines
3.2 KiB
C
Raw Permalink Normal View History

2024-12-06 16:25:16 +08:00
#ifndef MSG1_H
#define MSG1_H
#include <string>
#include <opencv2/opencv.hpp>
#include "LibapiMsg.h"
#define PARAM_POS_SRC_IMAGE 0
#define PARAM_POS_ROI_IMAGE 1
#define PARAM_POS_ENHANCE_IMAGE 2
#define PARAM_POS_LIDAR_DATA 4
#define PARAM_POS_LIDAR_2D3D 5
#define PARAM_POS_CMeasureInfo 6
#define PARAM_POS_MOTION_DETECTION_DATA 33
// 客户端到主任务的消息定义
#define CLIENT_MSG_NONE 0
#define CLIENT_MSG_CONTINUE 1
#define CLIENT_MSG_RESTART_DETECTION 2
#define CLIENT_MSG_STOP_DETECTION 3
// 发送到客户端得消息定义
#define TO_CLIENT_NOTIFY_BASE 1000
#define TO_CLIENT_NOTIFY_CAMERA_CAP_START 1 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_CAMERA_CAP_END 2 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_LIDAR_CAP_START 3 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_LIDAR_CAP_END 4 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_DETECTION_START 5 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_DETECTION_END 6 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_CONNER2D_START 7 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_CONNER2D_END 8 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_CONNER3D_START 9 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_CONNER3D_END 10 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_MEASURE_START 11 + TO_CLIENT_NOTIFY_BASE
#define TO_CLIENT_NOTIFY_MEASURE_END 12 + TO_CLIENT_NOTIFY_BASE
#define DoCallback(ret) \
MsgBase::Callback(ret, MsgBase::GetCodeInfo(ret));\
#define DoCallbackWithData(ret) \
MsgBase::CallbackWithData(ret, MsgBase::GetCodeInfo(ret));\
typedef void (*FuncCallback)(void* returnMeasureInfo);
struct MsgBase : public LibapiMsg
{
public:
// for test
static MsgBase* msg_ptr1;
public:
static bool bAllRoisConnersCheckIsEnd; // 所有的ROI边缘检测角点检测结束
static bool bCloudProjectIsOk; // 3D投影结束
static int iCameraToLidarMsg; // 2D第一阶段处理结束0无回复 1继续执行 2重新检测 3停止检测
static int iClinetMsg; // 客户端确认0无回复 1继续执行 2重新检测 3停止检测
private:
static FuncCallback pCallback;
public:
std::string mLog;
int mRoiCounts;
int mRoiIndex;
std::string mMsgType;
public:
// for test
static void SetMsgPtr1(MsgBase* msg);
static MsgBase* GetMsgPtr1();
public:
static void SetCallBack(FuncCallback f);
static void Callback(void* data);
static void Callback(int code, std::string errorInfo);
static void CallbackWithData(int code, std::string errorInfo);
static void WaitBool(bool& b);
static void SetWaitBool(bool& b);
static int WaitInt(int& val);
static void SetWaitInt(int& it, int val);
static std::string GetCodeInfo(int code);
};
// 给回调函数使用
typedef struct tagSubRoi
{
public:
long mPparentId;
long mId;
char mInfo[256];
bool isGood;
float vpOffset[2];
float mRoiPoints[4 * 2];
float mInnerConners[4 * 2];
float mInnerConners3D[4 * 3];
float edges[4];
float center[2];
int cloud_size;
float* mVc2D;
float* mVc3D;
float H[9];
}SubRoiData;
typedef struct tagCallbakInfo
{
public:
int code; // 0返回数据1-99999 返回消息
char errorInfo[256];
bool bGetData;
long mId;
char mInfo[256];
char mImPath[256];
char mIm2D3DPtr[256];
int roi_size;
SubRoiData subRois[16];
}CallbackInfo;
#endif