Browse Source

Merge branch 'master' of http://local.beijingyongan.com:3000/linux-dev/ya-serv

lixioayao 6 years ago
parent
commit
b18cbd39b8
4 changed files with 34 additions and 12 deletions
  1. 2 2
      card.cpp
  2. 8 3
      card_message_handle.cpp
  3. 20 3
      crc.cpp
  4. 4 4
      znet.cpp

+ 2 - 2
card.cpp

@@ -351,8 +351,8 @@ void card_list::on_message(zloop<task*> *loop,const message_locinfo&loc,bool is_
 		log_warn("数据库中未定义该卡的信息,card_id=%d, card_type=%d,cardid:%lld",loc.m_card_id,loc.m_card_type,cardid);
 		return;
 	}
-	logn_info(3,"card_message:site=%d,ant=%d,card=%d,tof=%lld,rav=%02X,acc=%02X,rssi=%d,stamp=%llu",
-			loc.m_site_id,loc.m_ant_id,loc.m_card_id,loc.m_tof,loc.m_rav,loc.m_acc,loc.m_rssi,loc.m_time_stamp);
+	logn_info(3,"card_message:site=%d,ant=%d,card=%d,ct=%d,tof=%lld,rav=%02X,acc=%02X,rssi=%d,stamp=%llu",
+			loc.m_site_id,loc.m_ant_id,loc.m_card_id,loc.m_card_ct,loc.m_tof,loc.m_rav,loc.m_acc,loc.m_rssi,loc.m_time_stamp);
 
 	c->on_message(loop,loc,is_history);
 }

+ 8 - 3
card_message_handle.cpp

@@ -109,8 +109,13 @@ struct one_ct_message_handle
 
     void calc_location()
 	{
-		log_info("calc_location:%d begin",m_card->m_id);
-        auto v = m_msg_list;
+		auto v = m_msg_list;
+		if(v.empty())
+		{
+			return;
+		}
+
+		log_info("calc_location_begin:card_id=%d,ct=%d,m_ct=%d",m_card->m_id,v[0].m_card_ct,m_ct);
 
 		std::vector<point> rc=std::move(m_loc_tool.calc_location(v));
 		log_info("calc_location:%d size:%d",m_card->m_id,rc.size());
@@ -118,7 +123,7 @@ struct one_ct_message_handle
 		if(!rc.empty()) m_card->on_location(std::move(rc),v);
 
 		reset();
-		log_info("calc_location:%d end",m_card->m_id);
+		log_info("calc_location_end:card_id=%d",m_card->m_id);
 	}
 };
 

+ 20 - 3
crc.cpp

@@ -35,20 +35,18 @@ static unsigned short ccitt_table[256] = {
 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
 };
-
 unsigned short do_crc(unsigned char *q, int len)
 {
 	unsigned short crc = 0;
 
 	while (len-- > 0)
-		crc = ccitt_table[(crc >> 8 ^ *q++) & 0xff] ^ (crc << 8);
+		crc = ccitt_table[((crc >> 8) ^ *q++) & 0xff] ^ (crc << 8);
 
 	return crc;
 }
 
 
 /*
-
 ----------------------------------------------
 --功能: 字节查表法求CRC
 ---------------------------------------------
@@ -67,4 +65,23 @@ uint16_t do_crc(unsigned char *ptr,int len) // 字节查表法求CRC
 	}
 	return(crc);
 }
+
+
+	uint16_t do_crc(uint8_t* pbtData, int nLength)
+	{
+		//查表(crc_Table)法求CRC
+		uint8_t tda;
+		uint16_t crc = 0;
+		int i = 0;
+		while (i < nLength)
+		{
+			tda = (uint8_t)(crc / 256); // 以8 位二进制数暂存CRC 的高8 位
+			crc <<= 8;				// 左移8 位
+			crc ^= ccitt_table[tda^pbtData[i++]]; // 高字节和当前数据XOR 再查表
+		}
+
+		return(crc);
+	}
 */
+
+

+ 4 - 4
znet.cpp

@@ -437,16 +437,16 @@ struct sock_client:fd_io,client_ex
 		}
 	}
 
-	bool check_crc(const char*b,size_t mlen)
+	bool check_crc(void *b0,size_t mlen)
 	{
+		uint8_t*b=(uint8_t*)b0;
 		uint16_t crc=b[mlen-2];
 		crc<<=8;
 		crc|=b[mlen-1];
 
-		if(do_crc((unsigned char*)b+2,mlen-4)==crc)
-			return true;
+		uint16_t ccrc=do_crc((unsigned char*)b+2,mlen-4);
 
-		return false;
+		return ccrc==crc;
 	}
 
 	void on_message(const char*m,int mlen)