ソースを参照

20200820, 大疆感测调试版(locate_manager初始化没有启动livox sdk)

huli 4 年 前
コミット
83c45888ff

+ 5 - 6
CMakeLists.txt

@@ -31,14 +31,14 @@ link_directories("/usr/local/lib")
 message(STATUS ${EXECUTABLE_OUTPUT_PATH})
 
 
-aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/error_code error_src )
+aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/error_code ERROR_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/message message_src )
-aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/lidar_locate locate_src )
+#aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/lidar_locate locate_src )
 #aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/robot robot_src )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/laser LASER_SRC )
 #aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/plc PLC_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/locate LOCATE_SRC )
-aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/terminor TERMINOR_SRC )
+#aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/terminor TERMINOR_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/task TASK_MANAGER_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/tool TOOL_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/communication COMMUNICATION_SRC )
@@ -46,7 +46,7 @@ aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/system SYSTEM_SRC )
 
 add_executable(terminal
         main.cpp
-        ${error_src}
+        ${ERROR_SRC}
         ${locate_src}
         ${robot_src}
         ${message_src}
@@ -75,10 +75,9 @@ target_link_libraries(terminal
         ${OpenCV_LIBS}
         ${GLOG_LIBRARIES}
         ${PCL_LIBRARIES}
-        ${PROTOBUF_LIBRARIES}
 
         libtensorflow_cc.so
-        #tf_3dcnn_api.so
+#        tf_3dcnn_api.so
         pointSIFT_API.so
 
         -lpthread

+ 2 - 2
communication/communication_socket_base.cpp

@@ -318,8 +318,8 @@ Error_manager Communication_socket_base::check_msg(Communication_message*  p_msg
 	else
 	{
 		//无效的消息,
-		return Error_code::INVALID_MESSAGE;
-	}
+		return Error_manager(Error_code::INVALID_MESSAGE, Error_level::NEGLIGIBLE_ERROR,
+							 " INVALID_MESSAGE error ");	}
 }
 
 //mp_analysis_data_thread 解析线程执行函数,

+ 1 - 2
communication/communication_socket_base.h

@@ -5,8 +5,7 @@
  * 用户从这个基类继承, 初始化之后, 便可以自动进行通信
  * 重载解析消息和封装消息,
  *
- *Thread_safe_list<Binary_buf*> 使用 Binary_buf , 而不是string
- * 主要是为了支持直接发送数字0
+ *
  * 
  * 
  * */

+ 8 - 0
laser/LivoxLaser.cpp

@@ -205,6 +205,14 @@ Error_manager CLivoxLaser::end_task()
 	m_queue_livox_data.clear_and_delete();
 	return Laser_base::end_task();
 }
+//取消任务单,由发送方提前取消任务单
+Error_manager CLivoxLaser::cancel_task()
+{
+	end_task();
+	//强制改为 TASK_DEAD,不管它当前在做什么。
+	mp_laser_task->set_task_statu(TASK_DEAD);
+	return Error_code::SUCCESS;
+}
 
 //判断雷达状态是否为待机,如果已经准备好,则可以执行任务。
 //子类重载 is_ready(),里面增加livox sdk后台线程状态的判断。

+ 2 - 1
laser/LivoxLaser.h

@@ -53,7 +53,8 @@ public:
 	virtual Error_manager stop_scan();
 	//结束任务单,stop之后,要检查线程状态和数据结果,然后才能 end_task
 	virtual Error_manager end_task();
-
+	//取消任务单,由发送方提前取消任务单
+	virtual Error_manager cancel_task();
 	//判断雷达状态是否为待机,如果已经准备好,则可以执行任务。
 	//子类重载 is_ready(),里面增加livox sdk后台线程状态的判断。
 	virtual bool is_ready();

+ 9 - 0
locate/locate_manager.cpp

