huli пре 3 година
родитељ
комит
0f39926100

+ 1 - 0
communication/communication_message.h

@@ -78,6 +78,7 @@ public:
 		
 		eGround_detect_request_msg=0xf0,        //地面雷达测量请求消息
     	eGround_detect_response_msg=0xf1,       //地面雷达测量反馈消息
+		eGround_status_msg=0xf2,                //地面雷达状态消息
 
 
 	};

+ 118 - 2
dispatch/dispatch_communication.cpp

@@ -33,7 +33,7 @@ Error_manager Dispatch_communication::communication_init(int plc_id)
 
 
 
-
+//调度指令
 	t_index = 0;
 	t_variable_information_vector.clear();
 	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved50", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
@@ -179,10 +179,19 @@ Error_manager Dispatch_communication::communication_init(int plc_id)
 	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_reserved218_229", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 12 });
 	t_index += sizeof(unsigned char)*12;
 
-	t_snap7_buf.init(DISPATCH_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Dispatch_response_from_plc_to_manager), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
+	t_snap7_buf.init(DISPATCH_PLC_STATUS_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Dispatch_response_from_plc_to_manager), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
 	m_receive_buf_map[0] = t_snap7_buf;
 
 
+	//调度状态
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(DISPATCH_PLC_STATUS_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Dispatch_plc_status_from_manager_to_plc), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[2] = t_snap7_buf;
+
 	t_index = 0;
 	t_variable_information_vector.clear();
 	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
@@ -193,8 +202,99 @@ Error_manager Dispatch_communication::communication_init(int plc_id)
 
 
 
+	//地面雷达指令
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_center_x", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_center_y", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_angle", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_front_theta", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_length", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_width", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_height", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_wheel_base", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_request_car_wheel_width", typeid(float).name(), t_index,sizeof(float), 1 });
+	t_index += sizeof(float)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_response_locate_correct", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Ground_lidar_response_from_manager_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[3] = t_snap7_buf;
+	t_snap7_buf.init(GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_1 +m_plc_id*100, 0, sizeof(Ground_lidar_response_from_manager_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[4] = t_snap7_buf;
+
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_communication_mode", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_refresh_command", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Ground_lidar_response_from_manager_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[5] = t_snap7_buf;
+	t_snap7_buf.init(GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_1 +m_plc_id*100, 0, sizeof(Ground_lidar_response_from_manager_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[6] = t_snap7_buf;
+
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_communication_mode", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_refresh_command", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(GROUND_LIDAR_REQUEST_FROM_PLC_TO_MANAGER_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Ground_lidar_request_from_plc_to_manager), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
+	m_receive_buf_map[2] = t_snap7_buf;
+	t_snap7_buf.init(GROUND_LIDAR_REQUEST_FROM_PLC_TO_MANAGER_DBNUMBER_1 +m_plc_id*100, 0, sizeof(Ground_lidar_request_from_plc_to_manager), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
+	m_receive_buf_map[3] = t_snap7_buf;
+
 
 
+//防撞雷达
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"Anticollision_lidar_response_from_manager_to_plc_for_data", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Anticollision_lidar_response_from_manager_to_plc_for_data), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[7] = t_snap7_buf;
+
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_communication_mode", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_refresh_command", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Anticollision_lidar_response_from_manager_to_plc_for_key), t_variable_information_vector, Snap7_buf::LOOP_COMMUNICATION);
+	m_send_buf_map[8] = t_snap7_buf;
+
+
+	t_index = 0;
+	t_variable_information_vector.clear();
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_heartbeat", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_communication_mode", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+	t_variable_information_vector.push_back(Snap7_buf::Variable_information{"m_refresh_command", typeid(unsigned char).name(), t_index,sizeof(unsigned char), 1 });
+	t_index += sizeof(unsigned char)*1;
+
+	t_snap7_buf.init(GROUND_LIDAR_REQUEST_FROM_PLC_TO_MANAGER_DBNUMBER_0 +m_plc_id*100, 0, sizeof(Anticollision_lidar_request_from_plc_to_manager), t_variable_information_vector, Snap7_buf::NO_COMMUNICATION);
+	m_receive_buf_map[4] = t_snap7_buf;
+
 	return Snap7_communication_base::communication_init();
 }
 
@@ -213,8 +313,15 @@ Error_manager Dispatch_communication::updata_receive_buf()
 	std::unique_lock<std::mutex> t_lock2(m_data_lock);
 
 	memcpy(&m_dispatch_response_from_plc_to_manager, m_receive_buf_map[0].mp_buf_obverse, m_receive_buf_map[0].m_size);
+
 	memcpy(&m_dispatch_plc_status_from_plc_to_manager, m_receive_buf_map[1].mp_buf_obverse, m_receive_buf_map[1].m_size);
 
+	memcpy(&m_ground_lidar_request_from_plc_to_manager[0], m_receive_buf_map[2].mp_buf_obverse, m_receive_buf_map[2].m_size);
+	memcpy(&m_ground_lidar_request_from_plc_to_manager[1], m_receive_buf_map[3].mp_buf_obverse, m_receive_buf_map[3].m_size);
+
+	memcpy(&m_anticollision_lidar_request_from_plc_to_manager, m_receive_buf_map[4].mp_buf_obverse, m_receive_buf_map[4].m_size);
+
+
 	return Error_code::SUCCESS;
 }
 Error_manager Dispatch_communication::updata_send_buf()
@@ -226,6 +333,15 @@ Error_manager Dispatch_communication::updata_send_buf()
 
 	memcpy(m_send_buf_map[0].mp_buf_obverse, &m_dispatch_request_from_manager_to_plc_for_data, m_send_buf_map[0].m_size);
 	memcpy(m_send_buf_map[1].mp_buf_obverse, &m_dispatch_request_from_manager_to_plc_for_key, m_send_buf_map[1].m_size);
+	memcpy(m_send_buf_map[2].mp_buf_obverse, &m_dispatch_plc_status_from_manager_to_plc, m_send_buf_map[2].m_size);
+
+	memcpy(m_send_buf_map[3].mp_buf_obverse, &m_ground_lidar_response_from_manager_to_plc_for_data[0], m_send_buf_map[3].m_size);
+	memcpy(m_send_buf_map[4].mp_buf_obverse, &m_ground_lidar_response_from_manager_to_plc_for_data[1], m_send_buf_map[4].m_size);
+	memcpy(m_send_buf_map[5].mp_buf_obverse, &m_ground_lidar_response_from_manager_to_plc_for_key[0], m_send_buf_map[5].m_size);
+	memcpy(m_send_buf_map[6].mp_buf_obverse, &m_ground_lidar_response_from_manager_to_plc_for_key[1], m_send_buf_map[6].m_size);
+
+	memcpy(m_send_buf_map[7].mp_buf_obverse, &m_anticollision_lidar_response_from_manager_to_plc_for_data, m_send_buf_map[7].m_size);
+	memcpy(m_send_buf_map[8].mp_buf_obverse, &m_anticollision_lidar_response_from_manager_to_plc_for_key, m_send_buf_map[8].m_size);
 
 	return Error_code::SUCCESS;
 }

+ 98 - 14
dispatch/dispatch_communication.h

@@ -289,7 +289,7 @@ public:
 
 
 //调度管理给plc发送调度指令 的DB编号
-#define DISPATCH_REQUEST_FROM_MANAGER_TO_PLC_DBNUMBER_0		400
+#define DISPATCH_REQUEST_FROM_MANAGER_TO_PLC_DBNUMBER_0		9000
 //调度管理给plc发送调度指令 的结构体
 	struct Dispatch_request_from_manager_to_plc_for_data
 	{
@@ -339,7 +339,7 @@ public:
 	};
 
 //plc给调度管理发送调度答复 的DB编号
-#define DISPATCH_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0		401
+#define DISPATCH_RESPONSE_FROM_PLC_TO_MANAGER_DBNUMBER_0		9001
 //plc给调度管理发送调度答复 的结构体
 	struct Dispatch_response_from_plc_to_manager
 	{
@@ -384,8 +384,17 @@ public:
 
 	};
 
+	//调度管理的的状态信息 的DB编号
+#define DISPATCH_PLC_STATUS_FROM_MANAGER_TO_PLC_DBNUMBER_0		9002
+//调度管理给plc发送状态消息的指令结构体
+	struct Dispatch_plc_status_from_manager_to_plc
+	{
+		unsigned char			m_heartbeat = 0;				//心跳位, 0-255循环
+
+	};
+
 	//plc的状态信息 的DB编号
