优化停水立即关阀门
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)
{