Parcourir la source

20211214, s7 time to 10ms, heart 1~255, terminal id -> id_struct, clear_request, over to ready, car_numberplate, car_wheel_base for pickup, cout 10ci/s, delete MEASURE_TO_PLC_CORRECTION, main id 2 -> 0,

huli il y a 3 ans
Parent
commit
60b93cf7de

+ 3 - 3
dispatch/dispatch_ground_lidar.cpp

@@ -109,7 +109,7 @@ void Dispatch_ground_lidar::execute_thread_fun()
 
 				if (p_request->m_request_communication_mode != 2)
 				{
-					p_response_data->m_response_heartbeat = 1-p_response_data->m_response_heartbeat;
+					p_response_data->m_response_heartbeat = 1+p_response_data->m_response_heartbeat;
 					p_response_data->m_response_communication_mode = p_request->m_request_communication_mode;
 					p_response_data->m_response_refresh_command = p_request->m_request_refresh_command;
 
@@ -133,13 +133,13 @@ void Dispatch_ground_lidar::execute_thread_fun()
 				}
 				else if (p_response_data->m_response_refresh_command == p_request->m_request_refresh_command)
 				{
-					p_response_data->m_response_heartbeat = 1-p_response_data->m_response_heartbeat;
+					p_response_data->m_response_heartbeat = 1+p_response_data->m_response_heartbeat;
 					p_response_data->m_response_communication_mode = p_request->m_request_communication_mode;
 					p_response_data->m_response_refresh_command = p_request->m_request_refresh_command;
 				}
 				else
 				{
-					p_response_data->m_response_heartbeat = 1-p_response_data->m_response_heartbeat;
+					p_response_data->m_response_heartbeat = 1+p_response_data->m_response_heartbeat;
 					p_response_data->m_response_communication_mode = p_request->m_request_communication_mode;
 					p_response_data->m_response_refresh_command = p_request->m_request_refresh_command;
 

+ 72 - 7
dispatch/dispatch_plc.cpp

@@ -108,6 +108,41 @@ Dispatch_plc::Dispatch_plc_status Dispatch_plc::get_dispatch_plc_status()
 	return m_dispatch_plc_status;
 }
 
+void Dispatch_plc::clear_request_msg()
+{
+    m_request_key.clear();                //请求唯一码, 用作识别
+    m_request_status = 0;            //请求确认标志
+// 调度指令的起点,终点,方向
+    m_request_dispatch_motion_direction = Common_data::Dispatch_motion_direction::DISPATCH_MOTION_DIRECTION_UNKNOWN;        //调度方向	0=未知,1=存车,2=取车
+    m_request_passageway_id = 0;                    //出入口id	6个入口和6个出口
+    m_request_passageway_direction = Common_data::Passageway_direction::PASSAGEWAY_DIRECTION_UNKNOWN;                //出入口方向	0=未知,1=入口,2=出口
+    m_request_parkingspace_index_id = 0;            //楼上车位索引id	1~180(3*6*13)
+    m_request_parkingspace_unit_id = 0;                //楼上车位单元号	1~3
+    m_request_parkingspace_floor_id = 0;            //楼上车位楼层号	2~11
+    m_request_parkingspace_room_id = 0;                //楼上车位房间号	1~6
+    m_request_parkingspace_direction = Common_data::Parkingspace_direction::PARKINGSPACE_DIRECTION_UNKNOWN;            //楼上车位方向	0=未知,1=朝南,2=朝北
+//汽车的定位信息(地面雷达)
+    m_request_car_center_x = 0;                //整车的中心点x值, 四轮的中心, 单位:米 m
+    m_request_car_center_y = 0;                //整车的中心点y值, 四轮的中心, 单位:米 m
+    m_request_car_angle = 0;                //整车的车身旋转角, 单位:度 (-90~90)
+    m_request_car_front_theta = 0;            //整车的前轮的旋转角, 单位:度 (-90~90)
+    m_request_car_length = 0;                //整车的长度, 用于规避碰撞, 单位:米 m
+    m_request_car_width = 0;                //整车的宽度, 用于规避碰撞, 单位:米 m
+    m_request_car_height = 0;                //整车的高度, 用于规避碰撞, 单位:米 m
+    m_request_car_wheel_base = 0;            //整车的轮距, 前后轮的距离, 用于机器人或agv的抓车, 单位:米 m
+    m_request_car_wheel_width = 0;            //整车的轮距, 左右轮的距离, 用于机器人或agv的抓车, 单位:米 m
+    m_request_car_license.clear();                    //车牌号(汽车唯一标示)	例如: 鄂A12345
+
+    m_request_car_type = Common_data::Car_type::UNKNOW_CAR_TYPE;                    //车的大小
+    m_request_uniformed_car_x = 0;                //转角复位后,车辆中心点x
+    m_request_uniformed_car_y = 0;                //转角复位后,车辆中心点y
+
+//防撞雷达
+    m_request_anticollision_lidar_flag = Common_data::Anticollision_lidar_flag::ANTICOLLISION_LIDAR_UNKNOWN;        //汽车是否停到正确的位置, 防撞雷达	预留, 楚天暂时不用,0=未知,1=位置正常,2=位置异常
+//轮距雷达
+    m_request_car_wheel_base_exact_value = 0;    //汽车前后轮距,轮距雷达的精确值	预留, 楚天暂时不用,单位:米 m
+
+}
 
 //jiancha qingqiu xiaoxi
 Error_manager Dispatch_plc::check_dispatch_request_msg(message::Dispatch_request_msg & dispatch_request_msg)
@@ -147,8 +182,15 @@ void Dispatch_plc::execute_thread_fun()
 			std::this_thread::yield();
 //			std::unique_lock<std::mutex> t_lock(m_lock);
 