-#define DISPATCH_PLC_STATUS_FROM_PLC_TO_MANAGER_DBNUMBER_0		404
+#define DISPATCH_PLC_STATUS_FROM_PLC_TO_MANAGER_DBNUMBER_0		9003
 //plc给通道口发送状态消息的指令结构体
 	struct Dispatch_plc_status_from_plc_to_manager
 	{
@@ -395,18 +404,82 @@ public:
 
 
 
+
+
+
+
+	//地面雷达给plc
+#define GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0		9004
+#define GROUND_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_1		9014
+	struct Ground_lidar_response_from_manager_to_plc_for_key
+	{
+		unsigned char			m_heartbeat = 0;							//心跳位, 0-255循环
+		unsigned char			m_communication_mode = 0;					//通信模式	0=自动循环模式,1=手动刷新模式
+		unsigned char			m_refresh_command = 0;						//刷新指令 0-255任意数字,与上一次不同即可
+	};
+
+	struct Ground_lidar_response_from_manager_to_plc_for_data
+	{
+		//汽车的定位信息(地面雷达)
+		float 					m_response_car_center_x = 0;				//整车的中心点x值, 四轮的中心, 单位:米 m
+		float  					m_response_car_center_y = 0;				//整车的中心点y值, 四轮的中心, 单位:米 m
+		float  					m_response_car_angle = 0;					//整车的车身旋转角, 单位:度 (-90~90)
+		float  					m_response_car_front_theta = 0;				//整车的前轮的旋转角, 单位:度 (-90~90)
+		float  					m_response_car_length = 0;					//整车的长度, 用于规避碰撞, 单位:米 m
+		float  					m_response_car_width = 0;					//整车的宽度, 用于规避碰撞, 单位:米 m
+		float  					m_response_car_height = 0;					//整车的高度, 用于规避碰撞, 单位:米 m
+		float  					m_response_car_wheel_base = 0;				//整车的轮距, 前后轮的距离, 用于机器人或agv的抓车, 单位:米 m
+		float  					m_response_car_wheel_width = 0;				//整车的轮距, 左右轮的距离, 用于机器人或agv的抓车, 单位:米 m
+		unsigned char			m_response_locate_correct = 0;				//数据是否有效, 0=无效, 1=有效
+	};
+
+	//plc给地面雷达
+#define GROUND_LIDAR_REQUEST_FROM_PLC_TO_MANAGER_DBNUMBER_0		9005
+#define GROUND_LIDAR_REQUEST_FROM_PLC_TO_MANAGER_DBNUMBER_1		9015
+	struct Ground_lidar_request_from_plc_to_manager
+	{
+		unsigned char			m_heartbeat = 0;							//心跳位, 0-255循环
+		unsigned char			m_communication_mode = 0;					//通信模式	0=自动循环模式,1=手动刷新模式
+		unsigned char			m_refresh_command = 0;						//刷新指令 0-255任意数字,与上一次不同即可
+	};
+
+
+	//防撞雷达给plc
+#define ANTICOLLISION_LIDAR_RESPONSE_FROM_MANAGER_TO_PLC_DBNUMBER_0		9006
+	struct Anticollision_lidar_response_from_manager_to_plc_for_key
+	{
+		unsigned char			m_heartbeat = 0;							//心跳位, 0-255循环
+		unsigned char			m_communication_mode = 0;					//通信模式	0=自动循环模式,1=手动刷新模式
+		unsigned char			m_refresh_command = 0;						//刷新指令 0-255任意数字,与上一次不同即可
+
+	};
+
+	struct Anticollision_lidar_response_from_manager_to_plc_for_data
+	{
+		unsigned char			m_response_anticollision_lidar_flag = 0;		//汽车是否停到正确的位置, 防撞雷达	预留, 楚天暂时不用,0=未知,1=位置正常,2=位置异常
+	};
+
+	//plc给防撞雷达
+#define ANTICOLLISION_LIDAR_REQUEST_FROM_PLC_TO_MANAGER_DBNUMBER_0		9007
+	struct Anticollision_lidar_request_from_plc_to_manager
+	{
+		unsigned char			m_heartbeat = 0;							//心跳位, 0-255循环
+		unsigned char			m_communication_mode = 0;					//通信模式	0=自动循环模式,1=手动刷新模式
+		unsigned char			m_refresh_command = 0;						//刷新指令 0-255任意数字,与上一次不同即可
+	};
+
 #pragma pack(pop)		//取消对齐
 
 // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
-   friend class Singleton<Dispatch_communication>;
+	friend class Singleton<Dispatch_communication>;
 private:
- // 父类的构造函数必须保护,子类的构造函数必须私有。
-   Dispatch_communication();
+	// 父类的构造函数必须保护,子类的构造函数必须私有。
+	Dispatch_communication();
 public:
-    //必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
-    Dispatch_communication(const Dispatch_communication& other) = delete;
-    Dispatch_communication& operator =(const Dispatch_communication& other) = delete;
-    ~Dispatch_communication();
+	//必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
+	Dispatch_communication(const Dispatch_communication& other) = delete;
+	Dispatch_communication& operator =(const Dispatch_communication& other) = delete;
+	~Dispatch_communication();
 public://API functions
 	//初始化 通信 模块。如下三选一
 	virtual Error_manager communication_init(int plc_id);
@@ -446,12 +519,23 @@ public:
 	Passageway_status_from_plc_to_dispatch				m_passageway_status_from_plc_to_dispatch[8];	//plc给通道口发送状态消息的指令结构体
 
 
+	//调度指令
+	Dispatch_request_from_manager_to_plc_for_data				m_dispatch_request_from_manager_to_plc_for_data;
+	Dispatch_request_from_manager_to_plc_for_key				m_dispatch_request_from_manager_to_plc_for_key;
+	Dispatch_response_from_plc_to_manager						m_dispatch_response_from_plc_to_manager;
+	//调度状态
+	Dispatch_plc_status_from_manager_to_plc						m_dispatch_plc_status_from_manager_to_plc;
+	Dispatch_plc_status_from_plc_to_manager						m_dispatch_plc_status_from_plc_to_manager;
 
-	Dispatch_request_from_manager_to_plc_for_data		m_dispatch_request_from_manager_to_plc_for_data;
-	Dispatch_request_from_manager_to_plc_for_key		m_dispatch_request_from_manager_to_plc_for_key;
-	Dispatch_response_from_plc_to_manager				m_dispatch_response_from_plc_to_manager;
-	Dispatch_plc_status_from_plc_to_manager				m_dispatch_plc_status_from_plc_to_manager;
+	//地面雷达指令
+	Ground_lidar_response_from_manager_to_plc_for_data			m_ground_lidar_response_from_manager_to_plc_for_data[2];
+	Ground_lidar_response_from_manager_to_plc_for_key			m_ground_lidar_response_from_manager_to_plc_for_key[2];
+	Ground_lidar_request_from_plc_to_manager					m_ground_lidar_request_from_plc_to_manager[2];
 
+	//防撞雷达指令
+	Anticollision_lidar_response_from_manager_to_plc_for_data	m_anticollision_lidar_response_from_manager_to_plc_for_data;
+	Anticollision_lidar_response_from_manager_to_plc_for_key	m_anticollision_lidar_response_from_manager_to_plc_for_key;
+	Anticollision_lidar_request_from_plc_to_manager				m_anticollision_lidar_request_from_plc_to_manager;
 
 private:
 

+ 69 - 16
dispatch/dispatch_manager.cpp

@@ -164,6 +164,7 @@ Error_manager Dispatch_manager::check_execute_msg(Communication_message* p_msg)
 			break;
 		}
 	}
+	return Error_code::SUCCESS;
 }
 //检查状态
 Error_manager Dispatch_manager::check_status()
@@ -267,7 +268,7 @@ Error_manager Dispatch_manager::encapsulate_send_dispatch_manager_status()
 	t_dispatch_terminal_status_msg.mutable_base_info()->set_sender(message::Communicator::eDispatch_manager);
 	t_dispatch_terminal_status_msg.mutable_base_info()->set_receiver(message::Communicator::eEmpty);
 
-	t_dispatch_terminal_status_msg.set_terminal_id(t_dispatch_manager_id);
+	t_dispatch_terminal_status_msg.set_terminal_id(t_dispatch_manager_id*2);
 	t_dispatch_terminal_status_msg.set_terminal_status(message::Terminal_status::E_TERMINAL_READY);
 	t_dispatch_terminal_status_msg.set_passageway_direction(message::Passageway_direction::E_BILATERAL);
 
@@ -275,21 +276,21 @@ Error_manager Dispatch_manager::encapsulate_send_dispatch_manager_status()
 	System_communication::get_instance_references().encapsulate_msg(t_msg1);
 
 
-//
-//	std::string t_msg2;
-//	//创建一条 调度管理总管理的状态  新版
-//	message::Dispatch_manager_status_msg t_dispatch_manager_status_msg;
-//	t_dispatch_manager_status_msg.mutable_base_info()->set_msg_type(message::Message_type::eDispatch_manager_status_msg);
-//	t_dispatch_manager_status_msg.mutable_base_info()->set_timeout_ms(5000);
-//	t_dispatch_manager_status_msg.mutable_base_info()->set_sender(message::Communicator::eDispatch_manager);
-//	t_dispatch_manager_status_msg.mutable_base_info()->set_receiver(message::Communicator::eEmpty);
-//
-//	t_dispatch_manager_status_msg.set_dispatch_id(t_dispatch_manager_id);
-//	Dispatch_manager::Dispatch_manager_status t_dispatch_manager_status = get_dispatch_manager_status();
-//	t_dispatch_manager_status_msg.set_dispatch_manager_status((message::Dispatch_manager_status)t_dispatch_manager_status);
-//
-//	t_msg2 = t_dispatch_manager_status_msg.SerializeAsString();
-//	System_communication::get_instance_references().encapsulate_msg(t_msg2);
+
+	std::string t_msg2;
+	//创建一条 调度管理总管理的状态  新版
+	message::Dispatch_manager_status_msg t_dispatch_manager_status_msg;
+	t_dispatch_manager_status_msg.mutable_base_info()->set_msg_type(message::Message_type::eDispatch_manager_status_msg);
+	t_dispatch_manager_status_msg.mutable_base_info()->set_timeout_ms(5000);
+	t_dispatch_manager_status_msg.mutable_base_info()->set_sender(message::Communicator::eDispatch_manager);
+	t_dispatch_manager_status_msg.mutable_base_info()->set_receiver(message::Communicator::eEmpty);
+
+	t_dispatch_manager_status_msg.set_dispatch_id(t_dispatch_manager_id*2+1);
+	Dispatch_manager::Dispatch_manager_status t_dispatch_manager_status = get_dispatch_manager_status();
+	t_dispatch_manager_status_msg.set_dispatch_manager_status((message::Dispatch_manager_status)t_dispatch_manager_status);
+
+	t_msg2 = t_dispatch_manager_status_msg.SerializeAsString();
+	System_communication::get_instance_references().encapsulate_msg(t_msg2);
 
 	return Error_code::SUCCESS;
 }
@@ -302,7 +303,59 @@ Error_manager Dispatch_manager::release_dispatch_process(std::string command_key
 	return Error_code::SUCCESS;
 }
 
