#pragma once #include #include "common.h" #include "./modbus/PLCMonitor.h" #include "./src/CalibParam.pb.h" #include "laser/LivoxLaser.h" #include "src/measuretask.h" class CProcess :public QObject { Q_OBJECT public: CProcess(Automatic::stCalibParam param,void* mainWnd=NULL); bool Init(); std::string LastError() { return m_last_error; } void PushTask(uint16_t param , int action_type,bool test=false); size_t TaskQueueSize() { return 0;}//m_thread_queue.QueueSize(); } size_t TaskProcessSize() { return 0;}//m_thread_queue.ProcessSize(); } virtual ~CProcess(); protected: static void action_callback(bool bOn, uint16_t param, void* pointer, int action_type); static void monitor_callback(uint16_t* data, int size,void* pointer); static void create_mat_param(Automatic::stLaserCalibParam laser, double*); protected: signals: void plc_signal(uint16_t* data,int size); public: CLaser** m_laser; modbus::CPLCMonitor m_monitor; protected: tq::IQueue* m_thread_queue; // 激光标定参数和分割算法参数 Automatic::stCalibParam m_laser_calib_param; std::string m_last_error; public: ////获取最近结果 mutable std::mutex m_mutex; void* m_main_wnd; int m_plate_index; }; std::string Error_string(ERROR_CODE code);