123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #ifndef WJ_LIDAR_TASK_HH
- #define WJ_LIDAR_TASK_HH
- #include <string.h>
- #include <mutex>
- #include <atomic>
- #include <chrono>
- #include "../task/task_command_manager.h"
- #include "../error_code/error_code.h"
- // 万集测量结果结构体
- typedef struct WJ_LIDAR_MEASURE_RESULT
- {
- int terminal_id;
- float x;
- float y;
- float angle;
- float length;
- float width;
- float height;
- float wheel_base;
- bool correctness;
- } wj_measure_result;
- typedef struct WJ_LIDAR_COMMAND_INFO
- {
- int terminal_id;
- std::chrono::steady_clock::time_point command_time;
- int timeout_in_milliseconds;
- } wj_command;
- /**
- * 万集测量任务单
- * */
- class Wj_lidar_Task : public Task_Base
- {
- public:
- // 父类继承,初始化函数
- virtual Error_manager init();
- // 构造函数
- Wj_lidar_Task();
- // 析构
- ~Wj_lidar_Task();
- // 获取命令
- Error_manager get_command(wj_command &command);
- // 设置测量命令
- Error_manager set_command(wj_command command);
- // 将测量结果存入该任务单
- Error_manager set_result(wj_measure_result result);
- // 将测量结果传出
- Error_manager get_result(wj_measure_result &result);
- // 获取测量结果是否已存入该任务单的指标
- bool get_result_flag();
- private:
- // 测量指令信息
- wj_command m_command;
- // 测量结果
- wj_measure_result m_wj_measure_result;
- // 访问测量结果互斥锁
- std::mutex m_mutex;
- // 标记结果是否已被设置
- std::atomic<bool> mb_result_flag;
- };
- #endif // !WJ_LIDAR_TASK_HH
|