+//调度模块 ///地面雷达的状态消息(地面雷达->null)
+Error_manager Dispatch_manager::execute_for_ground_status_msg(message::Ground_status_msg ground_status_msg)
+{
+	//将nnxx的protobuf 转化为 snap7的DB块,  把店面雷达数据转发给plc
+	int t_inlet_id = ground_status_msg.terminal_id() %2;
+	std::unique_lock<std::mutex> t_lock(Dispatch_communication::get_instance_references().m_data_lock);
+	Dispatch_communication::Ground_lidar_response_from_manager_to_plc_for_data * p_response_data = & Dispatch_communication::get_instance_references().m_ground_lidar_response_from_manager_to_plc_for_data[t_inlet_id];
+	Dispatch_communication::Ground_lidar_response_from_manager_to_plc_for_key * p_response_key = & Dispatch_communication::get_instance_references().m_ground_lidar_response_from_manager_to_plc_for_key[t_inlet_id];
+	Dispatch_communication::Ground_lidar_request_from_plc_to_manager * p_request = & Dispatch_communication::get_instance_references().m_ground_lidar_request_from_plc_to_manager[t_inlet_id];
+
+	if ( p_request->m_communication_mode == 0 )
+	{
+		p_response_key->m_heartbeat++;
+		p_response_key->m_communication_mode = p_request->m_communication_mode;
+		p_response_key->m_refresh_command = p_request->m_refresh_command;
+
+		p_response_data->m_response_car_center_x = ground_status_msg.locate_information_realtime().locate_x();
+		p_response_data->m_response_car_center_y = ground_status_msg.locate_information_realtime().locate_y();
+		p_response_data->m_response_car_angle = ground_status_msg.locate_information_realtime().locate_angle();
+		p_response_data->m_response_car_front_theta = ground_status_msg.locate_information_realtime().locate_front_theta();
+		p_response_data->m_response_car_length = ground_status_msg.locate_information_realtime().locate_length();
+		p_response_data->m_response_car_width = ground_status_msg.locate_information_realtime().locate_width();
+		p_response_data->m_response_car_height = ground_status_msg.locate_information_realtime().locate_height();
+		p_response_data->m_response_car_wheel_base = ground_status_msg.locate_information_realtime().locate_wheel_base();
+		p_response_data->m_response_car_wheel_width = ground_status_msg.locate_information_realtime().locate_wheel_width();
+		p_response_data->m_response_locate_correct = ground_status_msg.locate_information_realtime().locate_correct();
+	}
+	else if ( p_response_key->m_refresh_command == p_request->m_refresh_command )
+	{
+		p_response_key->m_heartbeat++;
+		p_response_key->m_communication_mode = p_request->m_communication_mode;
+		p_response_key->m_refresh_command = p_request->m_refresh_command;
+	}
+	else
+	{
+		p_response_key->m_heartbeat++;
+		p_response_key->m_communication_mode = p_request->m_communication_mode;
+		p_response_key->m_refresh_command = p_request->m_refresh_command;
+
+		p_response_data->m_response_car_center_x = ground_status_msg.locate_information_realtime().locate_x();
+		p_response_data->m_response_car_center_y = ground_status_msg.locate_information_realtime().locate_y();
+		p_response_data->m_response_car_angle = ground_status_msg.locate_information_realtime().locate_angle();
+		p_response_data->m_response_car_front_theta = ground_status_msg.locate_information_realtime().locate_front_theta();
+		p_response_data->m_response_car_length = ground_status_msg.locate_information_realtime().locate_length();
+		p_response_data->m_response_car_width = ground_status_msg.locate_information_realtime().locate_width();
+		p_response_data->m_response_car_height = ground_status_msg.locate_information_realtime().locate_height();
+		p_response_data->m_response_car_wheel_base = ground_status_msg.locate_information_realtime().locate_wheel_base();
+		p_response_data->m_response_car_wheel_width = ground_status_msg.locate_information_realtime().locate_wheel_width();
+		p_response_data->m_response_locate_correct = ground_status_msg.locate_information_realtime().locate_correct();
+	}
 
+	return Error_code::SUCCESS;
+}
 
 
 

+ 3 - 0
dispatch/dispatch_manager.h

@@ -25,6 +25,7 @@
 #include "../message/dispatch_message.pb.h"
 #include "../dispatch/dispatch_parameter.pb.h"
 #include "../dispatch/dispatch_plc.h"
+#include "../message/measure_message.pb.h"
 
 
 #include <vector>
@@ -124,6 +125,8 @@ public://API functions
 	//在流程的map 里面释放指定的流程
 	Error_manager release_dispatch_process(std::string command_key);
 
+	//调度模块 ///地面雷达的状态消息(地面雷达->null)
+	Error_manager execute_for_ground_status_msg(message::Ground_status_msg ground_status_msg);
 
 
 

+ 148 - 317
message/measure_message.pb.cc

@@ -81,7 +81,6 @@ void InitDefaultsMeasure_status_msgImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
-  protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
   {
     void* ptr = &::message::_Measure_status_msg_default_instance_;
@@ -199,6 +198,7 @@ void InitDefaultsGround_status_msgImpl() {
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
+  protobuf_measure_5fmessage_2eproto::InitDefaultsCloud_coordinate();
   {
     void* ptr = &::message::_Ground_status_msg_default_instance_;
     new (ptr) ::message::Ground_status_msg();
@@ -315,20 +315,12 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, laser_manager_status_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, laser_statu_vector_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, locate_manager_status_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, wanji_manager_status_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, wanji_lidar_device_status_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, region_worker_status_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, locate_information_realtime_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_status_msg, error_manager_),
   0,
   2,
   3,
   ~0u,
   4,
-  5,
-  ~0u,
-  ~0u,
-  ~0u,
   1,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_request_msg, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Measure_request_msg, _internal_metadata_),
@@ -395,6 +387,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Ground_status_msg, locate_information_realtime_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Ground_status_msg, ground_status_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Ground_status_msg, error_manager_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Ground_status_msg, cloud_),
   0,
   3,
   4,
@@ -403,6 +396,7 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   1,
   6,
   2,