-			std::cout << " huli test :::: " << " m_plc_id = " << m_plc_id << std::endl;
-			std::cout << " huli test :::: " << " m_dispatch_plc_status = " << m_dispatch_plc_status << std::endl;
+
+            static int t_count = 0;
+            if (t_count % 10 == 0 )
+            {
+                std::cout << " huli test :::: " << " m_plc_id = " << m_plc_id << std::endl;
+                std::cout << " huli test :::: " << " m_dispatch_plc_status = " << m_dispatch_plc_status << std::endl;
+            }
+            t_count++;
+
 
 			switch ((Dispatch_plc_status) m_dispatch_plc_status)
 			{
@@ -258,14 +300,20 @@ void Dispatch_plc::execute_thread_fun()
 						}
 						else if ( m_result != Error_code::NODATA )
 						{
-							m_dispatch_plc_status = DISPATCH_PLC_FAULT;
-						}
+					//		m_dispatch_plc_status = DISPATCH_PLC_FAULT;
+                            m_dispatch_plc_status = DISPATCH_PLC_RESPONSE;
+
+                        }
 						//else 原地等待
 					}
 					break;
 				}
 				case DISPATCH_PLC_RESPONSE:
 				{
+				    //20211213. huli m_request_status = 0 after over process
+                    m_request_status = 0;
+                    clear_request_msg();
+
 					//发送调度答复信息给主控
 					send_dispatch_response_to_main_control();
 					//无论前面的流程是否正确,都要给主控答复, 反馈里面填充错误码即可.
@@ -286,9 +334,19 @@ void Dispatch_plc::execute_thread_fun()
 				}
 				case DISPATCH_PLC_FAULT:
 				{
+                    //20211213. huli m_request_status = 0 after over process
+                    m_request_status = 0;
+                    clear_request_msg();
+
 					//不在接受新的任务,但是保持基本的通信正常
 					update_dispatch_plc_communication();
-					break;
+
+
+                    //20211209 huli //流程异常结束, 进入到 ready.
+                    m_dispatch_plc_status = DISPATCH_PLC_READY;
+                    LOG(ERROR) << " Dispatch_plc::execute_thread_fun() dispatch_plc is fault, now recover to normal " << this;
+
+                    break;
 				}
 			}
 		}
@@ -371,10 +429,16 @@ Error_manager Dispatch_plc::encapsulate_dispatch_request_to_plc(int outlet_id)
 		m_request_parkingspace_room_id = m_dispatch_request_msg.parkspace_info_ex(0).parkingspace_room_id();
 		//车位朝向, 小号朝前朝南, 大号朝后朝北
 		m_request_parkingspace_direction = (Common_data::Parkingspace_direction)m_dispatch_request_msg.parkspace_info_ex(0).parkingspace_direction();
-		m_request_car_license = m_dispatch_request_msg.parkspace_info_ex(0).car_info().license();
+		m_request_car_license = m_dispatch_request_msg.parkspace_info_ex(0).car_info().car_numberplate();
 
 		m_request_car_type = (Common_data::Car_type)m_dispatch_request_msg.parkspace_info_ex(0).car_type();
 