@@ -52,6 +52,15 @@ Error_manager Locate_manager::Locate_manager_init_from_protobuf(std::string prot
 //初始化 定位 管理模块。从protobuf读取
 Error_manager Locate_manager::Locate_manager_init_from_protobuf(Measure::LocateParameter& locate_parameters)
 {
+	m_locate_manager_working_flag = false;
+
+	m_locate_manager_status = LOCATE_MANAGER_READY;
+	//启动雷达管理模块的内部线程。默认wait。
+	m_locate_manager_condition.reset(false, false, false);
+	mp_locate_manager_thread = new std::thread(&Locate_manager::thread_work, this);
+	return Error_code::SUCCESS;
+
+
 	LOG(INFO) << " ---Locate_manager_init_from_protobuf run--- "<< this;
 	Error_manager t_error;
 	m_locate_manager_working_flag = false;

+ 9 - 3
main.cpp

@@ -57,14 +57,20 @@ int main(int argc,char* argv[])
 	FLAGS_max_log_size = 1024;            // Set max log file size(GB)
 	FLAGS_stop_logging_if_full_disk = true;
 
+	int t_terminal_id = 0;
+	if ( argc == 2 )
+	{
+		std::cout << " huli test :::: " << " argv[1] = " << argv[1] << std::endl;
+		t_terminal_id = atoi(argv[1]);
+	}
+	std::cout << " huli test :::: " << " t_terminal_id = " << t_terminal_id << std::endl;
 
-/*
 
 	Laser_manager::get_instance_references().laser_manager_init();
 	std::cout << "Laser_manager = " << Laser_manager::get_instance_references().get_laser_manager_status() << std::endl;
 	Locate_manager::get_instance_references().Locate_manager_init();
 	std::cout << "Locate_manager = " << Locate_manager::get_instance_references().get_locate_manager_status() << std::endl;
-	System_executor::get_instance_references().system_executor_init(4);
+	System_executor::get_instance_references().system_executor_init(4, t_terminal_id);
 	std::cout << "System_executor = " << System_executor::get_instance_references().get_system_executor_status() << std::endl;
 
 	System_communication::get_instance_references().communication_init();
@@ -79,7 +85,7 @@ int main(int argc,char* argv[])
 
 	return 0;
 
-*/
+
 	LOG(INFO) << " --- main start --- " ;
 
 

ファイルの差分が大きいため隠しています
+ 0 - 2564
message/hardware_message.pb.cc


ファイルの差分が大きいため隠しています
+ 0 - 1758
message/hardware_message.pb.h


+ 0 - 68
message/hardware_message.proto

@@ -1,68 +0,0 @@
-syntax = "proto2";
-package message;
-import "message_base.proto";
-
-enum Hardware_statu        //硬件状态
-{
-    eNormal=0;             //正常且空闲
-    eBusy=1;               //工作中
-    eMiss=2;                //连接丢失
-    eError=3;              //故障报错
-
-}
-
-//硬件位置.
-message Position
-{
-    required float x=1;
-    required float y=2;
-    required float z=3;
-
-}
-
-//搬运器状态
-message Carrier_status
-{
-    required Hardware_statu             statu=1;                   //状态
-    optional int32                      command_id=2;                   //指令唯一标识符id
-    optional string                     error_description=3;       //搬运器错误信息(可无)
-    required Position                   position=4;                //搬运器位置(z表示电梯位置)
-    required bool                       empty=5;                   //是否空载
-}
-
-//搬运机构各个零部件状态
-message Harware_statu_msg
-{
-    required Message_type               msg_type=1;                 //消息类型
-    required Carrier_status             carrier1_statu=2;           //搬运器1状态
-    required Carrier_status             carrier2_statu=3;           //搬运器2状态
-    required Carrier_status             carrier3_statu=4;           //搬运器3状态
-}
-
-enum Action_type
-{
-    ePark=0;
-    ePick=1;
-}
-
-//执行搬运请求
-message Execute_request_msg
-{
-    required Base_info                   msg_info=1;         //消息类型                         //消息类型
-    required int32                      command_id=2;                   //指令唯一标识符id
-    required Action_type                action_type=3;
-    required int32                      from_id=4;
-    required int32                      destination=5;
-    required Locate_information         locate_information=6;
-}
-
-//搬运动作执行完成后反馈结果
-message Execute_response_msg
-{
-    required Base_info                   msg_info=1;                    //消息类型
-    required int32                      command_id=2;                   //指令唯一标识符id
-    required int32                      error_code=3;
-    optional string                     error_description=4;
-}
-
-

ファイルの差分が大きいため隠しています
+ 267 - 185
message/measure_message.pb.cc


+ 215 - 87
message/measure_message.pb.h

@@ -226,10 +226,10 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
 
   // accessors -------------------------------------------------------
 
-  // repeated .message.Laser_statu laser_statu_vector = 3;
+  // repeated .message.Laser_statu laser_statu_vector = 4;
   int laser_statu_vector_size() const;
   void clear_laser_statu_vector();
-  static const int kLaserStatuVectorFieldNumber = 3;
+  static const int kLaserStatuVectorFieldNumber = 4;
   ::message::Laser_statu laser_statu_vector(int index) const;
   void set_laser_statu_vector(int index, ::message::Laser_statu value);
   void add_laser_statu_vector(::message::Laser_statu value);
@@ -245,35 +245,42 @@ 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);
 
-  // optional .message.Locate_information locate_information_realtime = 5;
+  // optional .message.Locate_information locate_information_realtime = 6;
   bool has_locate_information_realtime() const;
   void clear_locate_information_realtime();
-  static const int kLocateInformationRealtimeFieldNumber = 5;
+  static const int kLocateInformationRealtimeFieldNumber = 6;
   const ::message::Locate_information& locate_information_realtime() const;
   ::message::Locate_information* release_locate_information_realtime();
   ::message::Locate_information* mutable_locate_information_realtime();
   void set_allocated_locate_information_realtime(::message::Locate_information* locate_information_realtime);
 
-  // required .message.Error_manager error_manager = 6;
+  // required .message.Error_manager error_manager = 7;
   bool has_error_manager() const;
   void clear_error_manager();
-  static const int kErrorManagerFieldNumber = 6;
+  static const int kErrorManagerFieldNumber = 7;
   const ::message::Error_manager& error_manager() const;
   ::message::Error_manager* release_error_manager();
   ::message::Error_manager* mutable_error_manager();
   void set_allocated_error_manager(::message::Error_manager* error_manager);
 
-  // required .message.Laser_manager_status laser_manager_status = 2;
+  // required int32 terminal_id = 2;
+  bool has_terminal_id() const;
+  void clear_terminal_id();
+  static const int kTerminalIdFieldNumber = 2;
+  ::google::protobuf::int32 terminal_id() const;
+  void set_terminal_id(::google::protobuf::int32 value);
+
+  // required .message.Laser_manager_status laser_manager_status = 3;
   bool has_laser_manager_status() const;
   void clear_laser_manager_status();
-  static const int kLaserManagerStatusFieldNumber = 2;
+  static const int kLaserManagerStatusFieldNumber = 3;
   ::message::Laser_manager_status laser_manager_status() const;
   void set_laser_manager_status(::message::Laser_manager_status value);
 
-  // required .message.Locate_manager_status locate_manager_status = 4;
+  // required .message.Locate_manager_status locate_manager_status = 5;
   bool has_locate_manager_status() const;
   void clear_locate_manager_status();
-  static const int kLocateManagerStatusFieldNumber = 4;
+  static const int kLocateManagerStatusFieldNumber = 5;
   ::message::Locate_manager_status locate_manager_status() const;
   void set_locate_manager_status(::message::Locate_manager_status value);
 
@@ -281,6 +288,8 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
  private:
   void set_has_base_info();
   void clear_has_base_info();
+  void set_has_terminal_id();
+  void clear_has_terminal_id();
   void set_has_laser_manager_status();
   void clear_has_laser_manager_status();
   void set_has_locate_manager_status();
@@ -300,6 +309,7 @@ class Measure_status_msg : public ::google::protobuf::Message /* @@protoc_insert
   ::message::Base_info* base_info_;
   ::message::Locate_information* locate_information_realtime_;
   ::message::Error_manager* error_manager_;
+  ::google::protobuf::int32 terminal_id_;
   int laser_manager_status_;
   int locate_manager_status_;
   friend struct ::protobuf_measure_5fmessage_2eproto::TableStruct;
@@ -396,6 +406,21 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
 
   // accessors -------------------------------------------------------
 
+  // required string command_key = 2;
+  bool has_command_key() const;
+  void clear_command_key();
+  static const int kCommandKeyFieldNumber = 2;
+  const ::std::string& command_key() const;
+  void set_command_key(const ::std::string& value);
+  #if LANG_CXX11
+  void set_command_key(::std::string&& value);
+  #endif
+  void set_command_key(const char* value);
+  void set_command_key(const char* value, size_t size);
+  ::std::string* mutable_command_key();
+  ::std::string* release_command_key();
+  void set_allocated_command_key(::std::string* command_key);
+
   // required .message.Base_info base_info = 1;
   bool has_base_info() const;
   void clear_base_info();
@@ -405,13 +430,6 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
   ::message::Base_info* mutable_base_info();
   void set_allocated_base_info(::message::Base_info* base_info);
 
-  // required int32 command_id = 2;
-  bool has_command_id() const;
-  void clear_command_id();
-  static const int kCommandIdFieldNumber = 2;
-  ::google::protobuf::int32 command_id() const;
-  void set_command_id(::google::protobuf::int32 value);
-
   // required int32 terminal_id = 3;
   bool has_terminal_id() const;
   void clear_terminal_id();
@@ -423,8 +441,8 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
  private:
   void set_has_base_info();
   void clear_has_base_info();
-  void set_has_command_id();
-  void clear_has_command_id();
+  void set_has_command_key();
+  void clear_has_command_key();
   void set_has_terminal_id();
   void clear_has_terminal_id();
 
@@ -434,8 +452,8 @@ class Measure_request_msg : public ::google::protobuf::Message /* @@protoc_inser
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
+  ::google::protobuf::internal::ArenaStringPtr command_key_;
   ::message::Base_info* base_info_;
-  ::google::protobuf::int32 command_id_;
   ::google::protobuf::int32 terminal_id_;
   friend struct ::protobuf_measure_5fmessage_2eproto::TableStruct;
   friend void ::protobuf_measure_5fmessage_2eproto::InitDefaultsMeasure_request_msgImpl();
@@ -531,6 +549,21 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
 
   // accessors -------------------------------------------------------
 
+  // required string command_key = 2;
+  bool has_command_key() const;
+  void clear_command_key();
+  static const int kCommandKeyFieldNumber = 2;
+  const ::std::string& command_key() const;
+  void set_command_key(const ::std::string& value);
+  #if LANG_CXX11
+  void set_command_key(::std::string&& value);
+  #endif
+  void set_command_key(const char* value);
+  void set_command_key(const char* value, size_t size);
+  ::std::string* mutable_command_key();
+  ::std::string* release_command_key();
+  void set_allocated_command_key(::std::string* command_key);
+
   // required .message.Base_info base_info = 1;
   bool has_base_info() const;
   void clear_base_info();
@@ -558,13 +591,6 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::message::Error_manager* mutable_error_manager();
   void set_allocated_error_manager(::message::Error_manager* error_manager);
 
-  // required int32 command_id = 2;
-  bool has_command_id() const;
-  void clear_command_id();
-  static const int kCommandIdFieldNumber = 2;
-  ::google::protobuf::int32 command_id() const;
-  void set_command_id(::google::protobuf::int32 value);
-
   // required int32 terminal_id = 3;
   bool has_terminal_id() const;
   void clear_terminal_id();
@@ -576,8 +602,8 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
  private:
   void set_has_base_info();
   void clear_has_base_info();
-  void set_has_command_id();
-  void clear_has_command_id();
+  void set_has_command_key();
+  void clear_has_command_key();
   void set_has_terminal_id();
   void clear_has_terminal_id();
   void set_has_locate_information();
@@ -591,10 +617,10 @@ class Measure_response_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
+  ::google::protobuf::internal::ArenaStringPtr command_key_;
   ::message::Base_info* base_info_;
   ::message::Locate_information* locate_information_;
   ::message::Error_manager* error_manager_;
-  ::google::protobuf::int32 command_id_;
   ::google::protobuf::int32 terminal_id_;
   friend struct ::protobuf_measure_5fmessage_2eproto::TableStruct;
   friend void ::protobuf_measure_5fmessage_2eproto::InitDefaultsMeasure_response_msgImpl();
@@ -660,16 +686,40 @@ inline void Measure_status_msg::set_allocated_base_info(::message::Base_info* ba
   // @@protoc_insertion_point(field_set_allocated:message.Measure_status_msg.base_info)
 }
 
-// required .message.Laser_manager_status laser_manager_status = 2;
-inline bool Measure_status_msg::has_laser_manager_status() const {
+// required int32 terminal_id = 2;
+inline bool Measure_status_msg::has_terminal_id() const {
   return (_has_bits_[0] & 0x00000008u) != 0;
 }
-inline void Measure_status_msg::set_has_laser_manager_status() {
+inline void Measure_status_msg::set_has_terminal_id() {
   _has_bits_[0] |= 0x00000008u;
 }
-inline void Measure_status_msg::clear_has_laser_manager_status() {
+inline void Measure_status_msg::clear_has_terminal_id() {
   _has_bits_[0] &= ~0x00000008u;
 }
+inline void Measure_status_msg::clear_terminal_id() {
+  terminal_id_ = 0;
+  clear_has_terminal_id();
+}
+inline ::google::protobuf::int32 Measure_status_msg::terminal_id() const {
+  // @@protoc_insertion_point(field_get:message.Measure_status_msg.terminal_id)
+  return terminal_id_;
+}
+inline void Measure_status_msg::set_terminal_id(::google::protobuf::int32 value) {
+  set_has_terminal_id();
+  terminal_id_ = value;
+  // @@protoc_insertion_point(field_set:message.Measure_status_msg.terminal_id)
+}
+
+// required .message.Laser_manager_status laser_manager_status = 3;
+inline bool Measure_status_msg::has_laser_manager_status() const {
+  return (_has_bits_[0] & 0x00000010u) != 0;
+}
+inline void Measure_status_msg::set_has_laser_manager_status() {
+  _has_bits_[0] |= 0x00000010u;
+}
+inline void Measure_status_msg::clear_has_laser_manager_status() {
+  _has_bits_[0] &= ~0x00000010u;
+}
 inline void Measure_status_msg::clear_laser_manager_status() {
   laser_manager_status_ = 0;
   clear_has_laser_manager_status();
@@ -685,7 +735,7 @@ inline void Measure_status_msg::set_laser_manager_status(::message::Laser_manage
   // @@protoc_insertion_point(field_set:message.Measure_status_msg.laser_manager_status)
 }
 
-// repeated .message.Laser_statu laser_statu_vector = 3;
+// repeated .message.Laser_statu laser_statu_vector = 4;
 inline int Measure_status_msg::laser_statu_vector_size() const {
   return laser_statu_vector_.size();
 }
@@ -717,15 +767,15 @@ Measure_status_msg::mutable_laser_statu_vector() {
   return &laser_statu_vector_;
 }
 
-// required .message.Locate_manager_status locate_manager_status = 4;
+// required .message.Locate_manager_status locate_manager_status = 5;
 inline bool Measure_status_msg::has_locate_manager_status() const {
-  return (_has_bits_[0] & 0x00000010u) != 0;
+  return (_has_bits_[0] & 0x00000020u) != 0;
 }
 inline void Measure_status_msg::set_has_locate_manager_status() {
-  _has_bits_[0] |= 0x00000010u;
+  _has_bits_[0] |= 0x00000020u;
 }
 inline void Measure_status_msg::clear_has_locate_manager_status() {
-  _has_bits_[0] &= ~0x00000010u;
+  _has_bits_[0] &= ~0x00000020u;
 }
 inline void Measure_status_msg::clear_locate_manager_status() {
   locate_manager_status_ = 0;
@@ -742,7 +792,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)
 }
 
-// optional .message.Locate_information locate_information_realtime = 5;
+// optional .message.Locate_information locate_information_realtime = 6;
 inline bool Measure_status_msg::has_locate_information_realtime() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
 }
@@ -792,7 +842,7 @@ inline void Measure_status_msg::set_allocated_locate_information_realtime(::mess
   // @@protoc_insertion_point(field_set_allocated:message.Measure_status_msg.locate_information_realtime)
 }
 
-// required .message.Error_manager error_manager = 6;
+// required .message.Error_manager error_manager = 7;
 inline bool Measure_status_msg::has_error_manager() const {
   return (_has_bits_[0] & 0x00000004u) != 0;
 }
@@ -848,13 +898,13 @@ inline void Measure_status_msg::set_allocated_error_manager(::message::Error_man
 
 // required .message.Base_info base_info = 1;
 inline bool Measure_request_msg::has_base_info() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
+  return (_has_bits_[0] & 0x00000002u) != 0;
 }
 inline void Measure_request_msg::set_has_base_info() {
-  _has_bits_[0] |= 0x00000001u;
+  _has_bits_[0] |= 0x00000002u;
 }
 inline void Measure_request_msg::clear_has_base_info() {
-  _has_bits_[0] &= ~0x00000001u;
+  _has_bits_[0] &= ~0x00000002u;
 }
 inline const ::message::Base_info& Measure_request_msg::base_info() const {
   const ::message::Base_info* p = base_info_;
@@ -896,28 +946,67 @@ inline void Measure_request_msg::set_allocated_base_info(::message::Base_info* b
   // @@protoc_insertion_point(field_set_allocated:message.Measure_request_msg.base_info)
 }
 
-// required int32 command_id = 2;
-inline bool Measure_request_msg::has_command_id() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
+// required string command_key = 2;
+inline bool Measure_request_msg::has_command_key() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Measure_request_msg::set_has_command_id() {
-  _has_bits_[0] |= 0x00000002u;
+inline void Measure_request_msg::set_has_command_key() {
+  _has_bits_[0] |= 0x00000001u;
 }
-inline void Measure_request_msg::clear_has_command_id() {
-  _has_bits_[0] &= ~0x00000002u;
+inline void Measure_request_msg::clear_has_command_key() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void Measure_request_msg::clear_command_key() {
+  command_key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  clear_has_command_key();
+}
+inline const ::std::string& Measure_request_msg::command_key() const {
+  // @@protoc_insertion_point(field_get:message.Measure_request_msg.command_key)
+  return command_key_.GetNoArena();
 }
-inline void Measure_request_msg::clear_command_id() {
-  command_id_ = 0;
-  clear_has_command_id();
+inline void Measure_request_msg::set_command_key(const ::std::string& value) {
+  set_has_command_key();
+  command_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:message.Measure_request_msg.command_key)
 }
-inline ::google::protobuf::int32 Measure_request_msg::command_id() const {
-  // @@protoc_insertion_point(field_get:message.Measure_request_msg.command_id)
-  return command_id_;
+#if LANG_CXX11
+inline void Measure_request_msg::set_command_key(::std::string&& value) {
+  set_has_command_key();
+  command_key_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:message.Measure_request_msg.command_key)
 }
-inline void Measure_request_msg::set_command_id(::google::protobuf::int32 value) {
-  set_has_command_id();
-  command_id_ = value;
-  // @@protoc_insertion_point(field_set:message.Measure_request_msg.command_id)
+#endif
+inline void Measure_request_msg::set_command_key(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  set_has_command_key();
+  command_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:message.Measure_request_msg.command_key)
+}
+inline void Measure_request_msg::set_command_key(const char* value, size_t size) {
+  set_has_command_key();
+  command_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:message.Measure_request_msg.command_key)
+}
+inline ::std::string* Measure_request_msg::mutable_command_key() {
+  set_has_command_key();
+  // @@protoc_insertion_point(field_mutable:message.Measure_request_msg.command_key)
+  return command_key_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Measure_request_msg::release_command_key() {
+  // @@protoc_insertion_point(field_release:message.Measure_request_msg.command_key)
+  clear_has_command_key();
+  return command_key_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Measure_request_msg::set_allocated_command_key(::std::string* command_key) {
+  if (command_key != NULL) {
+    set_has_command_key();
+  } else {
+    clear_has_command_key();
+  }
+  command_key_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), command_key);
+  // @@protoc_insertion_point(field_set_allocated:message.Measure_request_msg.command_key)
 }
 
 // required int32 terminal_id = 3;
@@ -950,13 +1039,13 @@ inline void Measure_request_msg::set_terminal_id(::google::protobuf::int32 value
 
 // required .message.Base_info base_info = 1;
 inline bool Measure_response_msg::has_base_info() const {
-  return (_has_bits_[0] & 0x00000001u) != 0;
+  return (_has_bits_[0] & 0x00000002u) != 0;
 }
 inline void Measure_response_msg::set_has_base_info() {
-  _has_bits_[0] |= 0x00000001u;
+  _has_bits_[0] |= 0x00000002u;
 }
 inline void Measure_response_msg::clear_has_base_info() {
-  _has_bits_[0] &= ~0x00000001u;
+  _has_bits_[0] &= ~0x00000002u;
 }
 inline const ::message::Base_info& Measure_response_msg::base_info() const {
   const ::message::Base_info* p = base_info_;
@@ -998,28 +1087,67 @@ inline void Measure_response_msg::set_allocated_base_info(::message::Base_info*
   // @@protoc_insertion_point(field_set_allocated:message.Measure_response_msg.base_info)
 }
 
-// required int32 command_id = 2;
-inline bool Measure_response_msg::has_command_id() const {
-  return (_has_bits_[0] & 0x00000008u) != 0;
+// required string command_key = 2;
+inline bool Measure_response_msg::has_command_key() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
 }
-inline void Measure_response_msg::set_has_command_id() {
-  _has_bits_[0] |= 0x00000008u;
+inline void Measure_response_msg::set_has_command_key() {
+  _has_bits_[0] |= 0x00000001u;
 }
-inline void Measure_response_msg::clear_has_command_id() {
-  _has_bits_[0] &= ~0x00000008u;
+inline void Measure_response_msg::clear_has_command_key() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void Measure_response_msg::clear_command_key() {
+  command_key_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  clear_has_command_key();
 }
-inline void Measure_response_msg::clear_command_id() {
-  command_id_ = 0;
-  clear_has_command_id();
+inline const ::std::string& Measure_response_msg::command_key() const {
+  // @@protoc_insertion_point(field_get:message.Measure_response_msg.command_key)
+  return command_key_.GetNoArena();
 }
-inline ::google::protobuf::int32 Measure_response_msg::command_id() const {
-  // @@protoc_insertion_point(field_get:message.Measure_response_msg.command_id)
-  return command_id_;
+inline void Measure_response_msg::set_command_key(const ::std::string& value) {
+  set_has_command_key();
+  command_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:message.Measure_response_msg.command_key)
 }
-inline void Measure_response_msg::set_command_id(::google::protobuf::int32 value) {
-  set_has_command_id();
-  command_id_ = value;
-  // @@protoc_insertion_point(field_set:message.Measure_response_msg.command_id)
+#if LANG_CXX11
+inline void Measure_response_msg::set_command_key(::std::string&& value) {
+  set_has_command_key();
+  command_key_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:message.Measure_response_msg.command_key)
+}
+#endif
+inline void Measure_response_msg::set_command_key(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  set_has_command_key();
+  command_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:message.Measure_response_msg.command_key)
+}
+inline void Measure_response_msg::set_command_key(const char* value, size_t size) {
+  set_has_command_key();
+  command_key_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:message.Measure_response_msg.command_key)
+}
+inline ::std::string* Measure_response_msg::mutable_command_key() {
+  set_has_command_key();
+  // @@protoc_insertion_point(field_mutable:message.Measure_response_msg.command_key)
+  return command_key_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Measure_response_msg::release_command_key() {
+  // @@protoc_insertion_point(field_release:message.Measure_response_msg.command_key)
+  clear_has_command_key();
+  return command_key_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Measure_response_msg::set_allocated_command_key(::std::string* command_key) {
+  if (command_key != NULL) {
+    set_has_command_key();
+  } else {
+    clear_has_command_key();
+  }
+  command_key_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), command_key);
+  // @@protoc_insertion_point(field_set_allocated:message.Measure_response_msg.command_key)
 }
 
 // required int32 terminal_id = 3;
@@ -1048,13 +1176,13 @@ inline void Measure_response_msg::set_terminal_id(::google::protobuf::int32 valu
 
 // optional .message.Locate_information locate_information = 4;
 inline bool Measure_response_msg::has_locate_information() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
+  return (_has_bits_[0] & 0x00000004u) != 0;
 }
 inline void Measure_response_msg::set_has_locate_information() {
-  _has_bits_[0] |= 0x00000002u;
+  _has_bits_[0] |= 0x00000004u;
 }
 inline void Measure_response_msg::clear_has_locate_information() {
-  _has_bits_[0] &= ~0x00000002u;
+  _has_bits_[0] &= ~0x00000004u;
 }
 inline const ::message::Locate_information& Measure_response_msg::locate_information() const {
   const ::message::Locate_information* p = locate_information_;
@@ -1098,13 +1226,13 @@ inline void Measure_response_msg::set_allocated_locate_information(::message::Lo
 
 // required .message.Error_manager error_manager = 5;
 inline bool Measure_response_msg::has_error_manager() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
+  return (_has_bits_[0] & 0x00000008u) != 0;
 }
 inline void Measure_response_msg::set_has_error_manager() {
-  _has_bits_[0] |= 0x00000004u;
+  _has_bits_[0] |= 0x00000008u;
 }
 inline void Measure_response_msg::clear_has_error_manager() {
-  _has_bits_[0] &= ~0x00000004u;
+  _has_bits_[0] &= ~0x00000008u;
 }
 inline const ::message::Error_manager& Measure_response_msg::error_manager() const {
   const ::message::Error_manager* p = error_manager_;

+ 8 - 10
message/measure_message.proto

@@ -37,13 +37,13 @@ enum Locate_manager_status
 message Measure_status_msg
 {
     required Base_info                  base_info=1;                 //消息类型
+    required int32                      terminal_id=2;
+    required Laser_manager_status       laser_manager_status = 3;
+    repeated Laser_statu                laser_statu_vector = 4;
+    required Locate_manager_status      locate_manager_status = 5;
 
-    required Laser_manager_status       laser_manager_status = 2;
-    repeated Laser_statu                laser_statu_vector = 3;
-    required Locate_manager_status      locate_manager_status = 4;
-
-    optional Locate_information         locate_information_realtime=5;  //地面雷达的 实时定位信息
-    required Error_manager              error_manager = 6;
+    optional Locate_information         locate_information_realtime=6;  //地面雷达的 实时定位信息
+    required Error_manager              error_manager = 7;
 }
 
 
@@ -51,7 +51,7 @@ message Measure_status_msg
 message Measure_request_msg
 {
     required Base_info                  base_info=1;        //消息类型
-    required int32                      command_id=2;                   //指令唯一标识符id
+    required string                     command_key=2;                   //指令唯一标识符id
     required int32                      terminal_id=3;          //终端id
 }
 
@@ -59,11 +59,9 @@ message Measure_request_msg
 message Measure_response_msg
 {
     required Base_info                  base_info=1;                         //消息类型
-    required int32                      command_id=2;                   //指令唯一标识符id
+    required string                     command_key=2;                   //指令唯一标识符id
     required int32                      terminal_id=3;
 
     optional Locate_information         locate_information=4;
     required Error_manager              error_manager = 5;
 }
-
-

ファイルの差分が大きいため隠しています
+ 1289 - 16
message/message_base.pb.cc


ファイルの差分が大きいため隠しています
+ 1008 - 8
message/message_base.pb.h


+ 77 - 7
message/message_base.proto

@@ -13,9 +13,33 @@ enum Message_type
     eLocate_response_msg=0x13;              //定位反馈消息
 
 
-    eHarware_statu_msg=0x21;                //调度模块硬件状态消息
-    eExecute_request_msg=0x22;              //请求调度消息
-    eExecute_response_msg=0x23;             //调度结果反馈消息
+    eDispatch_status_msg=0x21;                //调度模块硬件状态消息
+    eDispatch_request_msg=0x22;              //请求调度消息
+    eDispatch_response_msg=0x23;             //调度结果反馈消息
+
+    eParkspace_allocation_status_msg=0x31;  //车位分配模块状态消息,包括车位信息
+    eParkspace_allocation_request_msg=0x32; //请求分配车位消息
+    eParkspace_allocation_response_msg=0x33;//分配车位结果反馈消息
+    eParkspace_search_request_msg = 0x34;		//查询车位请求消息
+    eParkspace_search_response_msg = 0x35;		//查询车位反馈消息
+    eParkspace_release_request_msg = 0x36;		//释放车位请求消息
+    eParkspace_release_response_msg = 0x37;		//释放车位反馈消息
+    eParkspace_force_update_request_msg = 0x38;	//手动修改车位消息
+    eParkspace_force_update_response_msg = 0x39;//手动修改车位反馈消息
+    eParkspace_confirm_alloc_request_msg = 0x3A;//确认分配车位请求消息
+    eParkspace_confirm_alloc_response_msg = 0x3B;//确认分配车位反馈消息
+
+
+    eStore_command_request_msg=0x41;        //终端停车请求消息
+    eStore_command_response_msg=0x42;       //停车请求反馈消息
+    ePickup_command_request_msg=0x43;       //取车请求消息
+    ePickup_command_response_msg=0x44;       //取车请求反馈消息
+
+
+
+    eStoring_process_statu_msg=0x90;        //停车进度条消息
+    ePicking_process_statu_msg=0x91;        //取车进度消息
+
 
 }
 
@@ -26,12 +50,12 @@ enum Communicator
     eMain=0x0001;    //主流程
 
     eTerminor=0x0100;
-    //数据
-    eTable=0x0200;
+    //车位
+    eParkspace=0x0200;
     //测量单元
     eMeasurer=0x0300;
     //调度机构
-    eProcess=0x0400;
+    eDispatch=0x0400;
     //...
 
 
@@ -45,6 +69,14 @@ message Base_info
     required Communicator               receiver=4;                     //接收者
 }
 
+// 事件,停车或者取车
+enum Event
+{
+    eStoring=1;
+    ePicking=2;
+}
+
+
 message Base_msg
 {
     required Base_info                  base_info=1;
@@ -74,7 +106,7 @@ message Error_manager
 
 //测量结果结构体
 message Locate_information
-{    
+{
     optional float locate_x = 1;				//整车的中心点x值; 四轮的中心
     optional float locate_y = 2;				//整车的中心点y值; 四轮的中心
     optional float locate_angle = 3;			//整车的旋转角; 四轮的旋转角
@@ -86,3 +118,41 @@ message Locate_information
     optional bool locate_correct = 9;		    //整车的校准标记位
 }
 
+message Car_info
+{
+    optional float                      car_length=1;           //车长
+    optional float                      car_width=2;            //车宽
+    optional float                      car_height=3;           //车高
+    optional string                     license=4;              //车辆凭证号
+}
+
+//车位状态枚举
+enum Parkspace_status
+{
+    eParkspace_empty            = 0;         //空闲,可分配
+    eParkspace_occupied         = 1;         //被占用,不可分配
+    eParkspace_reserverd        = 2;         //被预约,预约车辆可分配
+    eParkspace_error            = 3;         //车位机械结构或硬件故障
+}
+
+enum Direction
+{
+    eForward = 1;
+    eBackward = 2;
+}
+
+//单个车位基本信息与状态信息
+message Parkspace_info
+{
+    optional int32              parkspace_id=1;         //车位编号
+    optional int32              index=2;                //同层编号
+    optional Direction          direction=3;            //前后
+    optional int32              floor=4;                //楼层
+    optional float              length=5;               //车位长
+    optional float              width=6;                //车位宽
+    optional float              height=7;               //车位高
+    optional Parkspace_status   parkspace_status=8;     //车位当前状态
+    optional Car_info           car_info=9;              //当前车位存入车辆的凭证号
+    optional string             entry_time=10;          //入场时间
+    optional string             leave_time=11;          //离场时间
+}

+ 1 - 1
proto.sh

@@ -1,6 +1,6 @@
 protoc -I=./message message_base.proto --cpp_out=./message
 protoc -I=./message measure_message.proto --cpp_out=./message
-protoc -I=./message hardware_message.proto --cpp_out=./message
+#protoc -I=./message hardware_message.proto --cpp_out=./message
 protoc -I=./locate locate_parameter.proto --cpp_out=./locate
 protoc -I=./laser laser_parameter.proto --cpp_out=./laser
 protoc -I=./laser laser_message.proto --cpp_out=./laser

+ 3 - 2
setting/communication.prototxt

@@ -10,8 +10,9 @@ communication_parameters
   # connect_string_vector:"tcp://192.168.2.125:9876"
   # connect_string_vector:"tcp://192.168.2.166:1234"
 
-   bind_string:"tcp://192.168.2.192:4444"
-
+ #  bind_string:"tcp://192.168.2.192:30001"
+ #  bind_string:"tcp://192.168.2.167:30001"
+   connect_string_vector:"tcp://192.168.2.183:30002"
 
 }
 

+ 2 - 66
system/system_communication.cpp

@@ -21,19 +21,7 @@ System_communication::~System_communication()
 //检查消息是否有效, 主要检查消息类型和接受者, 判断这条消息是不是给我的.
 Error_manager System_communication::check_msg(Communication_message*  p_msg)
 {
-
-	//通过 p_msg->get_message_type() 和 p_msg->get_receiver() 判断这条消息是不是给我的.
-	if ( p_msg->get_message_type() == Communication_message::Message_type::eLocate_request_msg
-		 && p_msg->get_receiver() == Communication_message::Communicator::eMeasurer )
-	{
-		return Error_code::SUCCESS;
-	}
-	else
-	{
-//		std::cout << "System_communication::check_msg INVALID_MESSAGE" << std::endl;
-		//无效的消息,
-		return Error_code::INVALID_MESSAGE;
-	}
+	return System_executor::get_instance_references().check_msg(p_msg);
 }
 
 //检查执行者的状态, 判断能否处理这条消息, 需要子类重载
@@ -69,59 +57,7 @@ Error_manager System_communication::execute_msg(Communication_message* p_msg)
 //定时封装发送消息, 一般为心跳和状态信息, 需要子类重载
 Error_manager System_communication::encapsulate_send_data()
 {
-	Error_manager t_error;
-/*
-	message::Measure_request_msg t_measure_request_msg;
-	t_measure_request_msg.mutable_base_info()->set_msg_type(message::Message_type::eLocate_request_msg);
-	t_measure_request_msg.mutable_base_info()->set_timeout_ms(5000);
-	t_measure_request_msg.mutable_base_info()->set_sender(message::Communicator::eMain);
-	t_measure_request_msg.mutable_base_info()->set_receiver(message::Communicator::eMeasurer);
-	t_measure_request_msg.set_command_id(123);
-	t_measure_request_msg.set_terminal_id(1);
-	string t_msg = t_measure_request_msg.SerializeAsString();
-	System_communication::get_instance_references().encapsulate_msg(t_msg);
- */
-
-
-
-	//创建一条状态消息
-	message::Measure_status_msg t_measure_status_msg;
-	t_measure_status_msg.mutable_base_info()->set_msg_type(message::Message_type::eLocate_status_msg);
-	t_measure_status_msg.mutable_base_info()->set_timeout_ms(5000);
-	t_measure_status_msg.mutable_base_info()->set_sender(message::Communicator::eMeasurer);
-	t_measure_status_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
-
-	Laser_manager::Laser_manager_status t_laser_manager_status = Laser_manager::get_instance_references().get_laser_manager_status();
-	t_measure_status_msg.set_laser_manager_status((message::Laser_manager_status)t_laser_manager_status);
-
-	std::vector<Laser_base*> & t_laser_vector = Laser_manager::get_instance_references().get_laser_vector();
-	for (auto iter = t_laser_vector.begin(); iter != t_laser_vector.end(); ++iter)
-	{
-		Laser_statu t_laser_statu = (*iter)->get_laser_statu();
-		t_measure_status_msg.add_laser_statu_vector((message::Laser_statu)t_laser_statu);
-	}
-
-	Locate_manager::Locate_manager_status t_locate_manager_status = Locate_manager::get_instance_references().get_locate_manager_status();
-	t_measure_status_msg.set_locate_manager_status((message::Locate_manager_status)t_locate_manager_status);
-
-	t_measure_status_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
-	t_measure_status_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
-	t_measure_status_msg.mutable_error_manager()->set_error_description(t_error.get_error_description(), t_error.get_description_length());
-
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_x(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_y(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_angle(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_length(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_width(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_height(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_wheel_base(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_wheel_width(0);
-	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_correct(0);
-
-	string t_msg = t_measure_status_msg.SerializeAsString();
-	System_communication::get_instance_references().encapsulate_msg(t_msg);
-
-	return Error_code::SUCCESS;
+	return System_executor::get_instance_references().encapsulate_send_status();
 }
 
 

+ 139 - 12
system/system_executor.cpp

@@ -19,10 +19,11 @@ System_executor::~System_executor()
 }
 
 //初始化
-Error_manager System_executor::system_executor_init(int threads_size)
+Error_manager System_executor::system_executor_init(int threads_size, int terminal_id)
 {
 	m_thread_pool.thread_pool_init(threads_size);
 	m_system_executor_status = SYSTEM_EXECUTOR_READY;
+	m_terminal_id = terminal_id;
 	return Error_code::SUCCESS;
 }
 
@@ -34,9 +35,52 @@ Error_manager System_executor::system_executor_uninit()
 	return Error_code::SUCCESS;
 }
 
+//检查消息是否有效, 主要检查消息类型和接受者, 判断这条消息是不是给我的.
+Error_manager System_executor::check_msg(Communication_message* p_msg)
+{
+	if ( p_msg == NULL )
+	{
+		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
+							 "  POINTER IS NULL ");
+	}
+
+	//检查消息类型
+	switch ( p_msg->get_message_type() )
+	{
+		case Communication_message::Message_type::eLocate_request_msg:
+		{
+			//检查接受人
+			if ( p_msg->get_receiver() == Communication_message::Communicator::eMeasurer )
+			{
+				message::Measure_request_msg t_measure_request_msg;
+				//针对消息类型, 对消息进行二次解析
+				if (t_measure_request_msg.ParseFromString(p_msg->get_message_buf()))
+				{
+					//检查终端id
+					if ( t_measure_request_msg.terminal_id() == m_terminal_id )
+					{
+						return Error_code::SUCCESS;
+					}
+				}
+			}
+			break;
+		}
+		default :
+			;
+			break;
+	}
+
+
+	//无效的消息,
+	return Error_manager(Error_code::INVALID_MESSAGE, Error_level::NEGLIGIBLE_ERROR,
+						 " INVALID_MESSAGE error ");
+}
+
 //检查执行者的状态, 判断能否处理这条消息,
 Error_manager System_executor::check_executer(Communication_message* p_msg)
 {
+	//huli DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD  记得删除
+	return Error_code::SUCCESS;
 	if ( p_msg == NULL )
 	{
 		return Error_manager(Error_code::POINTER_IS_NULL, Error_level::MINOR_ERROR,
@@ -84,7 +128,7 @@ Error_manager System_executor::check_executer(Communication_message* p_msg)
 						t_measure_response_msg.mutable_base_info()->set_sender(message::Communicator::eMeasurer);
 						t_measure_response_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
 
-						t_measure_response_msg.set_command_id(t_measure_request_msg.command_id());
+						t_measure_response_msg.set_command_key(t_measure_request_msg.command_key());
 						t_measure_response_msg.set_terminal_id(t_measure_request_msg.terminal_id());
 						t_measure_response_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
 						t_measure_response_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
@@ -132,12 +176,12 @@ Error_manager System_executor::execute_msg(Communication_message* p_msg)
 			{
 				//往线程池添加执行任务, 之后会唤醒一个线程去执行他.
 				m_thread_pool.enqueue(&System_executor::execute_for_measure, this,
-				t_measure_request_msg.command_id(), t_measure_request_msg.terminal_id());
+									  t_measure_request_msg.command_key(), t_measure_request_msg.terminal_id());
 			}
 			else
 			{
-			    return Error_manager(Error_code::SYSTEM_EXECUTOR_PARSE_ERROR, Error_level::MINOR_ERROR,
-			    					" message::Measure_request_msg  ParseFromString error ");
+				return Error_manager(Error_code::SYSTEM_EXECUTOR_PARSE_ERROR, Error_level::MINOR_ERROR,
+									 " message::Measure_request_msg  ParseFromString error ");
 			}
 			break;
 
@@ -154,27 +198,73 @@ Error_manager System_executor::check_status()
 	{
 		if ( m_thread_pool.thread_is_full_load() == false )
 		{
-		    return Error_code::SUCCESS;
+			return Error_code::SUCCESS;
 		}
 		else
 		{
-		    return Error_manager(Error_code::SYSTEM_EXECUTOR_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
-		    					" System_executor::check_status error ");
+			return Error_manager(Error_code::SYSTEM_EXECUTOR_STATUS_BUSY, Error_level::NEGLIGIBLE_ERROR,
+								 " System_executor::check_status error ");
 		}
 	}
 	else
 	{
 		return Error_manager(Error_code::SYSTEM_EXECUTOR_STATUS_ERROR, Error_level::MINOR_ERROR,
-							" System_executor::check_status error ");
+							 " System_executor::check_status error ");
 	}
 }
 
+//定时发送状态信息
+Error_manager System_executor::encapsulate_send_status()
+{
+	Error_manager t_error;
+	//创建一条状态消息
+	message::Measure_status_msg t_measure_status_msg;
+	t_measure_status_msg.mutable_base_info()->set_msg_type(message::Message_type::eLocate_status_msg);
+	t_measure_status_msg.mutable_base_info()->set_timeout_ms(5000);
+	t_measure_status_msg.mutable_base_info()->set_sender(message::Communicator::eMeasurer);
+	t_measure_status_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
+
+	t_measure_status_msg.set_terminal_id(m_terminal_id);
+
+	Laser_manager::Laser_manager_status t_laser_manager_status = Laser_manager::get_instance_references().get_laser_manager_status();
+	t_measure_status_msg.set_laser_manager_status((message::Laser_manager_status)t_laser_manager_status);
+
+	std::vector<Laser_base*> & t_laser_vector = Laser_manager::get_instance_references().get_laser_vector();
+	for (auto iter = t_laser_vector.begin(); iter != t_laser_vector.end(); ++iter)
+	{
+		Laser_statu t_laser_statu = (*iter)->get_laser_statu();
+		t_measure_status_msg.add_laser_statu_vector((message::Laser_statu)t_laser_statu);
+	}
+
+	Locate_manager::Locate_manager_status t_locate_manager_status = Locate_manager::get_instance_references().get_locate_manager_status();
+	t_measure_status_msg.set_locate_manager_status((message::Locate_manager_status)t_locate_manager_status);
+
+	t_measure_status_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
+	t_measure_status_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
+	t_measure_status_msg.mutable_error_manager()->set_error_description(t_error.get_error_description(), t_error.get_description_length());
+
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_x(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_y(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_angle(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_length(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_width(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_height(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_wheel_base(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_wheel_width(0);
+	t_measure_status_msg.mutable_locate_information_realtime()->set_locate_correct(0);
+
+	string t_msg = t_measure_status_msg.SerializeAsString();
+	System_communication::get_instance_references().encapsulate_msg(t_msg);
+
+	return Error_code::SUCCESS;
+}
+
 //判断是否为待机,如果已经准备好,则可以执行任务。
 bool System_executor::is_ready()
 {
 	if ( m_system_executor_status == SYSTEM_EXECUTOR_READY && m_thread_pool.thread_is_full_load() == false )
 	{
-	    return true;
+		return true;
 	}
 	else
 	{
@@ -194,12 +284,12 @@ System_executor::System_executor_status System_executor::get_system_executor_sta
 //input::command_id, 消息指令id, 由主控制系统生成的唯一码
 //input::command_id, 终端id, 对应具体的某个车位
 //return::void, 没有返回, 执行结果直接生成一条答复消息, 然后通过通信返回
-void System_executor::execute_for_measure(int command_id, int terminal_id)
+void System_executor::execute_for_measure(std::string command_info, int terminal_id)
 {
 	Error_manager t_error;
 
 	LOG(INFO) << " System_executor::execute_for_measure run "<< this;
-
+/*
 	//第一步, 创建点云缓存, 和 指定雷达,目前就一个
 	std::map<int,pcl::PointCloud<pcl::PointXYZ>::Ptr>		point_cloud_map;
 	std::mutex cloud_lock;
@@ -337,5 +427,42 @@ void System_executor::execute_for_measure(int command_id, int terminal_id)
 	std::cout << "huli t_measure_response_msg = " << t_measure_response_msg.DebugString() << std::endl;
 
 
+	return ;
+*/
+
+
+
+
+	message::Measure_response_msg t_measure_response_msg;
+	t_measure_response_msg.mutable_base_info()->set_msg_type(message::Message_type::eLocate_response_msg);
+	t_measure_response_msg.mutable_base_info()->set_timeout_ms(5000);
+	t_measure_response_msg.mutable_base_info()->set_sender(message::Communicator::eMeasurer);
+	t_measure_response_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
+
+	t_measure_response_msg.set_command_key(command_info);
+	t_measure_response_msg.set_terminal_id(terminal_id);
+	t_measure_response_msg.mutable_error_manager()->set_error_code(t_error.get_error_code());
+	t_measure_response_msg.mutable_error_manager()->set_error_level((message::Error_level)t_error.get_error_level());
+	t_measure_response_msg.mutable_error_manager()->set_error_description(t_error.get_error_description(), t_error.get_description_length());
+
+	if ( t_error == Error_code::SUCCESS )
+	{
+		t_measure_response_msg.mutable_locate_information()->set_locate_x(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_y(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_angle(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_length(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_width(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_height(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_wheel_base(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_wheel_width(0);
+		t_measure_response_msg.mutable_locate_information()->set_locate_correct(0);
+	}
+
+	string t_msg = t_measure_response_msg.SerializeAsString();
+	System_communication::get_instance_references().encapsulate_msg(t_msg);
+
+	std::cout << "huli t_measure_response_msg = " << t_measure_response_msg.DebugString() << std::endl;
+
+
 	return ;
 }

+ 10 - 2
system/system_executor.h

@@ -37,10 +37,13 @@ public:
     ~System_executor();
 public://API functions
 	//初始化
-	Error_manager system_executor_init(int threads_size);
+	Error_manager system_executor_init(int threads_size, int terminal_id);
 	//反初始化
 	Error_manager system_executor_uninit();
 
+	//检查消息是否有效, 主要检查消息类型和接受者, 判断这条消息是不是给我的.
+	Error_manager check_msg(Communication_message* p_msg);
+
 	//检查执行者的状态, 判断能否处理这条消息,
 	Error_manager check_executer(Communication_message* p_msg);
 	//处理消息的执行函数
@@ -49,6 +52,9 @@ public://API functions
 	//检查状态
 	Error_manager check_status();
 
+	//定时发送状态信息
+	Error_manager encapsulate_send_status();
+
 	//判断是否为待机,如果已经准备好,则可以执行任务。
 	bool is_ready();
 public://get or set member variable
@@ -58,7 +64,7 @@ public:
 //input::command_id, 消息指令id, 由主控制系统生成的唯一码
 //input::command_id, 终端id, 对应具体的某个车位
 //return::void, 没有返回, 执行结果直接生成一条答复消息, 然后通过通信返回
-	void execute_for_measure(int command_id, int terminal_id);
+	void execute_for_measure(std::string command_info, int terminal_id);
 
 
 protected://member variable
@@ -67,6 +73,8 @@ protected://member variable
 	
 	Thread_pool 				m_thread_pool;					//执行多任务的线程池
 
+	int 						m_terminal_id;						//终端id
+
 private:
 
 };

+ 1 - 1
task/task_base.cpp

@@ -135,7 +135,7 @@ std::chrono::milliseconds	Task_Base::get_task_over_time()
 	return m_task_over_time;
 }
 //设置 任务超时的时限
-void	Task_Base::get_task_over_time(std::chrono::milliseconds task_over_time)
+void	Task_Base::set_task_over_time(std::chrono::milliseconds task_over_time)
 {
 	m_task_over_time = task_over_time;
 }

+ 1 - 1
task/task_base.h

@@ -97,7 +97,7 @@ public:
 	//获取 任务超时的时限
 	std::chrono::milliseconds	get_task_over_time();
 	//设置 任务超时的时限
-	void	get_task_over_time(std::chrono::milliseconds task_over_time);
+	void	set_task_over_time(std::chrono::milliseconds task_over_time);
 
 
 protected: