123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- @startuml
- title 终端指令执行模块
- class Terminor_Command_Executor
- {
- + * 构造函数()
- + * parameter:该终端指令配置参数(待定)
- +Terminor_Command_Executor(Terminal::Terminor_parameter parameter);
- +~Terminor_Command_Executor();
-
- + * 获取终端进度状态()
- +TerminorStatu get_terminor_statu();
-
- + * 执行扫描,测量任务,阻塞知道任务完成或超时(单位秒)()
- + * 函数体只检测指令是否能执行,并启动线程执行指令,不等待指令完成.()
- + *lasers:需要启动的雷达()
- + * wj_lidar:万集雷达测量模块()
- + * plc:上传结果工具()
- + * locater:测量算法对象()
- + * verify_tool:结果检验工具,当该参数为NULL时,测量结果不作检验()
- + * 返回指令是否启动成功()
- +Error_manager execute_command(std::vector<Laser_base*> lasers,Fence_controller* wj_lidar,Plc_Communicator* plc,Locater* locater,Verify_result* verify_tool,float timeout=15);
-
- + * 强制正在执行的中断指令()
- +Error_manager force_stop_command();
-
- + * 设置保存文件的root路径()
- + * 执行指令时会在此路径下,生成日期文件夹,格式为:/root_path/year/month/day/YYYYMMDD-HHMMSS文件夹()
- +void set_save_root_path(std::string root);
- -static void thread_command_working(Terminor_Command_Executor* terminor);
- - * 执行指令流程函数()
- - * 扫描()
- - * 测量,保存测量结果到成员变量()
- -Error_manager scanning_measuring();
-
- - * 执行上传plc任务()
- - * plc终端编号从1开始()
-
- -Error_manager post_measure_information();
-
- - * 根据长宽,角度,生成cv::RotateRect()
- -static cv::RotatedRect create_rotate_rect(float length,float width,float angle,float x,float y);
-
- -TerminorStatu m_terminor_statu;
- -//指令流程线程
- -std::thread* mp_command_thread;
- -//
- -std::mutex m_mutex_lock;
- -//保存输入进来的雷达指针
- -std::vector<Laser_base*> mp_laser_vector;
- -//万集雷达测量模块
- -Fence_controller* mp_wj_lidar;
- -//plc
- -Plc_Communicator* mp_plc;
- -//locater*
- -Locater* mp_locater;
- -//配置参数
- -Terminal::Terminor_parameter m_terminor_parameter;
- -//本次指令超时时间 单位秒
- -float m_timeout_second;
- -//强制退出标示
- -bool mb_force_quit;
- -//保存当前指令测量结果
- -Locate_information m_measure_information;
- -//保存文件的root目录
- -std::string m_save_root_path;
- -//检验结果工具
- -Verify_result* mp_verify_tool;
- }
- note left of Terminor_Command_Executor
- * 终端指令执行类,
- * 执行指令,
- * 监控指令执行进度
- * 输入雷达数组,plc对象,测量算法对象,执行扫描测量任务
- * 检验测量结果合法性
- end note
- class Terminor_parameter
- {
- +获取配置参数()
- +从文件流获取配置()
- }
- note bottom of Terminor_parameter
- * 终端配置类,protobuf格式
- *
- end note
- note bottom of Fence_controller
- * 电子围栏雷达测量模块
- * 详见 wj_lidar 模块
- end note
- note bottom of Locater
- * 摆扫/大疆 雷达测量模块
- * 详见 locate 模块
- end note
- note bottom of Plc_Communicator
- * plc 通讯模块
- * 详见 plc 模块
- end note
- note bottom of Verify_result
- * verify : 测量结果检验模块
- * 详见 verify 模块
- end note
- Terminor_Command_Executor <-- Terminor_parameter
- Terminor_Command_Executor <-- Fence_controller
- Terminor_Command_Executor <-- Locater
- Terminor_Command_Executor <-- Plc_Communicator
- Terminor_Command_Executor <-- Verify_result
- @enduml
|