+		//20211207, huli add wheel_base   for pickup_car
+        if( m_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_PICKUP_CAR )
+        {
+            m_request_car_wheel_base = m_dispatch_request_msg.parkspace_info_ex(0).car_info().car_wheel_base();
+            m_request_car_wheel_width = m_dispatch_request_msg.parkspace_info_ex(0).car_info().car_wheel_width();
+        }
 	}
 	else
 	{
@@ -567,8 +631,9 @@ Error_manager Dispatch_plc::check_response_from_plc()
 	//检查唯一码
 	if ( m_response_key == m_request_key  )
 	{
+	    std::cout<< "m_response_status = " << m_response_status << std::endl;
 		//如果故障,则添加错误码
-		if ( m_response_status  != RESPONS_WORKING )
+		if ( m_response_status  != RESPONS_OVER )
 		{
 			//添加错误码
 			Error_manager t_error(DISPATCH_PLC_RESPONS_ERROR, MINOR_ERROR, " Dispatch_plc::check_response_from_plc() m_respons_status is error");

+ 2 - 0
dispatch/dispatch_plc.h

@@ -71,6 +71,8 @@ public://API functions
 
 public://get or set member variable
 	Dispatch_plc::Dispatch_plc_status get_dispatch_plc_status();
+
+	void clear_request_msg();
 protected://member functions
     //jiancha qingqiu xiaoxi
     Error_manager check_dispatch_request_msg(message::Dispatch_request_msg & dispatch_request_msg);

+ 3 - 3
dispatch/dispatch_singlechip.cpp

@@ -125,7 +125,7 @@ void Dispatch_singlechip::execute_thread_fun()
 
 				if (p_request->m_request_communication_mode != 2)
 				{
-					p_response->m_response_heartbeat = 1-p_response->m_response_heartbeat;
+					p_response->m_response_heartbeat = 1+p_response->m_response_heartbeat;
 					p_response->m_response_communication_mode = p_request->m_request_communication_mode;
 					p_response->m_response_refresh_command = p_request->m_request_refresh_command;
 					p_response->m_response_data_validity = m_validity;
@@ -163,13 +163,13 @@ void Dispatch_singlechip::execute_thread_fun()
 				}
 				else if (p_response->m_response_refresh_command == p_request->m_request_refresh_command)
 				{
-					p_response->m_response_heartbeat = 1-p_response->m_response_heartbeat;
+					p_response->m_response_heartbeat = 1+p_response->m_response_heartbeat;
 					p_response->m_response_communication_mode = p_request->m_request_communication_mode;
 					p_response->m_response_refresh_command = p_request->m_request_refresh_command;
 				}
 				else
 				{
-					p_response->m_response_heartbeat = 1-p_response->m_response_heartbeat;
+					p_response->m_response_heartbeat = 1+p_response->m_response_heartbeat;
 					p_response->m_response_communication_mode = p_request->m_request_communication_mode;
 					p_response->m_response_refresh_command = p_request->m_request_refresh_command;
 					p_response->m_response_data_validity = m_validity;

+ 1 - 1
error_code/error_code.h

@@ -7,7 +7,7 @@
 
 #define PLC_S7_COMMUNICATION 1	//是否开启plc的通信
 #define WAIT_PLC_RESPONSE 1		//是否等待plc的答复
-#define MEASURE_TO_PLC_CORRECTION 1		//修正感测数据
+//#define MEASURE_TO_PLC_CORRECTION 1		//修正感测数据
 
 
 //Error_code是错误码的底层通用模块,

+ 1 - 1
main.cpp

@@ -56,7 +56,7 @@ using namespace std;
 int main(int argc,char* argv[])
 {
 
-	int t_id = 2;
+	int t_id = 0;
 	if ( argc == 2 )
 	{
 		t_id = stoi(argv[1]);

+ 154 - 121
message/singlechip_msg.pb.cc

@@ -142,6 +142,7 @@ void InitDefaultsTerminal_status_msgImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
+  protobuf_message_5fbase_2eproto::InitDefaultsId_struct();
   protobuf_singlechip_5fmsg_2eproto::InitDefaultsSinglechip_data();
   {
     void* ptr = &::message::_Terminal_status_msg_default_instance_;
@@ -272,12 +273,12 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Terminal_status_msg, base_info_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Terminal_status_msg, terminal_id_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Terminal_status_msg, id_struct_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Terminal_status_msg, singlechipdata_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Terminal_status_msg, singlechip_validity_),
   0,
-  2,
   1,
+  2,
   3,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
@@ -347,89 +348,89 @@ void AddDescriptorsImpl() {
       "us\0229\n\022OutsideDoorControl\030\r \001(\0162\035.message"
       ".Outside_door_control\022\032\n\022DispatchFinishF"
       "lag\030\016 \001(\005\022\034\n\024OutsideExistenceFlag\030\017 \001(\005\""
-      "\240\001\n\023Terminal_status_msg\022%\n\tbase_info\030\001 \002"
-      "(\0132\022.message.Base_info\022\023\n\013terminal_id\030\002 "
-      "\001(\005\0220\n\016singlechipData\030\003 \001(\0132\030.message.Si"
-      "nglechip_data\022\033\n\023singlechip_validity\030\004 \001"
-      "(\010*\344\006\n\017Process_control\022\033\n\027PROCESS_CONTRO"
-      "L_UNKNOWN\020\000\022\035\n\031PROCESS_CONTROL_FULL_AUTO"
-      "\020\001\022\032\n\026PROCESS_CONTROL_MANUAL\020\002\022\036\n\032PROCES"
-      "S_CONTROL_AUTO_CLOSE\020\003\022\035\n\031PROCESS_CONTRO"
-      "L_AUTO_OPEN\020\004\022\034\n\030PROCESS_CONTROL_TO_READ"
-      "Y\020\005\022\031\n\025PROCESS_CONTROL_RESET\020\007\022\030\n\024PROCES"
-      "S_CONTROL_STOP\020\010\022\031\n\025PROCESS_CONTROL_FAUL"
-      "T\020\t\022\033\n\027PROCESS_CONTROL_INLET_0\020\n\022\033\n\027PROC"
-      "ESS_CONTROL_INLET_1\020\013\022\033\n\027PROCESS_CONTROL"
-      "_INLET_2\020\014\022\033\n\027PROCESS_CONTROL_INLET_3\020\r\022"
-      "\033\n\027PROCESS_CONTROL_INLET_4\020\016\022\033\n\027PROCESS_"
-      "CONTROL_INLET_5\020\017\022\033\n\027PROCESS_CONTROL_INL"
-      "ET_6\020\020\022\033\n\027PROCESS_CONTROL_INLET_7\020\021\022\033\n\027P"
-      "ROCESS_CONTROL_INLET_8\020\022\022\033\n\027PROCESS_CONT"
-      "ROL_INLET_9\020\023\022\034\n\030PROCESS_CONTROL_OUTLET_"
-      "0\020\036\022\034\n\030PROCESS_CONTROL_OUTLET_1\020\037\022\034\n\030PRO"
-      "CESS_CONTROL_OUTLET_2\020 \022\034\n\030PROCESS_CONTR"
-      "OL_OUTLET_3\020!\022\034\n\030PROCESS_CONTROL_OUTLET_"
-      "4\020\"\022\034\n\030PROCESS_CONTROL_OUTLET_5\020#\022\034\n\030PRO"
-      "CESS_CONTROL_OUTLET_6\020$\022\034\n\030PROCESS_CONTR"
-      "OL_OUTLET_7\020%\022\034\n\030PROCESS_CONTROL_OUTLET_"
-      "8\020&\022\034\n\030PROCESS_CONTROL_OUTLET_9\020\'*\311\001\n\022Ov"
-      "er_border_status\022\036\n\032OVER_BORDER_STATUS_U"
-      "NKNOWN\020\000\022\035\n\031OVER_BORDER_STATUS_NORMAL\020\001\022"
-      "\034\n\030OVER_BORDER_STATUS_FRONT\020\002\022\033\n\027OVER_BO"
-      "RDER_STATUS_BACK\020\003\022\033\n\027OVER_BORDER_STATUS"
-      "_LEFT\020\004\022\034\n\030OVER_BORDER_STATUS_RIGHT\020\005*\303\001"
-      "\n\021Car_height_status\022\035\n\031CAR_HEIGHT_STATUS"
-      "_UNKNOWN\020\000\022\033\n\027CAR_HEIGHT_STATUS_SMALL\020\001\022"
-      "\034\n\030CAR_HEIGHT_STATUS_MEDIUM\020\002\022\033\n\027CAR_HEI"
-      "GHT_STATUS_LARGE\020\003\022\032\n\026CAR_HEIGHT_STATUS_"
-      "HUGE\020\004\022\033\n\027CAR_HEIGHT_STATUS_FAULT\020\005*\257\001\n\023"
-      "Outside_door_status\022\037\n\033OUTSIDE_DOOR_STAT"
-      "US_UNKNOWN\020\000\022\034\n\030OUTSIDE_DOOR_STATUS_OPEN"
-      "\020\001\022\035\n\031OUTSIDE_DOOR_STATUS_CLOSE\020\002\022\033\n\027OUT"
-      "SIDE_DOOR_STATUS_RUN\020\003\022\035\n\031OUTSIDE_DOOR_S"
-      "TATUS_FAULT\020\004*w\n\024Outside_door_control\022 \n"
-      "\034OUTSIDE_DOOR_CONTROL_UNKNOWN\020\000\022\035\n\031OUTSI"
-      "DE_DOOR_CONTROL_OPEN\020\001\022\036\n\032OUTSIDE_DOOR_C"
-      "ONTROL_CLOSE\020\002*\224\013\n\016Process_status\022\032\n\026PRO"
-      "CESS_STATUS_UNKNOWN\020\000\022\034\n\030PROCESS_STATUS_"
-      "FULL_AUTO\020\001\022\031\n\025PROCESS_STATUS_MANUAL\020\002\022\035"
-      "\n\031PROCESS_STATUS_AUTO_CLOSE\020\003\022\034\n\030PROCESS"
-      "_STATUS_AUTO_OPEN\020\004\022\033\n\027PROCESS_STATUS_TO"
-      "_READY\020\005\022\030\n\024PROCESS_STATUS_RESET\020\007\022\027\n\023PR"
-      "OCESS_STATUS_STOP\020\010\022\030\n\024PROCESS_STATUS_FA"
-      "ULT\020\t\022\032\n\026PROCESS_STATUS_INLET_0\020\n\022\032\n\026PRO"
-      "CESS_STATUS_INLET_1\020\013\022\032\n\026PROCESS_STATUS_"
-      "INLET_2\020\014\022\032\n\026PROCESS_STATUS_INLET_3\020\r\022\032\n"
-      "\026PROCESS_STATUS_INLET_4\020\016\022\032\n\026PROCESS_STA"
-      "TUS_INLET_5\020\017\022\032\n\026PROCESS_STATUS_INLET_6\020"
-      "\020\022\032\n\026PROCESS_STATUS_INLET_7\020\021\022\032\n\026PROCESS"
-      "_STATUS_INLET_8\020\022\022\032\n\026PROCESS_STATUS_INLE"
-      "T_9\020\023\022\033\n\027PROCESS_STATUS_INLET_10\020\024\022\033\n\027PR"
-      "OCESS_STATUS_INLET_11\020\025\022\033\n\027PROCESS_STATU"
-      "S_INLET_12\020\026\022\033\n\027PROCESS_STATUS_INLET_13\020"
-      "\027\022\033\n\027PROCESS_STATUS_INLET_14\020\030\022\033\n\027PROCES"
-      "S_STATUS_INLET_15\020\031\022\033\n\027PROCESS_STATUS_IN"
-      "LET_16\020\032\022\033\n\027PROCESS_STATUS_INLET_17\020\033\022\033\n"
-      "\027PROCESS_STATUS_INLET_18\020\034\022\033\n\027PROCESS_ST"
-      "ATUS_INLET_19\020\035\022\033\n\027PROCESS_STATUS_OUTLET"
-      "_0\020\036\022\033\n\027PROCESS_STATUS_OUTLET_1\020\037\022\033\n\027PRO"
-      "CESS_STATUS_OUTLET_2\020 \022\033\n\027PROCESS_STATUS"
-      "_OUTLET_3\020!\022\033\n\027PROCESS_STATUS_OUTLET_4\020\""
-      "\022\033\n\027PROCESS_STATUS_OUTLET_5\020#\022\033\n\027PROCESS"
-      "_STATUS_OUTLET_6\020$\022\033\n\027PROCESS_STATUS_OUT"
-      "LET_7\020%\022\033\n\027PROCESS_STATUS_OUTLET_8\020&\022\033\n\027"
-      "PROCESS_STATUS_OUTLET_9\020\'\022\034\n\030PROCESS_STA"
-      "TUS_OUTLET_10\020(\022\034\n\030PROCESS_STATUS_OUTLET"
-      "_11\020)\022\034\n\030PROCESS_STATUS_OUTLET_12\020*\022\034\n\030P"
-      "ROCESS_STATUS_OUTLET_13\020+\022\034\n\030PROCESS_STA"
-      "TUS_OUTLET_14\020,\022\034\n\030PROCESS_STATUS_OUTLET"
-      "_15\020-\022\034\n\030PROCESS_STATUS_OUTLET_16\020.\022\034\n\030P"
-      "ROCESS_STATUS_OUTLET_17\020/\022\034\n\030PROCESS_STA"
-      "TUS_OUTLET_18\0200\022\034\n\030PROCESS_STATUS_OUTLET"
-      "_19\0201"
+      "\262\001\n\023Terminal_status_msg\022%\n\tbase_info\030\001 \002"
+      "(\0132\022.message.Base_info\022%\n\tid_struct\030\002 \002("
+      "\0132\022.message.Id_struct\0220\n\016singlechipData\030"
+      "\003 \001(\0132\030.message.Singlechip_data\022\033\n\023singl"
+      "echip_validity\030\004 \001(\010*\344\006\n\017Process_control"
+      "\022\033\n\027PROCESS_CONTROL_UNKNOWN\020\000\022\035\n\031PROCESS"
+      "_CONTROL_FULL_AUTO\020\001\022\032\n\026PROCESS_CONTROL_"
+      "MANUAL\020\002\022\036\n\032PROCESS_CONTROL_AUTO_CLOSE\020\003"
+      "\022\035\n\031PROCESS_CONTROL_AUTO_OPEN\020\004\022\034\n\030PROCE"
+      "SS_CONTROL_TO_READY\020\005\022\031\n\025PROCESS_CONTROL"
+      "_RESET\020\007\022\030\n\024PROCESS_CONTROL_STOP\020\010\022\031\n\025PR"
+      "OCESS_CONTROL_FAULT\020\t\022\033\n\027PROCESS_CONTROL"
+      "_INLET_0\020\n\022\033\n\027PROCESS_CONTROL_INLET_1\020\013\022"
+      "\033\n\027PROCESS_CONTROL_INLET_2\020\014\022\033\n\027PROCESS_"
+      "CONTROL_INLET_3\020\r\022\033\n\027PROCESS_CONTROL_INL"
+      "ET_4\020\016\022\033\n\027PROCESS_CONTROL_INLET_5\020\017\022\033\n\027P"
+      "ROCESS_CONTROL_INLET_6\020\020\022\033\n\027PROCESS_CONT"
+      "ROL_INLET_7\020\021\022\033\n\027PROCESS_CONTROL_INLET_8"
+      "\020\022\022\033\n\027PROCESS_CONTROL_INLET_9\020\023\022\034\n\030PROCE"
+      "SS_CONTROL_OUTLET_0\020\036\022\034\n\030PROCESS_CONTROL"
+      "_OUTLET_1\020\037\022\034\n\030PROCESS_CONTROL_OUTLET_2\020"
+      " \022\034\n\030PROCESS_CONTROL_OUTLET_3\020!\022\034\n\030PROCE"
+      "SS_CONTROL_OUTLET_4\020\"\022\034\n\030PROCESS_CONTROL"
+      "_OUTLET_5\020#\022\034\n\030PROCESS_CONTROL_OUTLET_6\020"
+      "$\022\034\n\030PROCESS_CONTROL_OUTLET_7\020%\022\034\n\030PROCE"
+      "SS_CONTROL_OUTLET_8\020&\022\034\n\030PROCESS_CONTROL"
+      "_OUTLET_9\020\'*\311\001\n\022Over_border_status\022\036\n\032OV"
+      "ER_BORDER_STATUS_UNKNOWN\020\000\022\035\n\031OVER_BORDE"
+      "R_STATUS_NORMAL\020\001\022\034\n\030OVER_BORDER_STATUS_"
+      "FRONT\020\002\022\033\n\027OVER_BORDER_STATUS_BACK\020\003\022\033\n\027"
+      "OVER_BORDER_STATUS_LEFT\020\004\022\034\n\030OVER_BORDER"
+      "_STATUS_RIGHT\020\005*\303\001\n\021Car_height_status\022\035\n"
+      "\031CAR_HEIGHT_STATUS_UNKNOWN\020\000\022\033\n\027CAR_HEIG"
+      "HT_STATUS_SMALL\020\001\022\034\n\030CAR_HEIGHT_STATUS_M"
+      "EDIUM\020\002\022\033\n\027CAR_HEIGHT_STATUS_LARGE\020\003\022\032\n\026"
+      "CAR_HEIGHT_STATUS_HUGE\020\004\022\033\n\027CAR_HEIGHT_S"
+      "TATUS_FAULT\020\005*\257\001\n\023Outside_door_status\022\037\n"
+      "\033OUTSIDE_DOOR_STATUS_UNKNOWN\020\000\022\034\n\030OUTSID"
+      "E_DOOR_STATUS_OPEN\020\001\022\035\n\031OUTSIDE_DOOR_STA"
+      "TUS_CLOSE\020\002\022\033\n\027OUTSIDE_DOOR_STATUS_RUN\020\003"
+      "\022\035\n\031OUTSIDE_DOOR_STATUS_FAULT\020\004*w\n\024Outsi"
+      "de_door_control\022 \n\034OUTSIDE_DOOR_CONTROL_"
+      "UNKNOWN\020\000\022\035\n\031OUTSIDE_DOOR_CONTROL_OPEN\020\001"
+      "\022\036\n\032OUTSIDE_DOOR_CONTROL_CLOSE\020\002*\224\013\n\016Pro"
+      "cess_status\022\032\n\026PROCESS_STATUS_UNKNOWN\020\000\022"
+      "\034\n\030PROCESS_STATUS_FULL_AUTO\020\001\022\031\n\025PROCESS"
+      "_STATUS_MANUAL\020\002\022\035\n\031PROCESS_STATUS_AUTO_"
+      "CLOSE\020\003\022\034\n\030PROCESS_STATUS_AUTO_OPEN\020\004\022\033\n"
+      "\027PROCESS_STATUS_TO_READY\020\005\022\030\n\024PROCESS_ST"
+      "ATUS_RESET\020\007\022\027\n\023PROCESS_STATUS_STOP\020\010\022\030\n"
+      "\024PROCESS_STATUS_FAULT\020\t\022\032\n\026PROCESS_STATU"
+      "S_INLET_0\020\n\022\032\n\026PROCESS_STATUS_INLET_1\020\013\022"
+      "\032\n\026PROCESS_STATUS_INLET_2\020\014\022\032\n\026PROCESS_S"
+      "TATUS_INLET_3\020\r\022\032\n\026PROCESS_STATUS_INLET_"
+      "4\020\016\022\032\n\026PROCESS_STATUS_INLET_5\020\017\022\032\n\026PROCE"
+      "SS_STATUS_INLET_6\020\020\022\032\n\026PROCESS_STATUS_IN"
+      "LET_7\020\021\022\032\n\026PROCESS_STATUS_INLET_8\020\022\022\032\n\026P"
+      "ROCESS_STATUS_INLET_9\020\023\022\033\n\027PROCESS_STATU"
+      "S_INLET_10\020\024\022\033\n\027PROCESS_STATUS_INLET_11\020"
+      "\025\022\033\n\027PROCESS_STATUS_INLET_12\020\026\022\033\n\027PROCES"
+      "S_STATUS_INLET_13\020\027\022\033\n\027PROCESS_STATUS_IN"
+      "LET_14\020\030\022\033\n\027PROCESS_STATUS_INLET_15\020\031\022\033\n"
+      "\027PROCESS_STATUS_INLET_16\020\032\022\033\n\027PROCESS_ST"
+      "ATUS_INLET_17\020\033\022\033\n\027PROCESS_STATUS_INLET_"
+      "18\020\034\022\033\n\027PROCESS_STATUS_INLET_19\020\035\022\033\n\027PRO"
+      "CESS_STATUS_OUTLET_0\020\036\022\033\n\027PROCESS_STATUS"
+      "_OUTLET_1\020\037\022\033\n\027PROCESS_STATUS_OUTLET_2\020 "
+      "\022\033\n\027PROCESS_STATUS_OUTLET_3\020!\022\033\n\027PROCESS"
+      "_STATUS_OUTLET_4\020\"\022\033\n\027PROCESS_STATUS_OUT"
+      "LET_5\020#\022\033\n\027PROCESS_STATUS_OUTLET_6\020$\022\033\n\027"
+      "PROCESS_STATUS_OUTLET_7\020%\022\033\n\027PROCESS_STA"
+      "TUS_OUTLET_8\020&\022\033\n\027PROCESS_STATUS_OUTLET_"
+      "9\020\'\022\034\n\030PROCESS_STATUS_OUTLET_10\020(\022\034\n\030PRO"
+      "CESS_STATUS_OUTLET_11\020)\022\034\n\030PROCESS_STATU"
+      "S_OUTLET_12\020*\022\034\n\030PROCESS_STATUS_OUTLET_1"
+      "3\020+\022\034\n\030PROCESS_STATUS_OUTLET_14\020,\022\034\n\030PRO"
+      "CESS_STATUS_OUTLET_15\020-\022\034\n\030PROCESS_STATU"
+      "S_OUTLET_16\020.\022\034\n\030PROCESS_STATUS_OUTLET_1"
+      "7\020/\022\034\n\030PROCESS_STATUS_OUTLET_18\0200\022\034\n\030PRO"
+      "CESS_STATUS_OUTLET_19\0201"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 4325);
+      descriptor, 4343);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "singlechip_msg.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -3161,6 +3162,8 @@ void Singlechip_data::InternalSwap(Singlechip_data* other) {
 void Terminal_status_msg::InitAsDefaultInstance() {
   ::message::_Terminal_status_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
       ::message::Base_info::internal_default_instance());
+  ::message::_Terminal_status_msg_default_instance_._instance.get_mutable()->id_struct_ = const_cast< ::message::Id_struct*>(
+      ::message::Id_struct::internal_default_instance());
   ::message::_Terminal_status_msg_default_instance_._instance.get_mutable()->singlechipdata_ = const_cast< ::message::Singlechip_data*>(
       ::message::Singlechip_data::internal_default_instance());
 }
@@ -3168,9 +3171,13 @@ void Terminal_status_msg::clear_base_info() {
   if (base_info_ != NULL) base_info_->Clear();
   clear_has_base_info();
 }
+void Terminal_status_msg::clear_id_struct() {
+  if (id_struct_ != NULL) id_struct_->Clear();
+  clear_has_id_struct();
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Terminal_status_msg::kBaseInfoFieldNumber;
-const int Terminal_status_msg::kTerminalIdFieldNumber;
+const int Terminal_status_msg::kIdStructFieldNumber;
 const int Terminal_status_msg::kSinglechipDataFieldNumber;
 const int Terminal_status_msg::kSinglechipValidityFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
@@ -3194,14 +3201,17 @@ Terminal_status_msg::Terminal_status_msg(const Terminal_status_msg& from)
   } else {
     base_info_ = NULL;
   }
+  if (from.has_id_struct()) {
+    id_struct_ = new ::message::Id_struct(*from.id_struct_);
+  } else {
+    id_struct_ = NULL;
+  }
   if (from.has_singlechipdata()) {
     singlechipdata_ = new ::message::Singlechip_data(*from.singlechipdata_);
   } else {
     singlechipdata_ = NULL;
   }
-  ::memcpy(&terminal_id_, &from.terminal_id_,
-    static_cast<size_t>(reinterpret_cast<char*>(&singlechip_validity_) -
-    reinterpret_cast<char*>(&terminal_id_)) + sizeof(singlechip_validity_));
+  singlechip_validity_ = from.singlechip_validity_;
   // @@protoc_insertion_point(copy_constructor:message.Terminal_status_msg)
 }
 
@@ -3219,6 +3229,7 @@ Terminal_status_msg::~Terminal_status_msg() {
 
 void Terminal_status_msg::SharedDtor() {
   if (this != internal_default_instance()) delete base_info_;
+  if (this != internal_default_instance()) delete id_struct_;
   if (this != internal_default_instance()) delete singlechipdata_;
 }
 
@@ -3252,21 +3263,21 @@ void Terminal_status_msg::Clear() {
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  if (cached_has_bits & 3u) {
+  if (cached_has_bits & 7u) {
     if (cached_has_bits & 0x00000001u) {
       GOOGLE_DCHECK(base_info_ != NULL);
       base_info_->Clear();
     }
     if (cached_has_bits & 0x00000002u) {
+      GOOGLE_DCHECK(id_struct_ != NULL);
+      id_struct_->Clear();
+    }
+    if (cached_has_bits & 0x00000004u) {
       GOOGLE_DCHECK(singlechipdata_ != NULL);
       singlechipdata_->Clear();
     }
   }
-  if (cached_has_bits & 12u) {
-    ::memset(&terminal_id_, 0, static_cast<size_t>(
-        reinterpret_cast<char*>(&singlechip_validity_) -
-        reinterpret_cast<char*>(&terminal_id_)) + sizeof(singlechip_validity_));
-  }
+  singlechip_validity_ = false;
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
@@ -3293,14 +3304,12 @@ bool Terminal_status_msg::MergePartialFromCodedStream(
         break;
       }
 
-      // optional int32 terminal_id = 2;
+      // required .message.Id_struct id_struct = 2;
       case 2: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
-          set_has_terminal_id();
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &terminal_id_)));
+            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_id_struct()));
         } else {
           goto handle_unusual;
         }
