优化停水立即关阀门
diff --git a/supwisdom/sp_consume.c b/supwisdom/sp_consume.c
index 75efacb..ff53b27 100644
--- a/supwisdom/sp_consume.c
+++ b/supwisdom/sp_consume.c
@@ -375,6 +375,8 @@
 
 static void do_error(sp_pos_t* pos, uint16 errcode)
 {
+  sp_valve_off();
+
   if(errcode)
   {
     show_error(pos,"²Ù×÷ʧ°Ü:",errcode);
@@ -451,13 +453,15 @@
       cardWorkState->current_state = CARDWORKSTATUS_ERROR;
       break;
     }
-    if(pos->purchase.used_num > card->waterlimit)
+    if(pos->purchase.used_num >= card->waterlimit)
     {
+      sp_valve_off();
       disp_hint_info_two(pos, "Í£Ö¹³öË®","ÒÑ´ïµ¥´Î³öË®ÉÏÏÞ", DELAY_TIME2s);
       cardWorkState->current_state = CARDWORKSTATUS_STOPPING;
     }
-    else if(pos->purchase.paid_sum > card->amountlimit)
+    else if(pos->purchase.paid_sum >= card->amountlimit)
     {
+      sp_valve_off();
       disp_hint_info_two(pos, "Í£Ö¹³öË®","ÒÑ´ïµ¥´Î½ð¶îÉÏÏÞ", DELAY_TIME2s);
       cardWorkState->current_state = CARDWORKSTATUS_STOPPING;
     }
@@ -713,19 +717,21 @@
       cardWorkState->current_state = CARDWORKSTATUS_ERROR;
       break;
     }
-    if(pos->purchase.used_num >CARD.waterlimit)
+    if(pos->purchase.used_num >= CARD.waterlimit)
     {
+      sp_valve_off();
       disp_hint_info_two(pos, "Í£Ö¹³öË®","ÒÑ´ïµ¥´Î³öË®ÉÏÏÞ", DELAY_TIME2s);
       cardWorkState->current_state = CARDWORKSTATUS_STOPPING;
     }
-    else if(pos->purchase.paid_sum > CARD.amountlimit)
+    else if(pos->purchase.paid_sum >= CARD.amountlimit)
     {
+      sp_valve_off();
       disp_hint_info_two(pos, "Í£Ö¹³öË®","ÒÑ´ïµ¥´Î½ð¶îÉÏÏÞ", DELAY_TIME2s);
       cardWorkState->current_state = CARDWORKSTATUS_STOPPING;
     }
     /**È·ÈϳöË®ºó³¬¹ýµÈ´ýʱ¼äδ³öˮֹͣ³öË®**/
     CARD.qrcode.nowtime = sp_get_ticker();
-    if((CARD.qrcode.nowtime - CARD.qrcode.starttime) > CARD.qrcode.waittime*DELAY_TIME1s)
+    if((CARD.qrcode.nowtime - CARD.qrcode.starttime) >= CARD.qrcode.waittime*DELAY_TIME1s)
     {
       if(pos->purchase.used_num == 0)
       {
diff --git a/supwisdom/sp_util.c b/supwisdom/sp_util.c
index df70b13..5b10833 100644
--- a/supwisdom/sp_util.c
+++ b/supwisdom/sp_util.c
@@ -255,13 +255,19 @@
 }
 void sp_valve_on(void)
 {
-  valve_sta_set(valve_state_on);
-  valve_ctrl();
+  if(!valve_sta_get())
+  {
+    valve_sta_set(valve_state_on);
+    valve_ctrl();
+  }
 }
 void sp_valve_off(void)
 {
-  valve_sta_set(valve_state_off);
-  valve_ctrl();
+  if(valve_sta_get())
+  {
+    valve_sta_set(valve_state_off);
+    valve_ctrl();
+  }
 }
 uint8 sp_valve_state(void)
 {