فهرست منبع

20210701, 调度 稳定版

huli 4 سال پیش
والد
کامیت
ea844f5dd5

+ 17 - 8
dispatch/carrier.cpp

@@ -85,7 +85,10 @@ Carrier::Hardware_device_status Carrier::get_actual_device_status()
 {
 {
 	return m_actual_device_status;
 	return m_actual_device_status;
 }
 }
-
+std::string Carrier::get_current_command_key()
+{
+	return (m_request_key + " +++ " + m_respons_key);
+}
 
 
 //把任务单写入到内存中, 子类必须重载
 //把任务单写入到内存中, 子类必须重载
 Error_manager Carrier::write_task_to_memory(std::shared_ptr<Task_Base> p_task)
 Error_manager Carrier::write_task_to_memory(std::shared_ptr<Task_Base> p_task)
@@ -100,6 +103,7 @@ Error_manager Carrier::write_task_to_memory(std::shared_ptr<Task_Base> p_task)
 	{
 	{
 		Carrier_task* tp_carrier_task = (Carrier_task*)p_task.get();
 		Carrier_task* tp_carrier_task = (Carrier_task*)p_task.get();
 		std::unique_lock<std::mutex> t_lock1(tp_carrier_task->m_lock);
 		std::unique_lock<std::mutex> t_lock1(tp_carrier_task->m_lock);
+
 		m_request_key = tp_carrier_task->m_request_key;
 		m_request_key = tp_carrier_task->m_request_key;
 		m_request_x = tp_carrier_task->m_request_x;
 		m_request_x = tp_carrier_task->m_request_x;
 		m_request_y = tp_carrier_task->m_request_y;
 		m_request_y = tp_carrier_task->m_request_y;
@@ -127,6 +131,7 @@ Error_manager Carrier::update_device_communication()
 	Dispatch_communication::Carrier_request_from_dispatch_to_plc_for_key * tp_carrier_request_from_dispatch_to_plc_for_key =
 	Dispatch_communication::Carrier_request_from_dispatch_to_plc_for_key * tp_carrier_request_from_dispatch_to_plc_for_key =
 	& Dispatch_communication::get_instance_references().m_carrier_request_from_dispatch_to_plc_for_key[m_device_id];
 	& Dispatch_communication::get_instance_references().m_carrier_request_from_dispatch_to_plc_for_key[m_device_id];
 	memset(tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key, 0, 50);
 	memset(tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key, 0, 50);
+
 	int t_size = m_request_key.size()<=50 ? m_request_key.size() : 50 ;
 	int t_size = m_request_key.size()<=50 ? m_request_key.size() : 50 ;
 	memcpy(tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key, m_request_key.c_str(), t_size);
 	memcpy(tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key, m_request_key.c_str(), t_size);
 	tp_carrier_request_from_dispatch_to_plc_for_data->m_request_x = m_request_x;
 	tp_carrier_request_from_dispatch_to_plc_for_data->m_request_x = m_request_x;
@@ -235,12 +240,16 @@ Error_manager Carrier::update_device_communication()
 	{
 	{
 		m_last_heartbeat = tp_carrier_status_from_plc_to_dispatch->m_heartbeat;
 		m_last_heartbeat = tp_carrier_status_from_plc_to_dispatch->m_heartbeat;
 		m_status_updata_time = std::chrono::system_clock::now();
 		m_status_updata_time = std::chrono::system_clock::now();
-
-//		if ( get_device_id() == 0)
-//		{
+/*
+		if ( get_device_id() == 2)
+		{
+//			std::this_thread::sleep_for(std::chrono::seconds(1));
 //			std::cout << " 111111111111111111111111111 = " << 123 << std::endl;
 //			std::cout << " 111111111111111111111111111 = " << 123 << std::endl;
-//			std::cout << " tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key = " << tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key << std::endl;
-//			std::cout << " tp_carrier_response_from_plc_to_dispatch->m_respons_key = " << tp_carrier_response_from_plc_to_dispatch->m_respons_key << std::endl;
+			std::cout << " huli test :::: " << " get_dispatch_device_status = " << get_dispatch_device_status() << std::endl;
+//			std::cout << " huli test :::: " << " get_device_id() = " << get_device_id() << std::endl;
+
+			std::cout << " tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key = " << tp_carrier_request_from_dispatch_to_plc_for_key->m_request_key << std::endl;
+			std::cout << " tp_carrier_response_from_plc_to_dispatch->m_respons_key = " << tp_carrier_response_from_plc_to_dispatch->m_respons_key << std::endl;
 //			int b = tp_carrier_status_from_plc_to_dispatch->m_safe_status;
 //			int b = tp_carrier_status_from_plc_to_dispatch->m_safe_status;
 //			std::cout << " huli test :::: " << " tp_carrier_status_from_plc_to_dispatch->m_safe_status = " << b << std::endl;
 //			std::cout << " huli test :::: " << " tp_carrier_status_from_plc_to_dispatch->m_safe_status = " << b << std::endl;
 //			int a = tp_carrier_status_from_plc_to_dispatch->m_work_status;
 //			int a = tp_carrier_status_from_plc_to_dispatch->m_work_status;
@@ -252,8 +261,8 @@ Error_manager Carrier::update_device_communication()
 //			std::cout << " huli test :::: " << " m_actual_x = " << m_actual_x << std::endl;
 //			std::cout << " huli test :::: " << " m_actual_x = " << m_actual_x << std::endl;
 //			std::cout << " m_actual_device_status = " << m_actual_device_status << std::endl;
 //			std::cout << " m_actual_device_status = " << m_actual_device_status << std::endl;
 //			std::cout << " 111111111111111111111111111 = " << 456 << std::endl;
 //			std::cout << " 111111111111111111111111111 = " << 456 << std::endl;
-//		}
-
+		}
+*/
 		
 		
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
 		//重连之后,搬运器状态   E_DISCONNECT  ->>  E_THREE_LEVEL_WORK
 		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )
 		if ( m_dispatch_device_status == Dispatch_device_base::DISPATCH_DEVICE_DISCONNECT )

+ 1 - 0
dispatch/carrier.h

@@ -26,6 +26,7 @@ public://API functions
 public://get or set member variable
 public://get or set member variable
 	//获取硬件设备的状态, 必须子类继承
 	//获取硬件设备的状态, 必须子类继承
 	Hardware_device_status get_actual_device_status();
 	Hardware_device_status get_actual_device_status();
+	virtual std::string get_current_command_key();
 
 
 protected://member functions
 protected://member functions
 	//把任务单写入到内存中, 子类必须重载
 	//把任务单写入到内存中, 子类必须重载

+ 6 - 2
dispatch/catcher.cpp

@@ -75,7 +75,10 @@ Catcher::Hardware_device_status Catcher::get_actual_device_status()
 {
 {
 	return m_actual_device_status;
 	return m_actual_device_status;
 }
 }
-
+std::string Catcher::get_current_command_key()
+{
+	return (m_request_key + " +++ " + m_respons_key);
+}
 
 
 //把任务单写入到内存中, 子类必须重载
 //把任务单写入到内存中, 子类必须重载
 Error_manager Catcher::write_task_to_memory(std::shared_ptr<Task_Base> p_task)
 Error_manager Catcher::write_task_to_memory(std::shared_ptr<Task_Base> p_task)
@@ -285,7 +288,8 @@ Error_manager Catcher::check_and_read_memory_to_task(std::shared_ptr<Task_Base>
 				Error_manager t_error(CATCHER_RESPONS_ERROR, MINOR_ERROR, "m_respons_status is error");
 				Error_manager t_error(CATCHER_RESPONS_ERROR, MINOR_ERROR, "m_respons_status is error");
 				tp_catcher_task->set_task_error_manager(t_error);
 				tp_catcher_task->set_task_error_manager(t_error);
 			}
 			}
-/*
+
+			/*
 			std::cout << " huli test :::: " << " [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[     111111111111111111111111    ]]]]]]]]]]]]]]]]]]]]]]]]]]]] = " << 111 << std::endl;
 			std::cout << " huli test :::: " << " [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[     111111111111111111111111    ]]]]]]]]]]]]]]]]]]]]]]]]]]]] = " << 111 << std::endl;
 			std::cout << " huli test :::: " << " m_request_key = " << m_request_key << std::endl;
 			std::cout << " huli test :::: " << " m_request_key = " << m_request_key << std::endl;
 			std::cout << " huli test :::: " << " m_request_x = " << m_request_x << std::endl;
 			std::cout << " huli test :::: " << " m_request_x = " << m_request_x << std::endl;

+ 2 - 0
dispatch/catcher.h

@@ -23,6 +23,8 @@ public://API functions
 public://get or set member variable
 public://get or set member variable
 	//获取硬件设备的状态, 必须子类继承
 	//获取硬件设备的状态, 必须子类继承
 	Hardware_device_status get_actual_device_status();
 	Hardware_device_status get_actual_device_status();
+
+	virtual std::string get_current_command_key();
 protected://member functions
 protected://member functions
 	//把任务单写入到内存中, 子类必须重载
 	//把任务单写入到内存中, 子类必须重载
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);

+ 3 - 3
dispatch/dispatch_coordinates.cpp

@@ -320,7 +320,7 @@ bool Dispatch_coordinates::choice_nearest_carrier(int dispatch_source, int coord
 //判断取车的路径
 //判断取车的路径
 Dispatch_coordinates::Parkspace_path Dispatch_coordinates::get_pickup_path(int dispatch_source, int dispatch_destination)
 Dispatch_coordinates::Parkspace_path Dispatch_coordinates::get_pickup_path(int dispatch_source, int dispatch_destination)
 {
 {
-	if ( dispatch_source >= 0 && dispatch_source <= 165 &&
+	if ( dispatch_source >= 1 && dispatch_source <= 165 &&
 		 dispatch_destination >= 1100 && dispatch_destination <= 1107)
 		 dispatch_destination >= 1100 && dispatch_destination <= 1107)
 	{
 	{
 		if ( dispatch_source >= 19 && dispatch_source <= 27 )
 		if ( dispatch_source >= 19 && dispatch_source <= 27 )
@@ -337,7 +337,7 @@ Dispatch_coordinates::Parkspace_path Dispatch_coordinates::get_pickup_path(int d
 		else
 		else
 		{
 		{
 			int t_columns = dispatch_source % 15;
 			int t_columns = dispatch_source % 15;
-			if ( (t_columns ==1 && t_columns == 2 && t_columns ==3) ||
+			if ( (t_columns ==1 || t_columns == 2 || t_columns ==3) ||
 				 (dispatch_source >= 34 && dispatch_source <= 37) )
 				 (dispatch_source >= 34 && dispatch_source <= 37) )
 			{
 			{
 				if ( dispatch_destination >= 1100 && dispatch_destination <= 1106 )
 				if ( dispatch_destination >= 1100 && dispatch_destination <= 1106 )
@@ -349,7 +349,7 @@ Dispatch_coordinates::Parkspace_path Dispatch_coordinates::get_pickup_path(int d
 					return Dispatch_coordinates::Parkspace_path::UNKNOW_PATH;
 					return Dispatch_coordinates::Parkspace_path::UNKNOW_PATH;
 				}
 				}
 			}
 			}
-			else if ( (t_columns ==13 && t_columns == 14 && t_columns ==0) ||
+			else if ( (t_columns ==13 || t_columns == 14 || t_columns ==0) ||
 					  (dispatch_source >= 38 && dispatch_source <= 42) )
 					  (dispatch_source >= 38 && dispatch_source <= 42) )
 			{
 			{
 				if ( dispatch_destination >= 1101 && dispatch_destination <= 1107 )
 				if ( dispatch_destination >= 1101 && dispatch_destination <= 1107 )

+ 42 - 18
dispatch/dispatch_device_base.cpp

@@ -92,20 +92,26 @@ Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_ta
 		{
 		{
 			return t_error;
 			return t_error;
 		}
 		}
-		//这里不用检查任务内容, 直接下发给底层设备
-		//永远启动到三级任务工作状态.
-		// 启动定位管理模块,的核心工作线程
-		m_dispatch_device_status = DISPATCH_DEVICE_THREE_LEVEL_WORK;
-		m_execute_condition.notify_all(true);
-		//通知 thread_work 子线程启动。
-		//只签收,并不一定进入工作状态, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
 
 
 		//当接受2级任务时, 标记位改为true
 		//当接受2级任务时, 标记位改为true
 		if ( dispatch_task_level == DISPATCH_TASK_TWO_LEVEL )
 		if ( dispatch_task_level == DISPATCH_TASK_TWO_LEVEL )
 		{
 		{
+			if ( ( m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_WORK ||
+				   m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER ) && mp_device_one_level_task.get() != NULL)
+			{
+				mp_device_one_level_task->set_task_statu(Task_Base::Task_statu::TASK_STOP);
+			}
 			m_break_flag = true;
 			m_break_flag = true;
 		}
 		}
 
 
+
+		//这里不用检查任务内容, 直接下发给底层设备
+		//永远启动到三级任务工作状态.
+		// 启动定位管理模块,的核心工作线程
+		m_dispatch_device_status = DISPATCH_DEVICE_THREE_LEVEL_WORK;
+		m_execute_condition.notify_all(true);
+		//通知 thread_work 子线程启动。
+		//只签收,并不一定进入工作状态, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
 	}
 	}
 
 
 	if ( t_result != Error_code::SUCCESS )
 	if ( t_result != Error_code::SUCCESS )
@@ -118,7 +124,7 @@ Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_ta
 //执行任务//注意了, 调度任务允许同时接受多个任务
 //执行任务//注意了, 调度任务允许同时接受多个任务
 Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_task, Dispatch_task_level dispatch_task_level, std::string command_key, Common_data::Dispatch_process_type process_type)
 Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_task, Dispatch_task_level dispatch_task_level, std::string command_key, Common_data::Dispatch_process_type process_type)
 {
 {
-	LOG(INFO) << " ---Dispatch_device_base::execute_task ---"<< this;
+	LOG(INFO) << " ---Dispatch_device_base::execute_task ---"<< " command_key = "<<command_key<< " m_device_id = "<< m_device_id<< this;
 
 
 	Error_manager t_error;
 	Error_manager t_error;
 	Error_manager t_result;
 	Error_manager t_result;
@@ -151,6 +157,18 @@ Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_ta
 		{
 		{
 			return t_error;
 			return t_error;
 		}
 		}
+
+		//当接受2级任务时, 标记位改为true
+		if ( dispatch_task_level == DISPATCH_TASK_TWO_LEVEL )
+		{
+			if ( ( m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_WORK ||
+				   m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER ) && mp_device_one_level_task.get() != NULL)
+			{
+				mp_device_one_level_task->set_task_statu(Task_Base::Task_statu::TASK_STOP);
+			}
+			m_break_flag = true;
+		}
+
 		//这里不用检查任务内容, 直接下发给底层设备
 		//这里不用检查任务内容, 直接下发给底层设备
 		//永远启动到三级任务工作状态.
 		//永远启动到三级任务工作状态.
 		// 启动定位管理模块,的核心工作线程
 		// 启动定位管理模块,的核心工作线程
@@ -159,11 +177,7 @@ Error_manager Dispatch_device_base::execute_task(std::shared_ptr<Task_Base> p_ta
 		//通知 thread_work 子线程启动。
 		//通知 thread_work 子线程启动。
 		//只签收,并不一定进入工作状态, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
 		//只签收,并不一定进入工作状态, 在线程真正的执行的时候,才改为工作中, (执行线程可能会先处理更高优先级的任务单)
 
 
-		//当接受2级任务时, 标记位改为true
-		if ( dispatch_task_level == DISPATCH_TASK_TWO_LEVEL )
-		{
-			m_break_flag = true;
-		}
+
 
 
 	}
 	}
 
 
@@ -235,7 +249,6 @@ Error_manager Dispatch_device_base::check_task_level(Dispatch_task_level dispatc
 					else if ( ( m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_WORK ||
 					else if ( ( m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_WORK ||
 								m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER ) && mp_device_one_level_task.get() != NULL)
 								m_dispatch_device_status == DISPATCH_DEVICE_ONE_LEVEL_OVER ) && mp_device_one_level_task.get() != NULL)
 					{
 					{
-						mp_device_one_level_task->set_task_statu(Task_Base::Task_statu::TASK_STOP);
 						return Error_code::SUCCESS;
 						return Error_code::SUCCESS;
 					}
 					}
 					else
 					else
@@ -774,11 +787,21 @@ void Dispatch_device_base::execute_thread_fun()
 			std::this_thread::sleep_for(std::chrono::microseconds(1));
 			std::this_thread::sleep_for(std::chrono::microseconds(1));
 			std::this_thread::sleep_for(std::chrono::milliseconds(1));
 			std::this_thread::sleep_for(std::chrono::milliseconds(1));
 
 
-
 			std::this_thread::yield();
 			std::this_thread::yield();
 			std::unique_lock<std::mutex> t_lock(m_lock);
 			std::unique_lock<std::mutex> t_lock(m_lock);
-//			std::cout << " huli test :::: " << " m_device_id = " << m_device_id << std::endl;
-//			std::cout << " huli test :::: " << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa m_dispatch_device_status = " << m_dispatch_device_status << std::endl;
+
+
+//#ifdef TIME_TEST
+////			std::this_thread::sleep_for(std::chrono::seconds(1));
+//			std::this_thread::sleep_for(std::chrono::milliseconds(10));
+//
+//			if ( m_device_id == 2)
+//			{
+//				std::cout << " huli test :::: " << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa m_dispatch_device_status = " << m_dispatch_device_status << std::endl;
+////				std::cout << " huli test :::: " << " m_device_id = " << m_device_id << std::endl;
+//			}
+//#endif
+
 
 
 			switch ( (Dispatch_device_status)m_dispatch_device_status )
 			switch ( (Dispatch_device_status)m_dispatch_device_status )
 			{
 			{
@@ -1076,7 +1099,8 @@ void Dispatch_device_base::execute_thread_fun()
 				}
 				}
 				default:
 				default:
 				{
 				{
-
+					//更新通信
+					update_device_communication();
 					break;
 					break;
 				}
 				}
 			}
 			}

+ 1 - 1
dispatch/dispatch_device_base.h

@@ -226,7 +226,7 @@ public://get or set member variable
 	bool get_break_flag();
 	bool get_break_flag();
 	void set_break_flag(bool break_flag);
 	void set_break_flag(bool break_flag);
 
 
-	std::string get_current_command_key();
+	virtual std::string get_current_command_key();
 protected://member functions
 protected://member functions
 
 
 
 

+ 179 - 117
dispatch/dispatch_process.cpp

@@ -276,23 +276,23 @@ void Dispatch_process::Main()
 		std::this_thread::sleep_for(std::chrono::milliseconds(1));
 		std::this_thread::sleep_for(std::chrono::milliseconds(1));
 		std::this_thread::sleep_for(std::chrono::milliseconds(100));
 		std::this_thread::sleep_for(std::chrono::milliseconds(100));
 
 
+#ifdef TIME_TEST
 		if ( mcarrier == m_dispatch_carrier_node.m_dispatch_control_status && mcatcher == m_dispatch_catcher_node.m_dispatch_control_status )
 		if ( mcarrier == m_dispatch_carrier_node.m_dispatch_control_status && mcatcher == m_dispatch_catcher_node.m_dispatch_control_status )
 		{
 		{
-#ifdef TIME_TEST
 			std::this_thread::sleep_for(std::chrono::milliseconds(100));
 			std::this_thread::sleep_for(std::chrono::milliseconds(100));
 			std::this_thread::sleep_for(std::chrono::seconds(1));
 			std::this_thread::sleep_for(std::chrono::seconds(1));
-#endif
+
 		}
 		}
 		else
 		else
 		{
 		{
 			mcarrier = m_dispatch_carrier_node.m_dispatch_control_status;
 			mcarrier = m_dispatch_carrier_node.m_dispatch_control_status;
 			mcatcher = m_dispatch_catcher_node.m_dispatch_control_status;
 			mcatcher = m_dispatch_catcher_node.m_dispatch_control_status;
 		}
 		}
+#endif
 
 
 
 
 
 
-
-		std::cout << " huli test ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: " << " m_dispatch_process_status = " << m_dispatch_process_status << " ,  m_command_key = " << m_command_key << std::endl;
+		std::cout << " huli test ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: " << " m_dispatch_process_status = " << m_dispatch_process_status << " ,  m_command_key = " << m_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key << std::endl;
@@ -536,7 +536,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -544,7 +544,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -552,7 +552,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -714,7 +714,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			{
 			{
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_POSE_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_POSE_ERROR, Error_level::MINOR_ERROR,
-																 "tp_carrier->m_actual_load_status != Dispatch_device_base::Load_status::NO_CAR fun error ");
+																 "DISPATCH_CARRIER_PICKUP_4 tp_carrier->m_actual_load_status != Dispatch_device_base::Load_status::NO_CAR fun error ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -762,7 +762,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 				{
 				{
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 					m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																	 " tp_main_carrier->get_device_id()    PARAMRTER ERROR ");
+																	 "DISPATCH_CARRIER_PICKUP_8  tp_main_carrier->get_device_id()    PARAMRTER ERROR ");
 				}
 				}
 				else
 				else
 				{
 				{
@@ -815,7 +815,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 					{
 					{
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 						m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																		 " carrier_try_space_lock    fun  ERROR ");
+																		 "DISPATCH_CARRIER_PICKUP_8 carrier_try_space_lock    fun  ERROR ");
 					}
 					}
 				}
 				}
 			}
 			}
@@ -892,7 +892,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			{
 			{
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																" tp_main_carrier->get_device_id() PARAMRTER ERROR ");
+																"DISPATCH_CARRIER_PICKUP_14 tp_main_carrier->get_device_id() PARAMRTER ERROR ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -980,7 +980,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 				{
 				{
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																	" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																	"DISPATCH_CARRIER_PICKUP_22 tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
 					break;//切换流程
 					break;//切换流程
 				}
 				}
 
 
@@ -1023,7 +1023,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 								{
 								{
 									m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 									m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 									m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 									m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																					" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																					"DISPATCH_CARRIER_PICKUP_22 connect_dispatch_carrier ERROR ");
 									break;//切换流程
 									break;//切换流程
 								}
 								}
 							}
 							}
@@ -1038,7 +1038,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 					{
 					{
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																		" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																		"DISPATCH_CARRIER_PICKUP_22 m_dispatch_carrier_node.mp_avoid_catcher_task.get() m_dispatch_carrier_node.mp_avoid_carrier_task.get() ERROR ");
 						break;//切换流程
 						break;//切换流程
 					}
 					}
 				}
 				}
@@ -1161,9 +1161,24 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 		}
 		}
 		case DISPATCH_CARRIER_PICKUP_28://搬运器x轴移动到车位
 		case DISPATCH_CARRIER_PICKUP_28://搬运器x轴移动到车位
 		{
 		{
-			float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_parkspace_information_optimal.parkingspace_index_id].x;
-			carrier_move_x(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier, tp_main_carrier_task, tp_dispatch_coordinates, t_x);
-			m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+			//3楼交接时, 机器人和3楼搬运器一起运动
+			if ( tp_main_carrier->get_device_id() == 2 )
+			{
+				if ( m_dispatch_catcher_node.m_dispatch_control_status >= DISPATCH_CATCHER_PICKUP_13 )
+				{
+					float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_parkspace_information_optimal.parkingspace_index_id].x;
+					carrier_move_x(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier, tp_main_carrier_task, tp_dispatch_coordinates, t_x);
+					m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+				}
+				//else 无限等待
+			}
+			else
+			{
+				float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_parkspace_information_optimal.parkingspace_index_id].x;
+				carrier_move_x(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier, tp_main_carrier_task, tp_dispatch_coordinates, t_x);
+				m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+			}
+
 			break;
 			break;
 		}
 		}
 		case DISPATCH_CARRIER_PICKUP_29:
 		case DISPATCH_CARRIER_PICKUP_29:
@@ -1173,29 +1188,64 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 		}
 		}
 		case DISPATCH_CARRIER_PICKUP_30://把任务从一级升到三级, 准备取车
 		case DISPATCH_CARRIER_PICKUP_30://把任务从一级升到三级, 准备取车
 		{
 		{
-			m_dispatch_carrier_node.m_error = m_dispatch_carrier_node.mp_main_carrier->change_task_level(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL, Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
-			if ( m_dispatch_carrier_node.m_error == Error_code::SUCCESS )
+			//3楼交接时, 机器人先升级, 搬运器再升级
+			if ( tp_main_carrier->get_device_id() == 2 )
 			{
 			{
-				m_dispatch_carrier_node.m_main_carrier_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
-				m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
-				if ( m_dispatch_destination != 1107 && m_dispatch_destination != 1100 )
+				if ( m_dispatch_catcher_node.m_dispatch_control_status >= DISPATCH_CATCHER_PICKUP_16 )
 				{
 				{
-					//如不是7号出口, 那么开启 抓取机器人
-					//注意了, 取车流程只有在这里, 抓取机器人的流程才开始
-					m_dispatch_catcher_node.m_dispatch_control_start_flag = true;
-					if ( tp_main_carrier->get_device_id() != 2 )
+					m_dispatch_carrier_node.m_error = m_dispatch_carrier_node.mp_main_carrier->change_task_level(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL, Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
+					if ( m_dispatch_carrier_node.m_error == Error_code::SUCCESS )
 					{
 					{
-						m_dispatch_catcher_node.m_following_flag = true;
+						m_dispatch_carrier_node.m_main_carrier_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
+						m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+						if ( m_dispatch_destination != 1107 && m_dispatch_destination != 1100 )
+						{
+							//如不是7号出口, 那么开启 抓取机器人
+							//注意了, 取车流程只有在这里, 抓取机器人的流程才开始
+							m_dispatch_catcher_node.m_dispatch_control_start_flag = true;
+							if ( tp_main_carrier->get_device_id() != 2 )
+							{
+								m_dispatch_catcher_node.m_following_flag = true;
+							}
+							else
+							{
+								m_dispatch_catcher_node.m_following_flag = false;
+							}
+						}
 					}
 					}
 					else
 					else
 					{
 					{
-						m_dispatch_catcher_node.m_following_flag = false;
+						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					}
 					}
 				}
 				}
+				//else 无限等待
 			}
 			}
 			else
 			else
 			{
 			{
-				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
+				m_dispatch_carrier_node.m_error = m_dispatch_carrier_node.mp_main_carrier->change_task_level(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL, Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
+				if ( m_dispatch_carrier_node.m_error == Error_code::SUCCESS )
+				{
+					m_dispatch_carrier_node.m_main_carrier_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
+					m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+					if ( m_dispatch_destination != 1107 && m_dispatch_destination != 1100 )
+					{
+						//如不是7号出口, 那么开启 抓取机器人
+						//注意了, 取车流程只有在这里, 抓取机器人的流程才开始
+						m_dispatch_catcher_node.m_dispatch_control_start_flag = true;
+						if ( tp_main_carrier->get_device_id() != 2 )
+						{
+							m_dispatch_catcher_node.m_following_flag = true;
+						}
+						else
+						{
+							m_dispatch_catcher_node.m_following_flag = false;
+						}
+					}
+				}
+				else
+				{
+					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
+				}
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -1382,7 +1432,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 						{
 						{
 							m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 							m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 							m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 							m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																			" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																			"DISPATCH_CARRIER_PICKUP_45 tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
 							break;//切换流程
 							break;//切换流程
 						}
 						}
 
 
@@ -1473,7 +1523,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR,
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR,
 																		Error_level::MINOR_ERROR,
 																		Error_level::MINOR_ERROR,
-																		" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																		"DISPATCH_CARRIER_PICKUP_48 tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
 						break;//切换流程
 						break;//切换流程
 					}
 					}
 
 
@@ -1546,7 +1596,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			{
 			{
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																" tp_main_carrier->get_device_id() PARAMRTER ERROR ");
+																"DISPATCH_CARRIER_PICKUP_54 tp_main_carrier->get_device_id() PARAMRTER ERROR ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -1726,7 +1776,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -1734,7 +1784,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -1742,7 +1792,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -1757,7 +1807,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -1765,7 +1815,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	}
 	}
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<< std::endl;
+		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<<" + "<< m_dispatch_catcher_node.mp_following_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -1888,7 +1938,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			{
 			{
 				m_dispatch_catcher_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_catcher_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_catcher_node.m_error = Error_manager(Error_code::CATCHER_POSE_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_catcher_node.m_error = Error_manager(Error_code::CATCHER_POSE_ERROR, Error_level::MINOR_ERROR,
-																"Dispatch_process::excute_robot_catch_car_from_carrier() fun error ");
+																"DISPATCH_CATCHER_PICKUP_4 Dispatch_process::excute_robot_catch_car_from_carrier() fun error ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -2020,23 +2070,15 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 		case DISPATCH_CATCHER_PICKUP_13://机器手调整到 对接搬运器的姿态
 		case DISPATCH_CATCHER_PICKUP_13://机器手调整到 对接搬运器的姿态
 		{
 		{
 			float t_x = 0;
 			float t_x = 0;
-			// 2楼交接, 在出口终点x交接      3楼交接, 在取车车位起点x交接,
 			if ( m_dispatch_catcher_node.m_following_flag )
 			if ( m_dispatch_catcher_node.m_following_flag )
 			{
 			{
+				// 2楼交接, 在出口终点x交接
 				t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination].x;
 				t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination].x;
-			}
-			else
-			{
-				t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_parkspace_information_optimal.parkingspace_index_id].x;
-			}
-
-			float t_y = tp_dispatch_coordinates->m_carrier_default_y1_back - (m_wheel_base /2);
-			//机器手调整到 对接搬运器的姿态
-			catcher_adjust_from_carrier(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_main_catcher, tp_main_catcher_task, tp_dispatch_coordinates, t_x);
+				float t_y = tp_dispatch_coordinates->m_carrier_default_y1_back - (m_wheel_base /2);
+				//机器手调整到 对接搬运器的姿态
+				catcher_adjust_from_carrier(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_main_catcher, tp_main_catcher_task, tp_dispatch_coordinates, t_x);
 
 
-			//3楼搬运器跟随, 到机器人旁边一个车位
-			if ( m_dispatch_catcher_node.m_following_flag )
-			{
+				//3楼搬运器跟随, 到机器人旁边一个车位
 				float t_following_x = 0;
 				float t_following_x = 0;
 				if ( m_dispatch_destination == 1101 )
 				if ( m_dispatch_destination == 1101 )
 				{
 				{
@@ -2055,8 +2097,21 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination+1].x;
 					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination+1].x;
 				}
 				}
 				carrier_move_x(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_following_carrier, tp_following_carrier_task, tp_dispatch_coordinates, t_following_x);
 				carrier_move_x(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_following_carrier, tp_following_carrier_task, tp_dispatch_coordinates, t_following_x);
+				m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
+			}
+			else
+			{
+				if ( m_dispatch_carrier_node.m_dispatch_control_status >= Dispatch_process::Dispatch_control_status::DISPATCH_CARRIER_PICKUP_28 )
+				{
+					//3楼交接, 在取车车位起点x交接,
+					t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_parkspace_information_optimal.parkingspace_index_id].x;
+					float t_y = tp_dispatch_coordinates->m_carrier_default_y1_back - (m_wheel_base /2);
+					//机器手调整到 对接搬运器的姿态
+					catcher_adjust_from_carrier(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_main_catcher, tp_main_catcher_task, tp_dispatch_coordinates, t_x);
+					m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
+				}
+				//else 无限等待
 			}
 			}
-			m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
 			break;
 			break;
 		}
 		}
 		case DISPATCH_CATCHER_PICKUP_14://机器人释放 空间锁
 		case DISPATCH_CATCHER_PICKUP_14://机器人释放 空间锁
@@ -2083,6 +2138,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 				if ( m_dispatch_carrier_node.m_dispatch_control_status >= Dispatch_process::Dispatch_control_status::DISPATCH_CARRIER_PICKUP_51 )
 				if ( m_dispatch_carrier_node.m_dispatch_control_status >= Dispatch_process::Dispatch_control_status::DISPATCH_CARRIER_PICKUP_51 )
 				{
 				{
 					m_dispatch_catcher_node.m_error = m_dispatch_catcher_node.mp_main_catcher->change_task_level(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL, Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
 					m_dispatch_catcher_node.m_error = m_dispatch_catcher_node.mp_main_catcher->change_task_level(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL, Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
+					m_dispatch_catcher_node.m_error.compare_and_cover_error(m_dispatch_catcher_node.mp_following_carrier->change_task_level(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL, Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL));
 					if ( m_dispatch_catcher_node.m_error == Error_code::SUCCESS )
 					if ( m_dispatch_catcher_node.m_error == Error_code::SUCCESS )
 					{
 					{
 						m_dispatch_catcher_node.m_main_catcher_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
 						m_dispatch_catcher_node.m_main_catcher_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
@@ -2193,7 +2249,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			{
 			{
 				m_dispatch_catcher_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_catcher_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_catcher_node.m_error = Error_manager(Error_code::CATCHER_POSE_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_catcher_node.m_error = Error_manager(Error_code::CATCHER_POSE_ERROR, Error_level::MINOR_ERROR,
-																"Dispatch_process::  tp_main_catcher->m_actual_load_status error ");
+																"DISPATCH_CATCHER_PICKUP_19 Dispatch_process::  tp_main_catcher->m_actual_load_status error ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -2445,7 +2501,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -2453,7 +2509,7 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 	}
 	}
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<< std::endl;
+		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<<" + "<< m_dispatch_catcher_node.mp_following_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -2530,7 +2586,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -2538,7 +2594,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -2546,7 +2602,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -2576,7 +2632,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 		}
 		}
 		case DISPATCH_CARRIER_STORE_START://连接搬运器, 创建新的任务单 与设备建立连接
 		case DISPATCH_CARRIER_STORE_START://连接搬运器, 创建新的任务单 与设备建立连接
 		{
 		{
-			//注意了:所有的存车流程, 都需要机器人提前启动
+			//注意了:3楼的存车流程, 需要机器人提前启动
 			if (m_dispatch_carrier_node.mp_main_carrier->get_device_id() == 2)
 			if (m_dispatch_carrier_node.mp_main_carrier->get_device_id() == 2)
 			{
 			{
 				//通知机器人提前开始
 				//通知机器人提前开始
@@ -2623,10 +2679,6 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			}
 			}
 			else
 			else
 			{
 			{
-				//通知机器人提前开始
-				m_dispatch_catcher_node.m_dispatch_control_start_flag = true;
-				m_dispatch_catcher_node.m_following_flag = true;
-
 				if ( m_dispatch_carrier_node.mp_main_carrier_task.get() == NULL )
 				if ( m_dispatch_carrier_node.mp_main_carrier_task.get() == NULL )
 				{
 				{
 					//连接搬运器, 创建新的任务单 与设备建立连接, 只能成功, 失败就要进入故障处理
 					//连接搬运器, 创建新的任务单 与设备建立连接, 只能成功, 失败就要进入故障处理
@@ -2685,6 +2737,10 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			}
 			}
 			else
 			else
 			{
 			{
+				//通知机器人提前开始
+				m_dispatch_catcher_node.m_dispatch_control_start_flag = true;
+				m_dispatch_catcher_node.m_following_flag = true;
+
 				//搬运器 准备开始, 需要同步任务单和设备真实数据.//注意了:连接设备只是预约, 设备不一定立刻执行.所以需要在连接成功之后进行数据同步
 				//搬运器 准备开始, 需要同步任务单和设备真实数据.//注意了:连接设备只是预约, 设备不一定立刻执行.所以需要在连接成功之后进行数据同步
 				carrier_ready_to_start(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier,
 				carrier_ready_to_start(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier,
 									   tp_main_carrier_task, tp_dispatch_coordinates);
 									   tp_main_carrier_task, tp_dispatch_coordinates);
@@ -2723,7 +2779,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			{
 			{
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_POSE_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_carrier_node.m_error =  Error_manager(Error_code::CARRIER_POSE_ERROR, Error_level::MINOR_ERROR,
-																 "tp_carrier->m_actual_load_status != Dispatch_device_base::Load_status::NO_CAR fun error ");
+																 "DISPATCH_CARRIER_STORE_4 tp_carrier->m_actual_load_status != Dispatch_device_base::Load_status::NO_CAR fun error ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -2790,7 +2846,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			{
 			{
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																" tp_main_carrier->get_device_id() PARAMRTER ERROR ");
+																"DISPATCH_CARRIER_STORE_9 tp_main_carrier->get_device_id() PARAMRTER ERROR ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -2898,7 +2954,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 					{
 					{
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																		" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																		"DISPATCH_CARRIER_STORE_17 tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
 						break;//切换流程
 						break;//切换流程
 					}
 					}
 
 
@@ -2924,22 +2980,30 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			// 注意了: 机器人必须等待3楼搬运器执行完这一步后, 才能到一楼抓车
 			// 注意了: 机器人必须等待3楼搬运器执行完这一步后, 才能到一楼抓车
 			if ( tp_main_carrier->get_device_id() == 2 )
 			if ( tp_main_carrier->get_device_id() == 2 )
 			{
 			{
-				if ( m_dispatch_source == 1101 )
-				{
-					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[1102].x;
-				}
-				else if ( m_dispatch_source == 1106 )
-				{
-					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[1105].x;
-				}
-				else if ( tp_main_carrier->m_actual_x < t_x)
+				if ( m_dispatch_catcher_node.m_dispatch_control_status >= Dispatch_process::Dispatch_control_status::DISPATCH_CATCHER_STORE_13 )
 				{
 				{
-					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source-1].x;
+					if ( m_dispatch_source == 1101 )
+					{
+						t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[1102].x;
+					}
+					else if ( m_dispatch_source == 1106 )
+					{
+						t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[1105].x;
+					}
+					else if ( tp_main_carrier->m_actual_x < t_x)
+					{
+						t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source-1].x;
+					}
+					else
+					{
+						t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source+1].x;
+					}
 				}
 				}
-				else
+				else //无限等待
 				{
 				{
-					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source+1].x;
+					break;
 				}
 				}
+
 			}
 			}
 			else if ( tp_main_carrier->get_device_id() == 0 )
 			else if ( tp_main_carrier->get_device_id() == 0 )
 			{
 			{
@@ -2953,7 +3017,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			{
 			{
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																"DISPATCH_CARRIER_STORE_18 tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
 				break;//切换流程
 				break;//切换流程
 			}
 			}
 
 
@@ -3060,7 +3124,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			else
 			else
 			{
 			{
 				return Error_manager(Error_code::CARRIER_POSE_ERROR, Error_level::MINOR_ERROR,
 				return Error_manager(Error_code::CARRIER_POSE_ERROR, Error_level::MINOR_ERROR,
-									 "Dispatch_process:: tp_main_carrier->m_actual_load_status() fun error ");
+									 "DISPATCH_CARRIER_STORE_24 Dispatch_process:: tp_main_carrier->m_actual_load_status() fun error ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -3113,7 +3177,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 					{
 					{
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																		" tp_main_carrier->get_device_id() PARAMRTER ERROR ");
+																		"DISPATCH_CARRIER_STORE_28 tp_main_carrier->get_device_id() PARAMRTER ERROR ");
 					}
 					}
 				}
 				}
 			}
 			}
@@ -3198,7 +3262,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 				{
 				{
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																	" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																	"DISPATCH_CARRIER_STORE_36 tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
 					break;//切换流程
 					break;//切换流程
 				}
 				}
 
 
@@ -3241,7 +3305,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 								{
 								{
 									m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 									m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 									m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 									m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																					" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																					"DISPATCH_CARRIER_STORE_36 connect_dispatch_carrier ERROR ");
 									break;//切换流程
 									break;//切换流程
 								}
 								}
 							}
 							}
@@ -3256,7 +3320,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 					{
 					{
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 						m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																		" tp_main_carrier->get_device_id() and m_parkspace_information_optimal.parkingspace_index_id PARAMRTER ERROR ");
+																		"DISPATCH_CARRIER_STORE_36 m_dispatch_carrier_node.mp_avoid_catcher_task.get() m_dispatch_carrier_node.mp_avoid_carrier_task.get() ERROR ");
 						break;//切换流程
 						break;//切换流程
 					}
 					}
 				}
 				}
@@ -3451,7 +3515,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 				{
 				{
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
 					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
-																	" tp_main_carrier->get_device_id() PARAMRTER ERROR ");
+																	"DISPATCH_CARRIER_STORE_50 tp_main_carrier->get_device_id() PARAMRTER ERROR ");
 				}
 				}
 			}
 			}
 			break;
 			break;
@@ -3489,7 +3553,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_carrier_node.m_dispatch_control_status = " << m_dispatch_carrier_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_main_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_main_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_main_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -3497,7 +3561,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_catcher->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_catcher->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -3505,7 +3569,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	}
 	}
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	if ( m_dispatch_carrier_node.mp_avoid_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_avoid_carrier->get_device_id() = " << m_dispatch_carrier_node.mp_avoid_carrier->get_device_id() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_current_command_key() <<" + "<< m_dispatch_carrier_node.mp_avoid_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -3520,7 +3584,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -3528,7 +3592,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	}
 	}
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<< std::endl;
+		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<<" + "<< m_dispatch_catcher_node.mp_following_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -3660,7 +3724,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			{
 			{
 				m_dispatch_catcher_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_catcher_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
 				m_dispatch_catcher_node.m_error = Error_manager(Error_code::CATCHER_POSE_ERROR, Error_level::MINOR_ERROR,
 				m_dispatch_catcher_node.m_error = Error_manager(Error_code::CATCHER_POSE_ERROR, Error_level::MINOR_ERROR,
-																"Dispatch_process::excute_robot_catch_car_from_carrier() fun error ");
+																"DISPATCH_CATCHER_STORE_4 Dispatch_process::excute_robot_catch_car_from_carrier() fun error ");
 			}
 			}
 			break;
 			break;
 		}
 		}
@@ -3782,14 +3846,14 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 		}
 		}
 		case DISPATCH_CATCHER_STORE_13://机器手调整到 对接地面的姿态
 		case DISPATCH_CATCHER_STORE_13://机器手调整到 对接地面的姿态
 		{
 		{
-			float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].x;
-			float t_y = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].y;
-			//机器手调整到 对接地面的姿态
-			catcher_adjust_from_ground(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_main_catcher, tp_main_catcher_task, tp_dispatch_coordinates);
-
-			//3楼搬运器跟随, 到机器人旁边一个车位
 			if ( m_dispatch_catcher_node.m_following_flag )
 			if ( m_dispatch_catcher_node.m_following_flag )
 			{
 			{
+				float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].x;
+				float t_y = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].y;
+				//机器手调整到 对接地面的姿态
+				catcher_adjust_from_ground(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_main_catcher, tp_main_catcher_task, tp_dispatch_coordinates);
+
+				//3楼搬运器跟随, 到机器人旁边一个车位
 				float t_following_x = 0;
 				float t_following_x = 0;
 				if ( m_dispatch_source == 1101 )
 				if ( m_dispatch_source == 1101 )
 				{
 				{
@@ -3808,8 +3872,20 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source+1].x;
 					t_following_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source+1].x;
 				}
 				}
 				carrier_move_x(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_following_carrier, tp_following_carrier_task, tp_dispatch_coordinates, t_following_x);
 				carrier_move_x(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_following_carrier, tp_following_carrier_task, tp_dispatch_coordinates, t_following_x);
+				m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
+			}
+			else
+			{
+				if ( m_dispatch_carrier_node.m_dispatch_control_status >= Dispatch_process::Dispatch_control_status::DISPATCH_CARRIER_STORE_18 )
+				{
+					float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].x;
+					float t_y = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].y;
+					//机器手调整到 对接地面的姿态
+					catcher_adjust_from_ground(get_dispatch_control_command_key(m_dispatch_catcher_node), tp_main_catcher, tp_main_catcher_task, tp_dispatch_coordinates);
+					m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
+				}
+				//else 无限等待
 			}
 			}
-			m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
 			break;
 			break;
 		}
 		}
 		case DISPATCH_CATCHER_STORE_14://机器人释放 空间锁
 		case DISPATCH_CATCHER_STORE_14://机器人释放 空间锁
@@ -3834,6 +3910,9 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 				m_dispatch_catcher_node.m_error = m_dispatch_catcher_node.mp_main_catcher->change_task_level(
 				m_dispatch_catcher_node.m_error = m_dispatch_catcher_node.mp_main_catcher->change_task_level(
 				Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL,
 				Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL,
 				Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
 				Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL);
+				m_dispatch_catcher_node.m_error.compare_and_cover_error(m_dispatch_catcher_node.mp_following_carrier->change_task_level(
+				Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL,
+				Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL));
 				if (m_dispatch_catcher_node.m_error == Error_code::SUCCESS)
 				if (m_dispatch_catcher_node.m_error == Error_code::SUCCESS)
 				{
 				{
 					m_dispatch_catcher_node.m_main_catcher_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
 					m_dispatch_catcher_node.m_main_catcher_task_level = Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_THREE_LEVEL;
@@ -4030,23 +4109,6 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 		}
 		}
 		case DISPATCH_CATCHER_STORE_29://机器人z轴下降, 判断空间锁
 		case DISPATCH_CATCHER_STORE_29://机器人z轴下降, 判断空间锁
 		{
 		{
-//			std::cout << " huli test :::: " << " 1111111111111111111111111111111111 = " << 27 << std::endl;
-//
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_request_x = " << tp_main_catcher->m_request_x << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_request_y = " << tp_main_catcher->m_request_y << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_request_z = " << tp_main_catcher->m_request_z << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_request_b = " << tp_main_catcher->m_request_b << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_respons_x = " << tp_main_catcher->m_respons_x << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_respons_y = " << tp_main_catcher->m_respons_y << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_respons_z = " << tp_main_catcher->m_respons_z << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_respons_b = " << tp_main_catcher->m_respons_b << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_actual_x = " << tp_main_catcher->m_actual_x << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_actual_y = " << tp_main_catcher->m_actual_y << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_actual_z = " << tp_main_catcher->m_actual_z << std::endl;
-//			std::cout << " huli test :::: " << " tp_main_catcher->m_actual_b = " << tp_main_catcher->m_actual_b << std::endl;
-//
-//			std::cout << " huli test :::: " << " 2222222222222222222222222222222222 = " << 27 << std::endl;
-
 			m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
 			m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
 			break;
 			break;
 		}
 		}
@@ -4168,7 +4230,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	std::cout << " huli test :::: " << " m_dispatch_catcher_node.m_dispatch_control_status = " << m_dispatch_catcher_node.m_dispatch_control_status << std::endl;
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_main_catcher.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() << std::endl;
+		std::cout << " huli test :::: " << " tp_main_catcher->get_device_id() = " << m_dispatch_catcher_node.mp_main_catcher->get_device_id() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_current_command_key() <<" + "<< m_dispatch_catcher_node.mp_main_catcher->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -4176,7 +4238,7 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 	}
 	}
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	if ( m_dispatch_catcher_node.mp_following_carrier.get() != NULL )
 	{
 	{
-		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<< std::endl;
+		std::cout << " huli test :::: " << " tp_following_carrier->get_device_id() = " << m_dispatch_catcher_node.mp_following_carrier->get_device_id() <<" + " << m_dispatch_catcher_node.mp_following_carrier->get_current_command_key()<<" + "<< m_dispatch_catcher_node.mp_following_carrier->get_dispatch_device_status() << std::endl;
 	}
 	}
 	else
 	else
 	{
 	{

+ 4 - 1
dispatch/passageway.cpp

@@ -58,7 +58,10 @@ Passageway::Hardware_device_status Passageway::get_actual_device_status()
 {
 {
 	return m_actual_device_status;
 	return m_actual_device_status;
 }
 }
-
+std::string Passageway::get_current_command_key()
+{
+	return (m_request_key + " +++ " + m_respons_key);
+}
 
 
 //把任务单写入到内存中, 子类必须重载
 //把任务单写入到内存中, 子类必须重载
 Error_manager Passageway::write_task_to_memory(std::shared_ptr<Task_Base> p_task)
 Error_manager Passageway::write_task_to_memory(std::shared_ptr<Task_Base> p_task)

+ 1 - 0
dispatch/passageway.h

@@ -22,6 +22,7 @@ public://API functions
 public://get or set member variable
 public://get or set member variable
 	//获取硬件设备的状态, 必须子类继承
 	//获取硬件设备的状态, 必须子类继承
 	Hardware_device_status get_actual_device_status();
 	Hardware_device_status get_actual_device_status();
+	virtual std::string get_current_command_key();
 protected://member functions
 protected://member functions
 	//把任务单写入到内存中, 子类必须重载
 	//把任务单写入到内存中, 子类必须重载
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);
 	Error_manager write_task_to_memory(std::shared_ptr<Task_Base> p_task);

+ 4 - 3
main.cpp

@@ -149,7 +149,7 @@ int main(int argc,char* argv[])
 	Catcher_task * tp_catcher_task1 = (Catcher_task *)tp_task_Base1.get();
 	Catcher_task * tp_catcher_task1 = (Catcher_task *)tp_task_Base1.get();
 	tp_catcher_task1->task_init(NULL,std::chrono::milliseconds(15000));
 	tp_catcher_task1->task_init(NULL,std::chrono::milliseconds(15000));
 	tp_catcher_task1->m_request_key = "x23456789012345678901234567890r1";
 	tp_catcher_task1->m_request_key = "x23456789012345678901234567890r1";
-	tp_catcher_task1->m_request_x = 17955;
+	tp_catcher_task1->m_request_x = 21000;
 	tp_catcher_task1->m_request_y = 3000;
 	tp_catcher_task1->m_request_y = 3000;
 	tp_catcher_task1->m_request_b = 90;
 	tp_catcher_task1->m_request_b = 90;
 	tp_catcher_task1->m_request_z = 5410;
 	tp_catcher_task1->m_request_z = 5410;
@@ -177,7 +177,7 @@ int main(int argc,char* argv[])
 //	tp_carrier_task20->m_request_x = 32600;
 //	tp_carrier_task20->m_request_x = 32600;
 	tp_carrier_task20->m_request_y = 3000;
 	tp_carrier_task20->m_request_y = 3000;
 	tp_carrier_task20->m_request_z = 2525;
 	tp_carrier_task20->m_request_z = 2525;
-	tp_carrier_task20->m_request_z = 10325;
+	tp_carrier_task20->m_request_z = 15525;
 	tp_carrier_task20->m_request_y1 = 4500;
 	tp_carrier_task20->m_request_y1 = 4500;
 	tp_carrier_task20->m_request_y2 = 1700;
 	tp_carrier_task20->m_request_y2 = 1700;
 	tp_carrier_task20->m_request_clamp_motion = Carrier_task::E_CLAMP_LOOSE;
 	tp_carrier_task20->m_request_clamp_motion = Carrier_task::E_CLAMP_LOOSE;
@@ -207,6 +207,7 @@ int main(int argc,char* argv[])
 	tp_carrier_task21->m_request_x = 32600;
 	tp_carrier_task21->m_request_x = 32600;
 	tp_carrier_task21->m_request_y = 3000;
 	tp_carrier_task21->m_request_y = 3000;
 	tp_carrier_task21->m_request_z = 2525;
 	tp_carrier_task21->m_request_z = 2525;
+	tp_carrier_task21->m_request_z = 5125;
 	tp_carrier_task21->m_request_y1 = 4500;
 	tp_carrier_task21->m_request_y1 = 4500;
 	tp_carrier_task21->m_request_y2 = 1700;
 	tp_carrier_task21->m_request_y2 = 1700;
 	tp_carrier_task21->m_request_clamp_motion = Carrier_task::E_CLAMP_LOOSE;
 	tp_carrier_task21->m_request_clamp_motion = Carrier_task::E_CLAMP_LOOSE;
@@ -231,7 +232,7 @@ int main(int argc,char* argv[])
 	Carrier_task * tp_carrier_task22 = (Carrier_task *)tp_task_Base22.get();
 	Carrier_task * tp_carrier_task22 = (Carrier_task *)tp_task_Base22.get();
 	tp_carrier_task22->task_init(NULL,std::chrono::milliseconds(15000));
 	tp_carrier_task22->task_init(NULL,std::chrono::milliseconds(15000));
 	tp_carrier_task22->m_request_key = "x23456789012345678901234567890c2";
 	tp_carrier_task22->m_request_key = "x23456789012345678901234567890c2";
-	tp_carrier_task22->m_request_x = 17955;
+	tp_carrier_task22->m_request_x = 21000;
 //	tp_carrier_task22->m_request_x = 4700;
 //	tp_carrier_task22->m_request_x = 4700;
 	tp_carrier_task22->m_request_y = 3000;
 	tp_carrier_task22->m_request_y = 3000;
 	tp_carrier_task22->m_request_z = 5125;
 	tp_carrier_task22->m_request_z = 5125;