+  ~0u,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Cloud_coordinate, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Cloud_coordinate, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -455,16 +449,16 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   2,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, 15, sizeof(::message::Measure_status_msg)},
-  { 25, 33, sizeof(::message::Measure_request_msg)},
-  { 36, 46, sizeof(::message::Measure_response_msg)},
-  { 51, 59, sizeof(::message::Ground_detect_request_msg)},
-  { 62, 72, sizeof(::message::Ground_detect_response_msg)},
-  { 77, 90, sizeof(::message::Ground_status_msg)},
-  { 98, 106, sizeof(::message::Cloud_coordinate)},
-  { 109, 115, sizeof(::message::Cloud_type)},
-  { 116, 126, sizeof(::message::Locate_sift_request_msg)},
-  { 131, 142, sizeof(::message::Locate_sift_response_msg)},
+  { 0, 11, sizeof(::message::Measure_status_msg)},
+  { 17, 25, sizeof(::message::Measure_request_msg)},
+  { 28, 38, sizeof(::message::Measure_response_msg)},
+  { 43, 51, sizeof(::message::Ground_detect_request_msg)},
+  { 54, 64, sizeof(::message::Ground_detect_response_msg)},
+  { 69, 83, sizeof(::message::Ground_status_msg)},
+  { 92, 100, sizeof(::message::Cloud_coordinate)},
+  { 103, 109, sizeof(::message::Cloud_type)},
+  { 110, 120, sizeof(::message::Locate_sift_request_msg)},
+  { 125, 136, sizeof(::message::Locate_sift_response_msg)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -503,91 +497,85 @@ void AddDescriptorsImpl() {
   InitDefaults();
   static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
       "\n\025measure_message.proto\022\007message\032\022messag"
-      "e_base.proto\"\260\004\n\022Measure_status_msg\022%\n\tb"
+      "e_base.proto\"\255\002\n\022Measure_status_msg\022%\n\tb"
       "ase_info\030\001 \002(\0132\022.message.Base_info\022\023\n\013te"
       "rminal_id\030\002 \002(\005\022;\n\024laser_manager_status\030"
       "\003 \002(\0162\035.message.Laser_manager_status\0220\n\022"
       "laser_statu_vector\030\004 \003(\0162\024.message.Laser"
       "_statu\022=\n\025locate_manager_status\030\005 \002(\0162\036."
-      "message.Locate_manager_status\022;\n\024wanji_m"
-      "anager_status\030\006 \002(\0162\035.message.Wanji_mana"
-      "ger_status\022E\n\031wanji_lidar_device_status\030"
-      "\007 \003(\0162\".message.Wanji_lidar_device_statu"
-      "s\022;\n\024region_worker_status\030\010 \003(\0162\035.messag"
-      "e.Region_worker_status\022@\n\033locate_informa"
-      "tion_realtime\030\t \003(\0132\033.message.Locate_inf"
-      "ormation\022-\n\rerror_manager\030\n \002(\0132\026.messag"
-      "e.Error_manager\"f\n\023Measure_request_msg\022%"
-      "\n\tbase_info\030\001 \002(\0132\022.message.Base_info\022\023\n"
-      "\013command_key\030\002 \002(\t\022\023\n\013terminal_id\030\003 \002(\005\""
-      "\317\001\n\024Measure_response_msg\022%\n\tbase_info\030\001 "
-      "\002(\0132\022.message.Base_info\022\023\n\013command_key\030\002"
-      " \002(\t\022\023\n\013terminal_id\030\003 \002(\005\0227\n\022locate_info"
-      "rmation\030\004 \001(\0132\033.message.Locate_informati"
-      "on\022-\n\rerror_manager\030\005 \002(\0132\026.message.Erro"
-      "r_manager\"l\n\031Ground_detect_request_msg\022%"
-      "\n\tbase_info\030\001 \002(\0132\022.message.Base_info\022\023\n"
-      "\013command_key\030\002 \002(\t\022\023\n\013terminal_id\030\003 \002(\005\""
-      "\325\001\n\032Ground_detect_response_msg\022%\n\tbase_i"
-      "nfo\030\001 \002(\0132\022.message.Base_info\022\023\n\013command"
-      "_key\030\002 \002(\t\022\023\n\013terminal_id\030\003 \002(\005\0227\n\022locat"
-      "e_information\030\004 \001(\0132\033.message.Locate_inf"
-      "ormation\022-\n\rerror_manager\030\005 \002(\0132\026.messag"
-      "e.Error_manager\"\257\003\n\021Ground_status_msg\022%\n"
-      "\tbase_info\030\001 \002(\0132\022.message.Base_info\022\023\n\013"
-      "terminal_id\030\002 \002(\005\022;\n\024wanji_manager_statu"
-      "s\030\003 \002(\0162\035.message.Wanji_manager_status\022E"
-      "\n\031wanji_lidar_device_status\030\004 \003(\0162\".mess"
-      "age.Wanji_lidar_device_status\022;\n\024region_"
-      "worker_status\030\005 \002(\0162\035.message.Region_wor"
-      "ker_status\022@\n\033locate_information_realtim"
-      "e\030\006 \002(\0132\033.message.Locate_information\022,\n\r"
-      "ground_status\030\007 \002(\0162\025.message.Ground_sta"
-      "tu\022-\n\rerror_manager\030\010 \002(\0132\026.message.Erro"
-      "r_manager\"3\n\020Cloud_coordinate\022\t\n\001x\030\001 \002(\002"
-      "\022\t\n\001y\030\002 \002(\002\022\t\n\001z\030\003 \002(\002\"\032\n\nCloud_type\022\014\n\004"
-      "type\030\001 \002(\005\"\262\001\n\027Locate_sift_request_msg\022%"
-      "\n\tbase_info\030\001 \002(\0132\022.message.Base_info\022\023\n"
-      "\013command_key\030\002 \002(\t\022\023\n\013terminal_id\030\003 \002(\005\022"
-      "\020\n\010lidar_id\030\004 \002(\005\0224\n\021cloud_coordinates\030\005"
-      " \003(\0132\031.message.Cloud_coordinate\"\325\001\n\030Loca"
-      "te_sift_response_msg\022%\n\tbase_info\030\001 \002(\0132"
-      "\022.message.Base_info\022\023\n\013command_key\030\002 \002(\t"
-      "\022\023\n\013terminal_id\030\003 \002(\005\022\020\n\010lidar_id\030\004 \002(\005\022"
-      "\'\n\ncloud_type\030\005 \003(\0132\023.message.Cloud_type"
-      "\022-\n\rerror_manager\030\006 \002(\0132\026.message.Error_"
-      "manager*\237\001\n\024Laser_manager_status\022\030\n\024LASE"
-      "R_MANAGER_UNKNOW\020\000\022\027\n\023LASER_MANAGER_READ"
-      "Y\020\001\022\035\n\031LASER_MANAGER_ISSUED_TASK\020\002\022\034\n\030LA"
-      "SER_MANAGER_WAIT_REPLY\020\003\022\027\n\023LASER_MANAGE"
-      "R_FAULT\020\004*U\n\013Laser_statu\022\024\n\020LASER_DISCON"
-      "NECT\020\000\022\017\n\013LASER_READY\020\001\022\016\n\nLASER_BUSY\020\002\022"
-      "\017\n\013LASER_FAULT\020\003*\261\001\n\025Locate_manager_stat"
-      "us\022\031\n\025LOCATE_MANAGER_UNKNOW\020\000\022\030\n\024LOCATE_"
-      "MANAGER_READY\020\001\022\027\n\023LOCATE_MANAGER_SIFT\020\002"
-      "\022\026\n\022LOCATE_MANAGER_CAR\020\003\022\030\n\024LOCATE_MANAG"
-      "ER_WHEEL\020\004\022\030\n\024LOCATE_MANAGER_FAULT\020\005*\367\001\n"
-      "\024Wanji_manager_status\022\031\n\025WANJI_MANAGER_U"
-      "NKNOWN\020\000\022\027\n\023WANJI_MANAGER_READY\020\001\022\026\n\022WAN"
-      "JI_MANAGER_BUSY\020\002\022\035\n\031WANJI_MANAGER_ISSUE"
-      "D_SCAN\020\003\022\033\n\027WANJI_MANAGER_WAIT_SCAN\020\004\022\037\n"
-      "\033WANJI_MANAGER_ISSUED_DETECT\020\005\022\035\n\031WANJI_"
-      "MANAGER_WAIT_DETECT\020\006\022\027\n\023WANJI_MANAGER_F"
-      "AULT\020\n*\267\001\n\031Wanji_lidar_device_status\022\036\n\032"
-      "WANJI_LIDAR_DEVICE_UNKNOWN\020\000\022\034\n\030WANJI_LI"
-      "DAR_DEVICE_READY\020\001\022!\n\035WANJI_LIDAR_DEVICE"
-      "_DISCONNECT\020\002\022\033\n\027WANJI_LIDAR_DEVICE_BUSY"
-      "\020\003\022\034\n\030WANJI_LIDAR_DEVICE_FAULT\020\n*{\n\024Regi"
-      "on_worker_status\022\031\n\025REGION_WORKER_UNKNOW"
-      "N\020\000\022\027\n\023REGION_WORKER_READY\020\001\022\026\n\022REGION_W"
-      "ORKER_BUSY\020\002\022\027\n\023REGION_WORKER_FAULT\020\n*\201\001"
-      "\n\014Ground_statu\022\013\n\007Nothing\020\000\022\t\n\005Noise\020\001\022\017"
-      "\n\013Car_correct\020\002\022\020\n\014Car_left_out\020\003\022\021\n\rCar"
-      "_right_out\020\004\022\017\n\013Car_top_out\020\005\022\022\n\016Car_bot"
-      "tom_out\020\006"
+      "message.Locate_manager_status\022-\n\rerror_m"
+      "anager\030\006 \002(\0132\026.message.Error_manager\"f\n\023"
+      "Measure_request_msg\022%\n\tbase_info\030\001 \002(\0132\022"
+      ".message.Base_info\022\023\n\013command_key\030\002 \002(\t\022"
+      "\023\n\013terminal_id\030\003 \002(\005\"\317\001\n\024Measure_respons"
+      "e_msg\022%\n\tbase_info\030\001 \002(\0132\022.message.Base_"
+      "info\022\023\n\013command_key\030\002 \002(\t\022\023\n\013terminal_id"
+      "\030\003 \002(\005\0227\n\022locate_information\030\004 \001(\0132\033.mes"
+      "sage.Locate_information\022-\n\rerror_manager"
+      "\030\005 \002(\0132\026.message.Error_manager\"l\n\031Ground"
+      "_detect_request_msg\022%\n\tbase_info\030\001 \002(\0132\022"
+      ".message.Base_info\022\023\n\013command_key\030\002 \002(\t\022"
+      "\023\n\013terminal_id\030\003 \002(\005\"\325\001\n\032Ground_detect_r"
+      "esponse_msg\022%\n\tbase_info\030\001 \002(\0132\022.message"
+      ".Base_info\022\023\n\013command_key\030\002 \002(\t\022\023\n\013termi"
+      "nal_id\030\003 \002(\005\0227\n\022locate_information\030\004 \001(\013"
+      "2\033.message.Locate_information\022-\n\rerror_m"
+      "anager\030\005 \002(\0132\026.message.Error_manager\"\331\003\n"
+      "\021Ground_status_msg\022%\n\tbase_info\030\001 \002(\0132\022."
+      "message.Base_info\022\023\n\013terminal_id\030\002 \002(\005\022;"
+      "\n\024wanji_manager_status\030\003 \002(\0162\035.message.W"
+      "anji_manager_status\022E\n\031wanji_lidar_devic"
+      "e_status\030\004 \003(\0162\".message.Wanji_lidar_dev"
+      "ice_status\022;\n\024region_worker_status\030\005 \002(\016"
+      "2\035.message.Region_worker_status\022@\n\033locat"
+      "e_information_realtime\030\006 \002(\0132\033.message.L"
+      "ocate_information\022,\n\rground_status\030\007 \002(\016"
+      "2\025.message.Ground_statu\022-\n\rerror_manager"
+      "\030\010 \002(\0132\026.message.Error_manager\022(\n\005cloud\030"
+      "\t \003(\0132\031.message.Cloud_coordinate\"3\n\020Clou"
+      "d_coordinate\022\t\n\001x\030\001 \002(\002\022\t\n\001y\030\002 \002(\002\022\t\n\001z\030"
+      "\003 \002(\002\"\032\n\nCloud_type\022\014\n\004type\030\001 \002(\005\"\262\001\n\027Lo"
+      "cate_sift_request_msg\022%\n\tbase_info\030\001 \002(\013"
+      "2\022.message.Base_info\022\023\n\013command_key\030\002 \002("
+      "\t\022\023\n\013terminal_id\030\003 \002(\005\022\020\n\010lidar_id\030\004 \002(\005"
+      "\0224\n\021cloud_coordinates\030\005 \003(\0132\031.message.Cl"
+      "oud_coordinate\"\325\001\n\030Locate_sift_response_"
+      "msg\022%\n\tbase_info\030\001 \002(\0132\022.message.Base_in"
+      "fo\022\023\n\013command_key\030\002 \002(\t\022\023\n\013terminal_id\030\003"
+      " \002(\005\022\020\n\010lidar_id\030\004 \002(\005\022\'\n\ncloud_type\030\005 \003"
+      "(\0132\023.message.Cloud_type\022-\n\rerror_manager"
+      "\030\006 \002(\0132\026.message.Error_manager*\237\001\n\024Laser"
+      "_manager_status\022\030\n\024LASER_MANAGER_UNKNOW\020"
+      "\000\022\027\n\023LASER_MANAGER_READY\020\001\022\035\n\031LASER_MANA"
+      "GER_ISSUED_TASK\020\002\022\034\n\030LASER_MANAGER_WAIT_"
+      "REPLY\020\003\022\027\n\023LASER_MANAGER_FAULT\020\004*U\n\013Lase"
+      "r_statu\022\024\n\020LASER_DISCONNECT\020\000\022\017\n\013LASER_R"
+      "EADY\020\001\022\016\n\nLASER_BUSY\020\002\022\017\n\013LASER_FAULT\020\003*"
+      "\261\001\n\025Locate_manager_status\022\031\n\025LOCATE_MANA"
+      "GER_UNKNOW\020\000\022\030\n\024LOCATE_MANAGER_READY\020\001\022\027"
+      "\n\023LOCATE_MANAGER_SIFT\020\002\022\026\n\022LOCATE_MANAGE"
+      "R_CAR\020\003\022\030\n\024LOCATE_MANAGER_WHEEL\020\004\022\030\n\024LOC"
+      "ATE_MANAGER_FAULT\020\005*\367\001\n\024Wanji_manager_st"
+      "atus\022\031\n\025WANJI_MANAGER_UNKNOWN\020\000\022\027\n\023WANJI"
+      "_MANAGER_READY\020\001\022\026\n\022WANJI_MANAGER_BUSY\020\002"
+      "\022\035\n\031WANJI_MANAGER_ISSUED_SCAN\020\003\022\033\n\027WANJI"
+      "_MANAGER_WAIT_SCAN\020\004\022\037\n\033WANJI_MANAGER_IS"
+      "SUED_DETECT\020\005\022\035\n\031WANJI_MANAGER_WAIT_DETE"
+      "CT\020\006\022\027\n\023WANJI_MANAGER_FAULT\020\n*\267\001\n\031Wanji_"
+      "lidar_device_status\022\036\n\032WANJI_LIDAR_DEVIC"
+      "E_UNKNOWN\020\000\022\034\n\030WANJI_LIDAR_DEVICE_READY\020"
+      "\001\022!\n\035WANJI_LIDAR_DEVICE_DISCONNECT\020\002\022\033\n\027"
+      "WANJI_LIDAR_DEVICE_BUSY\020\003\022\034\n\030WANJI_LIDAR"
+      "_DEVICE_FAULT\020\n*{\n\024Region_worker_status\022"
+      "\031\n\025REGION_WORKER_UNKNOWN\020\000\022\027\n\023REGION_WOR"
+      "KER_READY\020\001\022\026\n\022REGION_WORKER_BUSY\020\002\022\027\n\023R"
+      "EGION_WORKER_FAULT\020\n*\201\001\n\014Ground_statu\022\013\n"
+      "\007Nothing\020\000\022\t\n\005Noise\020\001\022\017\n\013Car_correct\020\002\022\020"
+      "\n\014Car_left_out\020\003\022\021\n\rCar_right_out\020\004\022\017\n\013C"
+      "ar_top_out\020\005\022\022\n\016Car_bottom_out\020\006"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 3289);
+      descriptor, 3072);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "measure_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -741,9 +729,6 @@ void Measure_status_msg::clear_base_info() {
   if (base_info_ != NULL) base_info_->Clear();
   clear_has_base_info();
 }
