Browse Source

解决新卡重复出现低电量告警的异常bug

lixioayao 5 years ago
parent
commit
30932da5b9
1 changed files with 7 additions and 2 deletions
  1. 7 2
      card_person.cpp

+ 7 - 2
card_person.cpp

@@ -247,6 +247,7 @@ void person::get_card(bool f)
 #define POWER_MASK      0X10
 void person::handle_message(uint16_t ct,uint8_t &value)
 {
+    //判断是新卡还是老卡
     if(m_card_generation==0){
         uint8_t remainder=ct%5;
         if(remainder==4){
@@ -256,10 +257,12 @@ void person::handle_message(uint16_t ct,uint8_t &value)
         }
         return;
     }
+    //老卡
     if(m_card_generation==1){
         value=value&0x03;
         return;
     }
+    //新卡继续往下走,获取数据
     uint16_t cttmp = ct/5;
     if(m_ctflag != cttmp){
         if((m_index&CHARGE_MASK) == CHARGE_MASK) 
@@ -268,17 +271,19 @@ void person::handle_message(uint16_t ct,uint8_t &value)
             m_discharge_value=(m_value[2]<<8)|m_value[3];
         if((m_index&POWER_MASK) == POWER_MASK)
             m_power=m_value[4]>>4;
-        logn_info(1,"card_id:%d,充电时间:%u,放电时间:%u,电量%d%",m_id,m_charge_value,m_discharge_value,m_power*10);
+        logn_info(3,"card_id:%d,充电时间:%u,放电时间:%u,电量%d%",m_id,m_charge_value,m_discharge_value,m_power*10);
         m_index=0;m_ctflag=cttmp;memset(&m_value,0,sizeof(m_value));
     }
     uint8_t remainder=ct%5;
     m_value[remainder]=value;
     m_index|=(1<<remainder);
-    logn_info(1,"card_id:%d,ctflag:%u,index:%d,value:%d,,,,%d",m_id,m_ctflag,remainder,value,m_index);
+    logn_info(3,"card_id:%d,ctflag:%u,index:%d,value:%d,,,,%d",m_id,m_ctflag,remainder,value,m_index);
     if(remainder==4){
         value>>=4;
         if(value>=5)value=0;
         else if(value >2 && value<5) value=1;
         else value=2;
+    }else{
+        value=m_pwr_stat; 
     }
 }