@@ -3366,13 +3375,14 @@ void Terminal_status_msg::SerializeWithCachedSizes(
       1, *this->base_info_, output);
   }
 
-  // optional int32 terminal_id = 2;
-  if (cached_has_bits & 0x00000004u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->terminal_id(), output);
+  // required .message.Id_struct id_struct = 2;
+  if (cached_has_bits & 0x00000002u) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, *this->id_struct_, output);
   }
 
   // optional .message.Singlechip_data singlechipData = 3;
-  if (cached_has_bits & 0x00000002u) {
+  if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
       3, *this->singlechipdata_, output);
   }
@@ -3404,13 +3414,15 @@ void Terminal_status_msg::SerializeWithCachedSizes(
         1, *this->base_info_, deterministic, target);
   }
 
-  // optional int32 terminal_id = 2;
-  if (cached_has_bits & 0x00000004u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->terminal_id(), target);
+  // required .message.Id_struct id_struct = 2;
+  if (cached_has_bits & 0x00000002u) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, *this->id_struct_, deterministic, target);
   }
 
   // optional .message.Singlechip_data singlechipData = 3;
-  if (cached_has_bits & 0x00000002u) {
+  if (cached_has_bits & 0x00000004u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
         3, *this->singlechipdata_, deterministic, target);
@@ -3429,6 +3441,26 @@ void Terminal_status_msg::SerializeWithCachedSizes(
   return target;
 }
 
+size_t Terminal_status_msg::RequiredFieldsByteSizeFallback() const {
+// @@protoc_insertion_point(required_fields_byte_size_fallback_start:message.Terminal_status_msg)
+  size_t total_size = 0;
+
+  if (has_base_info()) {
+    // required .message.Base_info base_info = 1;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->base_info_);
+  }
+
+  if (has_id_struct()) {
+    // required .message.Id_struct id_struct = 2;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->id_struct_);
+  }
+
+  return total_size;
+}
 size_t Terminal_status_msg::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:message.Terminal_status_msg)
   size_t total_size = 0;