-void Measure_status_msg::clear_locate_information_realtime() {
-  locate_information_realtime_.Clear();
-}
 void Measure_status_msg::clear_error_manager() {
   if (error_manager_ != NULL) error_manager_->Clear();
   clear_has_error_manager();
@@ -754,10 +739,6 @@ const int Measure_status_msg::kTerminalIdFieldNumber;
 const int Measure_status_msg::kLaserManagerStatusFieldNumber;
 const int Measure_status_msg::kLaserStatuVectorFieldNumber;
 const int Measure_status_msg::kLocateManagerStatusFieldNumber;
-const int Measure_status_msg::kWanjiManagerStatusFieldNumber;
-const int Measure_status_msg::kWanjiLidarDeviceStatusFieldNumber;
-const int Measure_status_msg::kRegionWorkerStatusFieldNumber;
-const int Measure_status_msg::kLocateInformationRealtimeFieldNumber;
 const int Measure_status_msg::kErrorManagerFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
@@ -774,10 +755,7 @@ Measure_status_msg::Measure_status_msg(const Measure_status_msg& from)
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0),
-      laser_statu_vector_(from.laser_statu_vector_),
-      wanji_lidar_device_status_(from.wanji_lidar_device_status_),
-      region_worker_status_(from.region_worker_status_),
-      locate_information_realtime_(from.locate_information_realtime_) {
+      laser_statu_vector_(from.laser_statu_vector_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_base_info()) {
     base_info_ = new ::message::Base_info(*from.base_info_);
@@ -790,16 +768,16 @@ Measure_status_msg::Measure_status_msg(const Measure_status_msg& from)
     error_manager_ = NULL;
   }
   ::memcpy(&terminal_id_, &from.terminal_id_,
-    static_cast<size_t>(reinterpret_cast<char*>(&wanji_manager_status_) -
-    reinterpret_cast<char*>(&terminal_id_)) + sizeof(wanji_manager_status_));
+    static_cast<size_t>(reinterpret_cast<char*>(&locate_manager_status_) -
+    reinterpret_cast<char*>(&terminal_id_)) + sizeof(locate_manager_status_));
   // @@protoc_insertion_point(copy_constructor:message.Measure_status_msg)
 }
 
 void Measure_status_msg::SharedCtor() {
   _cached_size_ = 0;
   ::memset(&base_info_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&wanji_manager_status_) -
-      reinterpret_cast<char*>(&base_info_)) + sizeof(wanji_manager_status_));
+      reinterpret_cast<char*>(&locate_manager_status_) -
+      reinterpret_cast<char*>(&base_info_)) + sizeof(locate_manager_status_));
 }
 
 Measure_status_msg::~Measure_status_msg() {
@@ -842,9 +820,6 @@ void Measure_status_msg::Clear() {
   (void) cached_has_bits;
 
   laser_statu_vector_.Clear();
-  wanji_lidar_device_status_.Clear();
-  region_worker_status_.Clear();
-  locate_information_realtime_.Clear();
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 3u) {
     if (cached_has_bits & 0x00000001u) {
@@ -856,10 +831,10 @@ void Measure_status_msg::Clear() {
       error_manager_->Clear();
     }
   }
-  if (cached_has_bits & 60u) {
+  if (cached_has_bits & 28u) {
     ::memset(&terminal_id_, 0, static_cast<size_t>(
-        reinterpret_cast<char*>(&wanji_manager_status_) -
-        reinterpret_cast<char*>(&terminal_id_)) + sizeof(wanji_manager_status_));
+        reinterpret_cast<char*>(&locate_manager_status_) -
+        reinterpret_cast<char*>(&terminal_id_)) + sizeof(locate_manager_status_));
   }
   _has_bits_.Clear();
   _internal_metadata_.Clear();
@@ -970,99 +945,10 @@ bool Measure_status_msg::MergePartialFromCodedStream(
         break;
       }
 
-      // required .message.Wanji_manager_status wanji_manager_status = 6;
+      // required .message.Error_manager error_manager = 6;
       case 6: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(48u /* 48 & 0xFF */)) {
-          int value;
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          if (::message::Wanji_manager_status_IsValid(value)) {
-            set_wanji_manager_status(static_cast< ::message::Wanji_manager_status >(value));
-          } else {
-            mutable_unknown_fields()->AddVarint(
-                6, static_cast< ::google::protobuf::uint64>(value));
-          }
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .message.Wanji_lidar_device_status wanji_lidar_device_status = 7;
-      case 7: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(56u /* 56 & 0xFF */)) {
-          int value;
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          if (::message::Wanji_lidar_device_status_IsValid(value)) {
-            add_wanji_lidar_device_status(static_cast< ::message::Wanji_lidar_device_status >(value));
-          } else {
-            mutable_unknown_fields()->AddVarint(
-                7, static_cast< ::google::protobuf::uint64>(value));
-          }
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormat::ReadPackedEnumPreserveUnknowns(
-                 input,
-                 7,
-                 ::message::Wanji_lidar_device_status_IsValid,
-                 mutable_unknown_fields(),
-                 this->mutable_wanji_lidar_device_status())));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .message.Region_worker_status region_worker_status = 8;
-      case 8: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {
-          int value;
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
-                 input, &value)));
-          if (::message::Region_worker_status_IsValid(value)) {
-            add_region_worker_status(static_cast< ::message::Region_worker_status >(value));
-          } else {
-            mutable_unknown_fields()->AddVarint(
-                8, static_cast< ::google::protobuf::uint64>(value));
-          }
-        } else if (
-            static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
-          DO_((::google::protobuf::internal::WireFormat::ReadPackedEnumPreserveUnknowns(
-                 input,
-                 8,
-                 ::message::Region_worker_status_IsValid,
-                 mutable_unknown_fields(),
-                 this->mutable_region_worker_status())));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // repeated .message.Locate_information locate_information_realtime = 9;
-      case 9: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_locate_information_realtime()));
-        } else {
-          goto handle_unusual;
-        }
-        break;
-      }
-
-      // required .message.Error_manager error_manager = 10;
-      case 10: {
-        if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
+            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, mutable_error_manager()));
         } else {
@@ -1127,35 +1013,10 @@ void Measure_status_msg::SerializeWithCachedSizes(
       5, this->locate_manager_status(), output);
   }
 
