terminor_uml.wsd 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. @startuml
  2. title 终端指令执行模块
  3. class Terminor_Command_Executor
  4. {
  5. + * 构造函数()
  6. + * parameter:该终端指令配置参数(待定)
  7. +Terminor_Command_Executor(Terminal::Terminor_parameter parameter);
  8. +~Terminor_Command_Executor();
  9. + * 获取终端进度状态()
  10. +TerminorStatu get_terminor_statu();
  11. + * 执行扫描,测量任务,阻塞知道任务完成或超时(单位秒)()
  12. + * 函数体只检测指令是否能执行,并启动线程执行指令,不等待指令完成.()
  13. + *lasers:需要启动的雷达()
  14. + * wj_lidar:万集雷达测量模块()
  15. + * plc:上传结果工具()
  16. + * locater:测量算法对象()
  17. + * verify_tool:结果检验工具,当该参数为NULL时,测量结果不作检验()
  18. + * 返回指令是否启动成功()
  19. +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);
  20. + * 强制正在执行的中断指令()
  21. +Error_manager force_stop_command();
  22. + * 设置保存文件的root路径()
  23. + * 执行指令时会在此路径下,生成日期文件夹,格式为:/root_path/year/month/day/YYYYMMDD-HHMMSS文件夹()
  24. +void set_save_root_path(std::string root);
  25. -static void thread_command_working(Terminor_Command_Executor* terminor);
  26. - * 执行指令流程函数()
  27. - * 扫描()
  28. - * 测量,保存测量结果到成员变量()
  29. -Error_manager scanning_measuring();
  30. - * 执行上传plc任务()
  31. - * plc终端编号从1开始()
  32. -Error_manager post_measure_information();
  33. - * 根据长宽,角度,生成cv::RotateRect()
  34. -static cv::RotatedRect create_rotate_rect(float length,float width,float angle,float x,float y);
  35. -TerminorStatu m_terminor_statu;
  36. -//指令流程线程
  37. -std::thread* mp_command_thread;
  38. -//
  39. -std::mutex m_mutex_lock;
  40. -//保存输入进来的雷达指针
  41. -std::vector<Laser_base*> mp_laser_vector;
  42. -//万集雷达测量模块
  43. -Fence_controller* mp_wj_lidar;
  44. -//plc
  45. -Plc_Communicator* mp_plc;
  46. -//locater*
  47. -Locater* mp_locater;
  48. -//配置参数
  49. -Terminal::Terminor_parameter m_terminor_parameter;
  50. -//本次指令超时时间 单位秒
  51. -float m_timeout_second;
  52. -//强制退出标示
  53. -bool mb_force_quit;
  54. -//保存当前指令测量结果
  55. -Locate_information m_measure_information;
  56. -//保存文件的root目录
  57. -std::string m_save_root_path;
  58. -//检验结果工具
  59. -Verify_result* mp_verify_tool;
  60. }
  61. note left of Terminor_Command_Executor
  62. * 终端指令执行类,
  63. * 执行指令,
  64. * 监控指令执行进度
  65. * 输入雷达数组,plc对象,测量算法对象,执行扫描测量任务
  66. * 检验测量结果合法性
  67. end note
  68. class Terminor_parameter
  69. {
  70. +获取配置参数()
  71. +从文件流获取配置()
  72. }
  73. note bottom of Terminor_parameter
  74. * 终端配置类,protobuf格式
  75. *
  76. end note
  77. note bottom of Fence_controller
  78. * 电子围栏雷达测量模块
  79. * 详见 wj_lidar 模块
  80. end note
  81. note bottom of Locater
  82. * 摆扫/大疆 雷达测量模块
  83. * 详见 locate 模块
  84. end note
  85. note bottom of Plc_Communicator
  86. * plc 通讯模块
  87. * 详见 plc 模块
  88. end note
  89. note bottom of Verify_result
  90. * verify : 测量结果检验模块
  91. * 详见 verify 模块
  92. end note
  93. Terminor_Command_Executor <-- Terminor_parameter
  94. Terminor_Command_Executor <-- Fence_controller
  95. Terminor_Command_Executor <-- Locater
  96. Terminor_Command_Executor <-- Plc_Communicator
  97. Terminor_Command_Executor <-- Verify_result
  98. @enduml