@startuml
title 测量系统主框架结果图

class System_Manager
{
    +System_Manager();
    +~System_Manager();
    +//初始化各个模块,包括雷达,plc,locater,terminor()
    +//1,读取运行环境下setting目录下的laser.prototxt,plc.prototxt,locater.prototxt,terminal.prototxt()
    +//2,根据配置创建雷达,plc,locater,terminal()
    +Error_manager init();
    +//读取protobuf 配置文件()
    +//file:文件()
    +//parameter:要读取的配置()
    +static bool read_proto_param(std::string file, ::google::protobuf::Message& parameter);

    -//plc指令回调函数,当plc收到测量指令后,调用此回调函数()
    -//terminal_id:收到指令的终端编号()
    -//owner:this指针()
    -static Error_manager plc_command_callback(int terminal_id,void* owner);

    -std::vector<Laser_base*>                    m_laser_vector;
    -std::vector<Terminor_Command_Executor*>     m_terminal_vector;
    -Locater*                                    mp_locater;
    -Plc_Communicator*                           mp_plc;

    -//结果检验工具
    -Verify_result*                              mp_verify_result_tool;
    -///terminoal 配置
    -Terminal::Terminor_parameter_all            m_terminal_parameter_all;
    -//万集雷达管理对象
    -Fence_controller*                           mp_wj_controller;

}

note bottom of Plc_Communicator
    详见 plc 模块
end note

note bottom of Verify_result
    详见 verify 模块
end note

note bottom of Fence_controller
    详见 wj_lidar 模块
end note

note bottom of Locater
    详见 locate 模块
end note

note bottom of Laser_base
    详见 laser 模块
end note

note bottom of Terminor_parameter_all
    详见 terminor 模块
end note

note bottom of Terminor_Command_Executor
    详见 terminor 模块
end note

note  left of System_Manager
    系统管理类
    负责各个模块配置的读取
    负责各个模块的创建,运行,释放
end note 

System_Manager --> Plc_Communicator
System_Manager --> Verify_result
System_Manager --> Fence_controller
System_Manager --> Locater
System_Manager --> Laser_base
System_Manager --> Terminor_Command_Executor
System_Manager --> Terminor_parameter_all


@enduml