修复刷卡报错问题和二维码有效期bug
diff --git a/supwisdom/sp_consume.c b/supwisdom/sp_consume.c
index 4052bfd..737b25a 100644
--- a/supwisdom/sp_consume.c
+++ b/supwisdom/sp_consume.c
@@ -286,25 +286,10 @@
   return 0;
 }
 
-static uint16 do_work_check(const sp_pos_t* pos)
-{
-  //ÅжÏÏû·Ñ½ð¶îÈç¹û´óÓÚ20»òÕßÁ¬ÐøÏû·Ñ³¬¹ý2Сʱ£¬ÔòÍ£Ö¹³öË®
-  if(pos->purchase.used_num >= 1000 || pos->purchase.paid_sum >= 1000)
-  {
-    return RC_CARD_TIMEOUT;
-  }
-  return 0;
-}
-
 static uint16 do_work(sp_pos_t* pos, sp_card_t* card)
 {
   uint16 ret = 0;
   sp_valve_on();
-  ret = do_work_check(pos);
-  if(ret)
-  {
-    return ret;
-  }
   //¼ÆËãÏû·Ñ½ð¶î
   ret = sp_calc_payamt_by_flowsensor(pos, card);
   if(ret)
@@ -468,7 +453,7 @@
     cardWorkState->current_state = CARDWORKSTATUS_STOPPED;
     break;
   case CARDWORKSTATUS_STOPPED:
-    cardWorkState->current_state = CARDWORKSTATUS_NONE;
+    disp_hint_info(pos, "Çë°Î¿¨", DELAY_TIME2s);
     break;
   case CARDWORKSTATUS_FEECARD_WORKING:
     if(MEMCMP(pos->cardState.snr, card->cardphyid, 4) != 0)
@@ -476,11 +461,9 @@
       cardWorkState->current_state = CARDWORKSTATUS_NONE;
       break;
     }
-    //show_menu_options();
     break;
   case CARDWORKSTATUS_ERROR:
     do_error(pos, cardWorkState->errcode);
-    cardWorkState->current_state = CARDWORKSTATUS_NONE;
     break;
   default:
     Delay_ms(DELAY_TIME200ms);
@@ -657,19 +640,27 @@
     break;
   case CARDWORKSTATUS_READY:
     CARD.qrcode.nowtime = sp_get_ticker();
-    if((CARD.qrcode.nowtime - CARD.qrcode.starttime) > CARD.qrcode.validtime)
+    if((CARD.qrcode.nowtime - CARD.qrcode.starttime) < CARD.qrcode.validtime*DELAY_TIME1s)
     {
       show_home(pos);
       show_home_qrcode(CARD.qrcode.qrcode_url);
-      if(CARD.qrcode.nowtime - tick > DELAY_TIME3s)
+      if(CARD.qrcode.nowtime - tick > DELAY_TIME2s)
       {
         tick = CARD.qrcode.nowtime;
         ret = sp_qrcode_query(pos, &CARD);
         if(!ret && CARD.qrcode.authstatus)
         {
-          do_start(pos);
-          cardWorkState->last_state = cardWorkState->current_state;
-          cardWorkState->current_state = CARDWORKSTATUS_WORKING;
+          if(CARD.permit)
+          {
+            cardWorkState->errcode = RC_LIMIT_CONSUMPTION;
+            cardWorkState->current_state = CARDWORKSTATUS_ERROR;
+          }
+          else
+          {
+            do_start(pos);
+            cardWorkState->last_state = cardWorkState->current_state;
+            cardWorkState->current_state = CARDWORKSTATUS_WORKING;
+          }
         }
       }
     }
@@ -692,6 +683,11 @@
       cardWorkState->current_state = CARDWORKSTATUS_ERROR;
       break;
     }
+    if(pos->purchase.paid_num > CARD.waterlimit)
+    {
+      disp_hint_info(pos, "ÒÑ´ïµ¥´Î³öË®ÉÏÏÞ", DELAY_TIME2s);
+      cardWorkState->current_state = CARDWORKSTATUS_STOPPING;
+    }
     cardWorkState->last_state = cardWorkState->current_state;
     cardWorkState->pause_tick = sp_get_ticker();
     break;