@@ -3438,13 +3470,21 @@ size_t Terminal_status_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         _internal_metadata_.unknown_fields());
   }
-  // required .message.Base_info base_info = 1;
-  if (has_base_info()) {
+  if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
+    // required .message.Base_info base_info = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->base_info_);
+
+    // required .message.Id_struct id_struct = 2;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->id_struct_);
+
+  } else {
+    total_size += RequiredFieldsByteSizeFallback();
   }
-  if (_has_bits_[0 / 32] & 14u) {
+  if (_has_bits_[0 / 32] & 12u) {
     // optional .message.Singlechip_data singlechipData = 3;
     if (has_singlechipdata()) {
       total_size += 1 +
@@ -3452,13 +3492,6 @@ size_t Terminal_status_msg::ByteSizeLong() const {
           *this->singlechipdata_);
     }
 
-    // optional int32 terminal_id = 2;
-    if (has_terminal_id()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-          this->terminal_id());
-    }
-
     // optional bool singlechip_validity = 4;
     if (has_singlechip_validity()) {
       total_size += 1 + 1;
@@ -3500,10 +3533,10 @@ void Terminal_status_msg::MergeFrom(const Terminal_status_msg& from) {
       mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     if (cached_has_bits & 0x00000002u) {
-      mutable_singlechipdata()->::message::Singlechip_data::MergeFrom(from.singlechipdata());
+      mutable_id_struct()->::message::Id_struct::MergeFrom(from.id_struct());
     }
     if (cached_has_bits & 0x00000004u) {
-      terminal_id_ = from.terminal_id_;
+      mutable_singlechipdata()->::message::Singlechip_data::MergeFrom(from.singlechipdata());
     }
     if (cached_has_bits & 0x00000008u) {
       singlechip_validity_ = from.singlechip_validity_;
@@ -3527,7 +3560,7 @@ void Terminal_status_msg::CopyFrom(const Terminal_status_msg& from) {
 }
 
 bool Terminal_status_msg::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
+  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
   if (has_base_info()) {
     if (!this->base_info_->IsInitialized()) return false;
   }
@@ -3541,8 +3574,8 @@ void Terminal_status_msg::Swap(Terminal_status_msg* other) {
 void Terminal_status_msg::InternalSwap(Terminal_status_msg* other) {
   using std::swap;
   swap(base_info_, other->base_info_);
+  swap(id_struct_, other->id_struct_);
   swap(singlechipdata_, other->singlechipdata_);
-  swap(terminal_id_, other->terminal_id_);
   swap(singlechip_validity_, other->singlechip_validity_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);

+ 61 - 30
message/singlechip_msg.pb.h

@@ -1215,6 +1215,15 @@ class Terminal_status_msg : public ::google::protobuf::Message /* @@protoc_inser
   ::message::Base_info* mutable_base_info();
   void set_allocated_base_info(::message::Base_info* base_info);
 
+  // required .message.Id_struct id_struct = 2;
+  bool has_id_struct() const;
+  void clear_id_struct();
+  static const int kIdStructFieldNumber = 2;
+  const ::message::Id_struct& id_struct() const;
+  ::message::Id_struct* release_id_struct();
+  ::message::Id_struct* mutable_id_struct();
+  void set_allocated_id_struct(::message::Id_struct* id_struct);
+
   // optional .message.Singlechip_data singlechipData = 3;
   bool has_singlechipdata() const;
   void clear_singlechipdata();
@@ -1224,13 +1233,6 @@ class Terminal_status_msg : public ::google::protobuf::Message /* @@protoc_inser
   ::message::Singlechip_data* mutable_singlechipdata();
   void set_allocated_singlechipdata(::message::Singlechip_data* singlechipdata);
 
-  // optional 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);
-
   // optional bool singlechip_validity = 4;
   bool has_singlechip_validity() const;
   void clear_singlechip_validity();
@@ -1242,19 +1244,22 @@ class Terminal_status_msg : public ::google::protobuf::Message /* @@protoc_inser
  private:
   void set_has_base_info();
   void clear_has_base_info();
-  void set_has_terminal_id();
-  void clear_has_terminal_id();
+  void set_has_id_struct();
+  void clear_has_id_struct();
   void set_has_singlechipdata();
   void clear_has_singlechipdata();
   void set_has_singlechip_validity();
   void clear_has_singlechip_validity();
 
+  // helper for ByteSizeLong()
+  size_t RequiredFieldsByteSizeFallback() const;
+
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::message::Base_info* base_info_;
+  ::message::Id_struct* id_struct_;
   ::message::Singlechip_data* singlechipdata_;
-  ::google::protobuf::int32 terminal_id_;
   bool singlechip_validity_;
   friend struct ::protobuf_singlechip_5fmsg_2eproto::TableStruct;
   friend void ::protobuf_singlechip_5fmsg_2eproto::InitDefaultsTerminal_status_msgImpl();
@@ -2436,39 +2441,65 @@ inline void Terminal_status_msg::set_allocated_base_info(::message::Base_info* b
   // @@protoc_insertion_point(field_set_allocated:message.Terminal_status_msg.base_info)
 }
 
-// optional int32 terminal_id = 2;
-inline bool Terminal_status_msg::has_terminal_id() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
+// required .message.Id_struct id_struct = 2;
+inline bool Terminal_status_msg::has_id_struct() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
 }
-inline void Terminal_status_msg::set_has_terminal_id() {
-  _has_bits_[0] |= 0x00000004u;
+inline void Terminal_status_msg::set_has_id_struct() {
+  _has_bits_[0] |= 0x00000002u;
 }
-inline void Terminal_status_msg::clear_has_terminal_id() {
-  _has_bits_[0] &= ~0x00000004u;
+inline void Terminal_status_msg::clear_has_id_struct() {
+  _has_bits_[0] &= ~0x00000002u;
 }
-inline void Terminal_status_msg::clear_terminal_id() {
-  terminal_id_ = 0;
-  clear_has_terminal_id();
+inline const ::message::Id_struct& Terminal_status_msg::id_struct() const {
+  const ::message::Id_struct* p = id_struct_;
+  // @@protoc_insertion_point(field_get:message.Terminal_status_msg.id_struct)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Id_struct*>(
+      &::message::_Id_struct_default_instance_);
+}
+inline ::message::Id_struct* Terminal_status_msg::release_id_struct() {
+  // @@protoc_insertion_point(field_release:message.Terminal_status_msg.id_struct)
+  clear_has_id_struct();
+  ::message::Id_struct* temp = id_struct_;
+  id_struct_ = NULL;
+  return temp;
 }
-inline ::google::protobuf::int32 Terminal_status_msg::terminal_id() const {
-  // @@protoc_insertion_point(field_get:message.Terminal_status_msg.terminal_id)
-  return terminal_id_;
+inline ::message::Id_struct* Terminal_status_msg::mutable_id_struct() {
+  set_has_id_struct();
+  if (id_struct_ == NULL) {
+    id_struct_ = new ::message::Id_struct;
+  }
+  // @@protoc_insertion_point(field_mutable:message.Terminal_status_msg.id_struct)
+  return id_struct_;
 }
-inline void Terminal_status_msg::set_terminal_id(::google::protobuf::int32 value) {
-  set_has_terminal_id();
-  terminal_id_ = value;
-  // @@protoc_insertion_point(field_set:message.Terminal_status_msg.terminal_id)
+inline void Terminal_status_msg::set_allocated_id_struct(::message::Id_struct* id_struct) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_struct_);
+  }
+  if (id_struct) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      id_struct = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, id_struct, submessage_arena);
+    }
+    set_has_id_struct();
+  } else {
+    clear_has_id_struct();
+  }
+  id_struct_ = id_struct;
+  // @@protoc_insertion_point(field_set_allocated:message.Terminal_status_msg.id_struct)
 }
 
 // optional .message.Singlechip_data singlechipData = 3;
 inline bool Terminal_status_msg::has_singlechipdata() const {
-  return (_has_bits_[0] & 0x00000002u) != 0;
+  return (_has_bits_[0] & 0x00000004u) != 0;
 }
 inline void Terminal_status_msg::set_has_singlechipdata() {
-  _has_bits_[0] |= 0x00000002u;
+  _has_bits_[0] |= 0x00000004u;
 }
 inline void Terminal_status_msg::clear_has_singlechipdata() {
-  _has_bits_[0] &= ~0x00000002u;
+  _has_bits_[0] &= ~0x00000004u;
 }
 inline void Terminal_status_msg::clear_singlechipdata() {
   if (singlechipdata_ != NULL) singlechipdata_->Clear();

+ 1 - 1
message/singlechip_msg.proto

@@ -203,7 +203,7 @@ message Singlechip_data
 message Terminal_status_msg
 {
 	required Base_info	 	    base_info =1; //消息类型
-	optional int32 	 	        terminal_id=2; //终端号
+    required Id_struct			id_struct=2;
 	optional Singlechip_data	singlechipData=3; //单片机的数据
 	optional bool		singlechip_validity = 4;//单片机数据有效性
 }

+ 1 - 1
snap7_communication/snap7_communication_base.h

@@ -20,7 +20,7 @@ class Snap7_communication_base
 {
 public:
 	//snap7的通信延时, 默认50ms
-#define SNAP7_COMMUNICATION_DELAY_TIME_MS 	50
+#define SNAP7_COMMUNICATION_DELAY_TIME_MS 	10
 //snap7的通信参数路径
 #define SNAP7_COMMUNICATION_PARAMETER_PATH	"../setting/snap7_communication.prototxt"
 	//通信状态

+ 3 - 3
system/system_executor.cpp

@@ -122,10 +122,10 @@ Error_manager System_executor::check_msg(Communication_message* p_msg)
 				//针对消息类型, 对消息进行二次解析
 				if (t_terminal_status_msg.ParseFromString(p_msg->get_message_buf()))
 				{
-					if ( t_terminal_status_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2 ||
-					t_terminal_status_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2+1)
+                    if ( t_terminal_status_msg.id_struct().terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2 ||
+					t_terminal_status_msg.id_struct().terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2+1)
 					{
-						return Error_code::SUCCESS;
+                        return Error_code::SUCCESS;
 					}
 				}
 				else