-  // required .message.Wanji_manager_status wanji_manager_status = 6;
-  if (cached_has_bits & 0x00000020u) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      6, this->wanji_manager_status(), output);
-  }
-
-  // repeated .message.Wanji_lidar_device_status wanji_lidar_device_status = 7;
-  for (int i = 0, n = this->wanji_lidar_device_status_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      7, this->wanji_lidar_device_status(i), output);
-  }
-
-  // repeated .message.Region_worker_status region_worker_status = 8;
-  for (int i = 0, n = this->region_worker_status_size(); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteEnum(
-      8, this->region_worker_status(i), output);
-  }
-
-  // repeated .message.Locate_information locate_information_realtime = 9;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->locate_information_realtime_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      9, this->locate_information_realtime(static_cast<int>(i)), output);
-  }
-
-  // required .message.Error_manager error_manager = 10;
+  // required .message.Error_manager error_manager = 6;
   if (cached_has_bits & 0x00000002u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      10, *this->error_manager_, output);
+      6, *this->error_manager_, output);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1201,33 +1062,11 @@ void Measure_status_msg::SerializeWithCachedSizes(
       5, this->locate_manager_status(), target);
   }
 
-  // required .message.Wanji_manager_status wanji_manager_status = 6;
-  if (cached_has_bits & 0x00000020u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-      6, this->wanji_manager_status(), target);
-  }
-
-  // repeated .message.Wanji_lidar_device_status wanji_lidar_device_status = 7;
-  target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-    7, this->wanji_lidar_device_status_, target);
-
-  // repeated .message.Region_worker_status region_worker_status = 8;
-  target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
-    8, this->region_worker_status_, target);
-
-  // repeated .message.Locate_information locate_information_realtime = 9;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->locate_information_realtime_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageToArray(
-        9, this->locate_information_realtime(static_cast<int>(i)), deterministic, target);
-  }
-
-  // required .message.Error_manager error_manager = 10;
+  // required .message.Error_manager error_manager = 6;
   if (cached_has_bits & 0x00000002u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
-        10, *this->error_manager_, deterministic, target);
+        6, *this->error_manager_, deterministic, target);
   }
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -1250,7 +1089,7 @@ size_t Measure_status_msg::RequiredFieldsByteSizeFallback() const {
   }
 
   if (has_error_manager()) {
-    // required .message.Error_manager error_manager = 10;
+    // required .message.Error_manager error_manager = 6;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->error_manager_);
@@ -1275,12 +1114,6 @@ size_t Measure_status_msg::RequiredFieldsByteSizeFallback() const {
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->locate_manager_status());
   }
 
-  if (has_wanji_manager_status()) {
-    // required .message.Wanji_manager_status wanji_manager_status = 6;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->wanji_manager_status());
-  }
-
   return total_size;
 }
 size_t Measure_status_msg::ByteSizeLong() const {
@@ -1292,13 +1125,13 @@ size_t Measure_status_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         _internal_metadata_.unknown_fields());
   }
