Browse Source

隔爆电源交流电掉电告警功能---分站消息处理
出现BUG ,调试通过

chensongchao 6 years ago
parent
commit
1e604a027f
2 changed files with 19 additions and 10 deletions
  1. 18 9
      net-service.cpp
  2. 1 1
      site_message_handle.cpp

+ 18 - 9
net-service.cpp

@@ -44,22 +44,25 @@ void net_service::on_message(std::shared_ptr<client> clt,const char*data,size_t
 		case CHAR_LOCATEDATA_TOF_EXTEND://tof-扩展
 			{
 				uint32_t site_id;
+				//is>>site_id>>skip(12);
 				message_siteinfo msgSiteInfo;
 				msgSiteInfo.load(is,false);
 				site_id = msgSiteInfo.m_site_id;
-				task* t_site=task::alloc<message_locinfo>();
+				auto site_ptr = sit_list::instance()->get(static_cast<int32_t>(site_id));
+				if(!site_ptr)
+				{
+					log_error("在全局分站列表中找不到分站:分站id=%d", site_id);
+					break;
+				}
+				//分站数据到队列
+				task* t_site=task::alloc<message_siteinfo>();
+				message_siteinfo &msg = t_site->body<message_siteinfo>();
+				msg = msgSiteInfo;
 				t_site->m_cmd_code=cmd;
 				t_site->m_hash_id=site_id;
 				t_site->m_site_data = 1;
 				m_loc_worker->request(t_site);
-				//is>>site_id>>skip(12);
-
-                auto site_ptr = sit_list::instance()->get(static_cast<int32_t>(site_id));
-                if(!site_ptr)
-                {
-                    log_error("在全局分站列表中找不到分站:分站id=%d", site_id);
-                    break;
-                }
+				//设置连接到分站数据中
                 site_ptr->set_client(clt);
 
 				struct timeval tv;
@@ -75,6 +78,7 @@ void net_service::on_message(std::shared_ptr<client> clt,const char*data,size_t
 					m.load(is,cmd==0x863b);
 					m.m_time_stamp=tstamp;
 					m.m_site_id=site_id;
+					t_site->m_site_data = 0;
 
 					t->m_cmd_code=cmd;
 					t->m_hash_id=m.m_card_id;
@@ -85,8 +89,12 @@ void net_service::on_message(std::shared_ptr<client> clt,const char*data,size_t
 		case CHAR_LOCATEDATA_TDOA_EXTEND://tdoa
 			{
 				uint32_t site_id;
+				//is>>site_id>>skip(12);
+				//分站数据
 				message_siteinfo msgSiteInfo;
 				msgSiteInfo.load(is,false);
+				message_siteinfo &msg = t_site->body<message_siteinfo>();
+				msg = msgSiteInfo;
 				site_id = msgSiteInfo.m_site_id;
 				task*t_site=task::alloc<message_locinfo>();
 				t_site->m_cmd_code=cmd;
@@ -99,6 +107,7 @@ void net_service::on_message(std::shared_ptr<client> clt,const char*data,size_t
 					message_locinfo&m=t->body<message_locinfo>();
 					m.load(is,cmd==0x863b);
 					m.m_site_id=site_id;
+					t->m_site_data = 0;
 					t->m_cmd_code=cmd;
 					t->m_hash_id=m.m_card_id;
 					m_sync_worker->translate(m);

+ 1 - 1
site_message_handle.cpp

@@ -79,7 +79,7 @@ void site_message_handle::reader_power_battery_alarm(unsigned int site_id, int p
     if (!pSite->m_needpower_alarm)
     {
         //如果分站不需要电池供电告警,而告警事件列表中存在告警信息,需要发送结束告警事件
-        if (ev_ptr && ev_ptr->m_status == ES_START)
+        if (nullptr != ev_ptr && ev_ptr->m_status == ES_START)
         {
             oldEvState = ES_START;
             usePowerType = 1;