-  if (((_has_bits_[0] & 0x0000003f) ^ 0x0000003f) == 0) {  // All required fields are present.
+  if (((_has_bits_[0] & 0x0000001f) ^ 0x0000001f) == 0) {  // All required fields are present.
     // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->base_info_);
 
-    // required .message.Error_manager error_manager = 10;
+    // required .message.Error_manager error_manager = 6;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->error_manager_);
@@ -1316,10 +1149,6 @@ size_t Measure_status_msg::ByteSizeLong() const {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->locate_manager_status());
 
-    // required .message.Wanji_manager_status wanji_manager_status = 6;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->wanji_manager_status());
-
   } else {
     total_size += RequiredFieldsByteSizeFallback();
   }
@@ -1333,37 +1162,6 @@ size_t Measure_status_msg::ByteSizeLong() const {
     total_size += (1UL * count) + data_size;
   }
 
-  // repeated .message.Wanji_lidar_device_status wanji_lidar_device_status = 7;
-  {
-    size_t data_size = 0;
-    unsigned int count = static_cast<unsigned int>(this->wanji_lidar_device_status_size());for (unsigned int i = 0; i < count; i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
-        this->wanji_lidar_device_status(static_cast<int>(i)));
-    }
-    total_size += (1UL * count) + data_size;
-  }
-
-  // repeated .message.Region_worker_status region_worker_status = 8;
-  {
-    size_t data_size = 0;
-    unsigned int count = static_cast<unsigned int>(this->region_worker_status_size());for (unsigned int i = 0; i < count; i++) {
-      data_size += ::google::protobuf::internal::WireFormatLite::EnumSize(
-        this->region_worker_status(static_cast<int>(i)));
-    }
-    total_size += (1UL * count) + data_size;
-  }
-
-  // repeated .message.Locate_information locate_information_realtime = 9;
-  {
-    unsigned int count = static_cast<unsigned int>(this->locate_information_realtime_size());
-    total_size += 1UL * count;
-    for (unsigned int i = 0; i < count; i++) {
-      total_size +=
-        ::google::protobuf::internal::WireFormatLite::MessageSize(
-          this->locate_information_realtime(static_cast<int>(i)));
-    }
-  }
-
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -1394,11 +1192,8 @@ void Measure_status_msg::MergeFrom(const Measure_status_msg& from) {
   (void) cached_has_bits;
 
   laser_statu_vector_.MergeFrom(from.laser_statu_vector_);
-  wanji_lidar_device_status_.MergeFrom(from.wanji_lidar_device_status_);
-  region_worker_status_.MergeFrom(from.region_worker_status_);
-  locate_information_realtime_.MergeFrom(from.locate_information_realtime_);
   cached_has_bits = from._has_bits_[0];
-  if (cached_has_bits & 63u) {
+  if (cached_has_bits & 31u) {
     if (cached_has_bits & 0x00000001u) {
       mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
@@ -1414,9 +1209,6 @@ void Measure_status_msg::MergeFrom(const Measure_status_msg& from) {
     if (cached_has_bits & 0x00000010u) {
       locate_manager_status_ = from.locate_manager_status_;
     }
-    if (cached_has_bits & 0x00000020u) {
-      wanji_manager_status_ = from.wanji_manager_status_;
-    }
     _has_bits_[0] |= cached_has_bits;
   }
 }
@@ -1436,7 +1228,7 @@ void Measure_status_msg::CopyFrom(const Measure_status_msg& from) {
 }
 
 bool Measure_status_msg::IsInitialized() const {
-  if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false;
+  if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false;
   if (has_base_info()) {
     if (!this->base_info_->IsInitialized()) return false;
   }
@@ -1453,15 +1245,11 @@ void Measure_status_msg::Swap(Measure_status_msg* other) {
 void Measure_status_msg::InternalSwap(Measure_status_msg* other) {
   using std::swap;
   laser_statu_vector_.InternalSwap(&other->laser_statu_vector_);
-  wanji_lidar_device_status_.InternalSwap(&other->wanji_lidar_device_status_);
-  region_worker_status_.InternalSwap(&other->region_worker_status_);
-  locate_information_realtime_.InternalSwap(&other->locate_information_realtime_);
   swap(base_info_, other->base_info_);
   swap(error_manager_, other->error_manager_);
   swap(terminal_id_, other->terminal_id_);
   swap(laser_manager_status_, other->laser_manager_status_);
   swap(locate_manager_status_, other->locate_manager_status_);
-  swap(wanji_manager_status_, other->wanji_manager_status_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
@@ -3308,6 +3096,7 @@ const int Ground_status_msg::kRegionWorkerStatusFieldNumber;
 const int Ground_status_msg::kLocateInformationRealtimeFieldNumber;
 const int Ground_status_msg::kGroundStatusFieldNumber;
 const int Ground_status_msg::kErrorManagerFieldNumber;
+const int Ground_status_msg::kCloudFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Ground_status_msg::Ground_status_msg()
@@ -3323,7 +3112,8 @@ Ground_status_msg::Ground_status_msg(const Ground_status_msg& from)
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0),
-      wanji_lidar_device_status_(from.wanji_lidar_device_status_) {
+      wanji_lidar_device_status_(from.wanji_lidar_device_status_),
+      cloud_(from.cloud_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_base_info()) {
     base_info_ = new ::message::Base_info(*from.base_info_);
@@ -3394,6 +3184,7 @@ void Ground_status_msg::Clear() {
   (void) cached_has_bits;
 
   wanji_lidar_device_status_.Clear();
+  cloud_.Clear();
   cached_has_bits = _has_bits_[0];
   if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
@@ -3567,6 +3358,17 @@ bool Ground_status_msg::MergePartialFromCodedStream(
         break;
       }
 
+      // repeated .message.Cloud_coordinate cloud = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_cloud()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -3641,6 +3443,13 @@ void Ground_status_msg::SerializeWithCachedSizes(
       8, *this->error_manager_, output);
   }
 
+  // repeated .message.Cloud_coordinate cloud = 9;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->cloud_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      9, this->cloud(static_cast<int>(i)), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -3704,6 +3513,14 @@ void Ground_status_msg::SerializeWithCachedSizes(
         8, *this->error_manager_, deterministic, target);
   }
 
+  // repeated .message.Cloud_coordinate cloud = 9;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->cloud_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        9, this->cloud(static_cast<int>(i)), deterministic, target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -3819,6 +3636,17 @@ size_t Ground_status_msg::ByteSizeLong() const {
     total_size += (1UL * count) + data_size;
   }
 
+  // repeated .message.Cloud_coordinate cloud = 9;
+  {
+    unsigned int count = static_cast<unsigned int>(this->cloud_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->cloud(static_cast<int>(i)));
+    }
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
@@ -3849,6 +3677,7 @@ void Ground_status_msg::MergeFrom(const Ground_status_msg& from) {
   (void) cached_has_bits;
 
   wanji_lidar_device_status_.MergeFrom(from.wanji_lidar_device_status_);
+  cloud_.MergeFrom(from.cloud_);
   cached_has_bits = from._has_bits_[0];
   if (cached_has_bits & 127u) {
     if (cached_has_bits & 0x00000001u) {
@@ -3892,6 +3721,7 @@ void Ground_status_msg::CopyFrom(const Ground_status_msg& from) {
 
 bool Ground_status_msg::IsInitialized() const {
   if ((_has_bits_[0] & 0x0000007f) != 0x0000007f) return false;
+  if (!::google::protobuf::internal::AllAreInitialized(this->cloud())) return false;
   if (has_base_info()) {
     if (!this->base_info_->IsInitialized()) return false;
   }
@@ -3908,6 +3738,7 @@ void Ground_status_msg::Swap(Ground_status_msg* other) {
 void Ground_status_msg::InternalSwap(Ground_status_msg* other) {
   using std::swap;
   wanji_lidar_device_status_.InternalSwap(&other->wanji_lidar_device_status_);
+  cloud_.InternalSwap(&other->cloud_);
   swap(base_info_, other->base_info_);
   swap(locate_information_realtime_, other->locate_information_realtime_);
   swap(error_manager_, other->error_manager_);

+ 46 - 164
message/measure_message.pb.h

@@ -370,38 +370,6 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   const ::google::protobuf::RepeatedField<int>& laser_statu_vector() const;
   ::google::protobuf::RepeatedField<int>* mutable_laser_statu_vector();
 
-  // repeated .message.Wanji_lidar_device_status wanji_lidar_device_status = 7;
-  int wanji_lidar_device_status_size() const;
-  void clear_wanji_lidar_device_status();
-  static const int kWanjiLidarDeviceStatusFieldNumber = 7;
-  ::message::Wanji_lidar_device_status wanji_lidar_device_status(int index) const;
-  void set_wanji_lidar_device_status(int index, ::message::Wanji_lidar_device_status value);
-  void add_wanji_lidar_device_status(::message::Wanji_lidar_device_status value);
-  const ::google::protobuf::RepeatedField<int>& wanji_lidar_device_status() const;
-  ::google::protobuf::RepeatedField<int>* mutable_wanji_lidar_device_status();
-
-  // repeated .message.Region_worker_status region_worker_status = 8;
-  int region_worker_status_size() const;
-  void clear_region_worker_status();
-  static const int kRegionWorkerStatusFieldNumber = 8;
-  ::message::Region_worker_status region_worker_status(int index) const;
-  void set_region_worker_status(int index, ::message::Region_worker_status value);
-  void add_region_worker_status(::message::Region_worker_status value);
-  const ::google::protobuf::RepeatedField<int>& region_worker_status() const;
-  ::google::protobuf::RepeatedField<int>* mutable_region_worker_status();
-
-  // repeated .message.Locate_information locate_information_realtime = 9;
-  int locate_information_realtime_size() const;
-  void clear_locate_information_realtime();
-  static const int kLocateInformationRealtimeFieldNumber = 9;
-  const ::message::Locate_information& locate_information_realtime(int index) const;
-  ::message::Locate_information* mutable_locate_information_realtime(int index);
-  ::message::Locate_information* add_locate_information_realtime();
-  ::google::protobuf::RepeatedPtrField< ::message::Locate_information >*
-      mutable_locate_information_realtime();
-  const ::google::protobuf::RepeatedPtrField< ::message::Locate_information >&
-      locate_information_realtime() const;
-
   // required .message.Base_info base_info = 1;
   bool has_base_info() const;
   void clear_base_info();
@@ -411,10 +379,10 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   ::message::Base_info* mutable_base_info();
   void set_allocated_base_info(::message::Base_info* base_info);
 
-  // required .message.Error_manager error_manager = 10;
+  // required .message.Error_manager error_manager = 6;
   bool has_error_manager() const;
   void clear_error_manager();
-  static const int kErrorManagerFieldNumber = 10;
+  static const int kErrorManagerFieldNumber = 6;
   const ::message::Error_manager& error_manager() const;
   ::message::Error_manager* release_error_manager();
   ::message::Error_manager* mutable_error_manager();
@@ -441,13 +409,6 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   ::message::Locate_manager_status locate_manager_status() const;
   void set_locate_manager_status(::message::Locate_manager_status value);
 
-  // required .message.Wanji_manager_status wanji_manager_status = 6;
-  bool has_wanji_manager_status() const;
-  void clear_wanji_manager_status();
-  static const int kWanjiManagerStatusFieldNumber = 6;
-  ::message::Wanji_manager_status wanji_manager_status() const;
-  void set_wanji_manager_status(::message::Wanji_manager_status value);
-
   // @@protoc_insertion_point(class_scope:message.Measure_status_msg)
  private:
   void set_has_base_info();
@@ -458,8 +419,6 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   void clear_has_laser_manager_status();
   void set_has_locate_manager_status();
   void clear_has_locate_manager_status();
-  void set_has_wanji_manager_status();
-  void clear_has_wanji_manager_status();
   void set_has_error_manager();
   void clear_has_error_manager();
 
@@ -470,15 +429,11 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::RepeatedField<int> laser_statu_vector_;
-  ::google::protobuf::RepeatedField<int> wanji_lidar_device_status_;
-  ::google::protobuf::RepeatedField<int> region_worker_status_;
-  ::google::protobuf::RepeatedPtrField< ::message::Locate_information > locate_information_realtime_;
   ::message::Base_info* base_info_;
   ::message::Error_manager* error_manager_;
   ::google::protobuf::int32 terminal_id_;
   int laser_manager_status_;
   int locate_manager_status_;
-  int wanji_manager_status_;
   friend struct ::protobuf_measure_5fmessage_2eproto::TableStruct;
   friend void ::protobuf_measure_5fmessage_2eproto::InitDefaultsMeasure_status_msgImpl();
 };
@@ -1203,6 +1158,18 @@ class Ground_status_msg : public ::google::protobuf::Message /* @@protoc_inserti
   const ::google::protobuf::RepeatedField<int>& wanji_lidar_device_status() const;
   ::google::protobuf::RepeatedField<int>* mutable_wanji_lidar_device_status();
 
+  // repeated .message.Cloud_coordinate cloud = 9;
+  int cloud_size() const;
+  void clear_cloud();
+  static const int kCloudFieldNumber = 9;
+  const ::message::Cloud_coordinate& cloud(int index) const;
+  ::message::Cloud_coordinate* mutable_cloud(int index);
+  ::message::Cloud_coordinate* add_cloud();
+  ::google::protobuf::RepeatedPtrField< ::message::Cloud_coordinate >*
+      mutable_cloud();
+  const ::google::protobuf::RepeatedPtrField< ::message::Cloud_coordinate >&
+      cloud() const;
+
   // required .message.Base_info base_info = 1;
   bool has_base_info() const;
   void clear_base_info();
@@ -1282,6 +1249,7 @@ class Ground_status_msg : public ::google::protobuf::Message /* @@protoc_inserti
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::RepeatedField<int> wanji_lidar_device_status_;
+  ::google::protobuf::RepeatedPtrField< ::message::Cloud_coordinate > cloud_;
   ::message::Base_info* base_info_;
   ::message::Locate_information* locate_information_realtime_;
   ::message::Error_manager* error_manager_;
@@ -2046,123 +2014,7 @@ inline void Measure_status_msg::set_locate_manager_status(::message::Locate_mana
   // @@protoc_insertion_point(field_set:message.Measure_status_msg.locate_manager_status)
 }
 
-// required .message.Wanji_manager_status wanji_manager_status = 6;
-inline bool Measure_status_msg::has_wanji_manager_status() const {
-  return (_has_bits_[0] & 0x00000020u) != 0;
-}
-inline void Measure_status_msg::set_has_wanji_manager_status() {
-  _has_bits_[0] |= 0x00000020u;
-}
-inline void Measure_status_msg::clear_has_wanji_manager_status() {
-  _has_bits_[0] &= ~0x00000020u;
-}
-inline void Measure_status_msg::clear_wanji_manager_status() {
-  wanji_manager_status_ = 0;
-  clear_has_wanji_manager_status();
-}
-inline ::message::Wanji_manager_status Measure_status_msg::wanji_manager_status() const {
-  // @@protoc_insertion_point(field_get:message.Measure_status_msg.wanji_manager_status)
-  return static_cast< ::message::Wanji_manager_status >(wanji_manager_status_);
-}
-inline void Measure_status_msg::set_wanji_manager_status(::message::Wanji_manager_status value) {
-  assert(::message::Wanji_manager_status_IsValid(value));
-  set_has_wanji_manager_status();
-  wanji_manager_status_ = value;
-  // @@protoc_insertion_point(field_set:message.Measure_status_msg.wanji_manager_status)
-}
-
-// repeated .message.Wanji_lidar_device_status wanji_lidar_device_status = 7;
-inline int Measure_status_msg::wanji_lidar_device_status_size() const {
-  return wanji_lidar_device_status_.size();
-}
-inline void Measure_status_msg::clear_wanji_lidar_device_status() {
-  wanji_lidar_device_status_.Clear();
-}
-inline ::message::Wanji_lidar_device_status Measure_status_msg::wanji_lidar_device_status(int index) const {
-  // @@protoc_insertion_point(field_get:message.Measure_status_msg.wanji_lidar_device_status)
-  return static_cast< ::message::Wanji_lidar_device_status >(wanji_lidar_device_status_.Get(index));
-}
-inline void Measure_status_msg::set_wanji_lidar_device_status(int index, ::message::Wanji_lidar_device_status value) {
-  assert(::message::Wanji_lidar_device_status_IsValid(value));
-  wanji_lidar_device_status_.Set(index, value);
-  // @@protoc_insertion_point(field_set:message.Measure_status_msg.wanji_lidar_device_status)
-}
-inline void Measure_status_msg::add_wanji_lidar_device_status(::message::Wanji_lidar_device_status value) {
-  assert(::message::Wanji_lidar_device_status_IsValid(value));
-  wanji_lidar_device_status_.Add(value);
-  // @@protoc_insertion_point(field_add:message.Measure_status_msg.wanji_lidar_device_status)
-}
-inline const ::google::protobuf::RepeatedField<int>&
-Measure_status_msg::wanji_lidar_device_status() const {
-  // @@protoc_insertion_point(field_list:message.Measure_status_msg.wanji_lidar_device_status)
-  return wanji_lidar_device_status_;
-}
-inline ::google::protobuf::RepeatedField<int>*
-Measure_status_msg::mutable_wanji_lidar_device_status() {
-  // @@protoc_insertion_point(field_mutable_list:message.Measure_status_msg.wanji_lidar_device_status)
-  return &wanji_lidar_device_status_;
-}
-
-// repeated .message.Region_worker_status region_worker_status = 8;
-inline int Measure_status_msg::region_worker_status_size() const {
-  return region_worker_status_.size();
-}
-inline void Measure_status_msg::clear_region_worker_status() {
-  region_worker_status_.Clear();
-}
-inline ::message::Region_worker_status Measure_status_msg::region_worker_status(int index) const {
-  // @@protoc_insertion_point(field_get:message.Measure_status_msg.region_worker_status)
-  return static_cast< ::message::Region_worker_status >(region_worker_status_.Get(index));
-}
-inline void Measure_status_msg::set_region_worker_status(int index, ::message::Region_worker_status value) {
-  assert(::message::Region_worker_status_IsValid(value));
-  region_worker_status_.Set(index, value);
-  // @@protoc_insertion_point(field_set:message.Measure_status_msg.region_worker_status)
-}
-inline void Measure_status_msg::add_region_worker_status(::message::Region_worker_status value) {
-  assert(::message::Region_worker_status_IsValid(value));
-  region_worker_status_.Add(value);
-  // @@protoc_insertion_point(field_add:message.Measure_status_msg.region_worker_status)
-}
-inline const ::google::protobuf::RepeatedField<int>&
-Measure_status_msg::region_worker_status() const {
-  // @@protoc_insertion_point(field_list:message.Measure_status_msg.region_worker_status)
-  return region_worker_status_;
-}
-inline ::google::protobuf::RepeatedField<int>*
-Measure_status_msg::mutable_region_worker_status() {
-  // @@protoc_insertion_point(field_mutable_list:message.Measure_status_msg.region_worker_status)
-  return &region_worker_status_;
-}
-
-// repeated .message.Locate_information locate_information_realtime = 9;
-inline int Measure_status_msg::locate_information_realtime_size() const {
-  return locate_information_realtime_.size();
-}
-inline const ::message::Locate_information& Measure_status_msg::locate_information_realtime(int index) const {
-  // @@protoc_insertion_point(field_get:message.Measure_status_msg.locate_information_realtime)
-  return locate_information_realtime_.Get(index);
-}
-inline ::message::Locate_information* Measure_status_msg::mutable_locate_information_realtime(int index) {
-  // @@protoc_insertion_point(field_mutable:message.Measure_status_msg.locate_information_realtime)
-  return locate_information_realtime_.Mutable(index);
-}
-inline ::message::Locate_information* Measure_status_msg::add_locate_information_realtime() {
-  // @@protoc_insertion_point(field_add:message.Measure_status_msg.locate_information_realtime)
-  return locate_information_realtime_.Add();
-}
-inline ::google::protobuf::RepeatedPtrField< ::message::Locate_information >*
-Measure_status_msg::mutable_locate_information_realtime() {
-  // @@protoc_insertion_point(field_mutable_list:message.Measure_status_msg.locate_information_realtime)
-  return &locate_information_realtime_;
-}
-inline const ::google::protobuf::RepeatedPtrField< ::message::Locate_information >&
-Measure_status_msg::locate_information_realtime() const {
-  // @@protoc_insertion_point(field_list:message.Measure_status_msg.locate_information_realtime)
-  return locate_information_realtime_;
-}
-
-// required .message.Error_manager error_manager = 10;
+// required .message.Error_manager error_manager = 6;
 inline bool Measure_status_msg::has_error_manager() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
 }
@@ -3261,6 +3113,36 @@ inline void Ground_status_msg::set_allocated_error_manager(::message::Error_mana
   // @@protoc_insertion_point(field_set_allocated:message.Ground_status_msg.error_manager)
 }
 
+// repeated .message.Cloud_coordinate cloud = 9;
+inline int Ground_status_msg::cloud_size() const {
+  return cloud_.size();
+}
+inline void Ground_status_msg::clear_cloud() {
+  cloud_.Clear();
+}
+inline const ::message::Cloud_coordinate& Ground_status_msg::cloud(int index) const {
+  // @@protoc_insertion_point(field_get:message.Ground_status_msg.cloud)
+  return cloud_.Get(index);
+}
+inline ::message::Cloud_coordinate* Ground_status_msg::mutable_cloud(int index) {
+  // @@protoc_insertion_point(field_mutable:message.Ground_status_msg.cloud)
+  return cloud_.Mutable(index);
+}
+inline ::message::Cloud_coordinate* Ground_status_msg::add_cloud() {
+  // @@protoc_insertion_point(field_add:message.Ground_status_msg.cloud)
+  return cloud_.Add();
+}
+inline ::google::protobuf::RepeatedPtrField< ::message::Cloud_coordinate >*
+Ground_status_msg::mutable_cloud() {
+  // @@protoc_insertion_point(field_mutable_list:message.Ground_status_msg.cloud)
+  return &cloud_;
+}
+inline const ::google::protobuf::RepeatedPtrField< ::message::Cloud_coordinate >&
+Ground_status_msg::cloud() const {
+  // @@protoc_insertion_point(field_list:message.Ground_status_msg.cloud)
+  return cloud_;
+}
+
 // -------------------------------------------------------------------
 
 // Cloud_coordinate

+ 4 - 7
message/measure_message.proto

@@ -81,12 +81,7 @@ message Measure_status_msg
     repeated Laser_statu                laser_statu_vector = 4;         //大疆雷达设备状态
     required Locate_manager_status      locate_manager_status = 5;      //大疆定位算法状态
 
-    required Wanji_manager_status       wanji_manager_status = 6;       //万集管理状态
-    repeated Wanji_lidar_device_status  wanji_lidar_device_status = 7;  //万集设备身状态
-    repeated Region_worker_status       region_worker_status = 8;       //万集区域功能的状态
-    repeated Locate_information         locate_information_realtime = 9;//地面雷达的 实时定位信息
-
-    required Error_manager              error_manager = 10;
+    required Error_manager              error_manager = 6;
 }
 
 
@@ -152,8 +147,10 @@ message Ground_status_msg
     required Ground_statu               ground_status=7; // 电子围栏状态
 
     required Error_manager              error_manager = 8;
+    repeated Cloud_coordinate           cloud=9;     //点云坐标
 }
 
+
 //点云坐标
 message Cloud_coordinate
 {
@@ -186,4 +183,4 @@ message Locate_sift_response_msg
     required int32                      lidar_id=4;             //雷达id
     repeated Cloud_type                 cloud_type=5;            //点云类型
     required Error_manager              error_manager = 6;      //错误码
-}
+}

+ 43 - 1
system/system_executor.cpp

@@ -81,6 +81,37 @@ Error_manager System_executor::check_msg(Communication_message* p_msg)
 		}
 	}
 
+	//检查接受人
+	if ( p_msg->get_receiver() == Communication_message::Communicator::eEmpty )
+	{
+		//检查消息类型
+		switch ( p_msg->get_message_type() )
+		{
+			case Communication_message::Message_type::eGround_status_msg:
+			{
+				message::Ground_status_msg t_ground_status_msg;
+				//针对消息类型, 对消息进行二次解析
+				if (t_ground_status_msg.ParseFromString(p_msg->get_message_buf()))
+				{
+					int t_terminal_id = t_ground_status_msg.terminal_id();
+					if ( (t_terminal_id/2) == Dispatch_manager::get_instance_references().get_dispatch_manager_id() )
+					{
+						return Error_code::SUCCESS;
+					}
+				}
+				else
+				{
+					return Error_manager(Error_code::SYSTEM_EXECUTOR_PARSE_ERROR, Error_level::MINOR_ERROR,
+										 " message::Dispatch_request_msg  ParseFromString error ");
+				}
+				break;
+			}
+			default :
+				;
+				break;
+		}
+	}
+
 	//无效的消息,
 	return Error_manager(Error_code::INVALID_MESSAGE, Error_level::NEGLIGIBLE_ERROR,
 						 " INVALID_MESSAGE error ");
@@ -424,7 +455,18 @@ void System_executor::execute_for_dispatch_control_request_msg(message::Dispatch
 	return;
 }
 
-
+//地面雷达的状态消息(地面雷达->null)
+void System_executor::execute_for_ground_status_msg(message::Ground_status_msg ground_status_msg)
+{
+	Error_manager t_error;
+	t_error = Dispatch_manager::get_instance_references().execute_for_ground_status_msg(ground_status_msg);
+	if ( t_error != Error_code::SUCCESS )
+	{
+		LOG(INFO) << " System_executor::execute_for_dispatch_request_msg fun error "<< this;
+		LOG(INFO) << t_error.to_string() << "   "<< this;
+	}
+	return ;
+}
 
 
 

+ 4 - 0
system/system_executor.h

@@ -86,6 +86,10 @@ public:
 	void execute_for_dispatch_plan_response_msg(message::Dispatch_plan_response_msg dispatch_plan_response_msg);
 	//调度模块 //调度控制的任务请求(调度算法->调度管理)
 	void execute_for_dispatch_control_request_msg(message::Dispatch_control_request_msg dispatch_control_request_msg);
+
+	//地面雷达的状态消息(地面雷达->null)
+	void execute_for_ground_status_msg(message::Ground_status_msg ground_status_msg);
+
 protected://member variable
 
 	System_executor_status		m_system_executor_status;		//系统执行者的状态