消费金额按厘计算
diff --git a/supwisdom/sp_card.c b/supwisdom/sp_card.c
index 4fcbd65..e23cd61 100644
--- a/supwisdom/sp_card.c
+++ b/supwisdom/sp_card.c
@@ -122,9 +122,8 @@
{
return ret;
}
- offset = 0;
- MEMCLEAR(card->citizen_cardno, sizeof(card->citizen_cardno));
- offset += 31;
+ offset = 31;
+ offset += 8;
MEMCPY(card->citizen_cardno, buff+offset, sizeof(card->citizen_cardno));
offset += 12;
offset += 18;
diff --git a/supwisdom/sp_communicate.c b/supwisdom/sp_communicate.c
index fab5b44..3ea33cf 100644
--- a/supwisdom/sp_communicate.c
+++ b/supwisdom/sp_communicate.c
@@ -144,7 +144,7 @@
}
else if(IS_KEY(PK_INT_AMOUNT_LIMIT,field.key))
{
- card->amountlimit = (uint32)field.val.intval;
+ card->amountlimit = (uint32)field.val.intval*10;
}
}
//disp_hint_info(pos,"Éí·ÝÈÏÖ¤³É¹¦",DELAY_TIME1s);
@@ -167,7 +167,7 @@
cw_pack_map_size(&pack,4);
sp_pack_put_bin(&pack, PK_BIN_CARDPHYID, card->cardphyid, 4);
- sp_pack_put_bin(&pack, PK_BIN_CITIZEN_CARDNO, card->citizen_cardno+8, 4);
+ sp_pack_put_bin(&pack, PK_BIN_CITIZEN_CARDNO, card->citizen_cardno, 4);
sp_pack_put_bin(&pack, PK_BIN_DEVPHYID, pos->devphyid, 4);
sp_pack_put_bin(&pack, PK_BIN_DEVTIME, ctime, 6);
@@ -360,7 +360,7 @@
}
else if(IS_KEY(PK_INT_PAYAMT, field.key))
{
- card->qrcode.paidAmount = (uint8)field.val.intval;
+ card->qrcode.paidAmount = (uint32)field.val.intval;
}
else if(IS_KEY(PK_INT_FEEAMOUNT,field.key))
{
@@ -384,7 +384,7 @@
}
else if(IS_KEY(PK_INT_AMOUNT_LIMIT,field.key))
{
- card->amountlimit = (uint16)field.val.intval;
+ card->amountlimit = (uint32)field.val.intval*10;
}
}
return resp.retcode;
@@ -417,10 +417,12 @@
cw_pack_context pack;
sp_protocol_request_t req;
+ pos->heartbeat.heart_status = HEART_SEND;
+
transdtl_account_cobilLno = transdtl->cobillno;
sp_protocol_req_init(&req, SP_CMD_TRANSDTL_ACCOUNT);
sp_pack_init(&pack,req.data,sizeof(req.data));
- cw_pack_map_size(&pack,10);
+ cw_pack_map_size(&pack,11);
sp_pack_put_bin(&pack, PK_BIN_DEVPHYID, transdtl->devphyid,4);
sp_pack_put_bin(&pack, PK_BIN_TRANSDATE, transdtl->transdate,3);
@@ -428,6 +430,7 @@
sp_pack_put_int(&pack, PK_INT_COBILLNO, transdtl->cobillno);
sp_pack_put_bin(&pack, PK_BIN_CARDPHYID, transdtl->cardphyid,
sizeof(transdtl->cardphyid));
+ sp_pack_put_bin(&pack, PK_BIN_CITIZEN_CARDNO, transdtl->cardno, 4);
sp_pack_put_int(&pack, PK_INT_TRANSWAY, transdtl->transway);
sp_pack_put_int(&pack, PK_INT_AMOUNT, transdtl->amount);
sp_pack_put_int(&pack, PK_INT_PAYAMT, transdtl->paidAmount);
@@ -447,29 +450,30 @@
cw_unpack_context unpack;
unpack_field_t field;
- if(!resp->retcode)
+ if(resp->retcode)
{
- sp_unpack_init(&unpack, resp->data, resp->datalen);
- size = sp_unpack_map_size(&unpack);
- while(size-- > 0)
+ return resp->retcode;
+ }
+ pos->heartbeat.heart_status = HEART_RECV;
+ sp_unpack_init(&unpack, resp->data, resp->datalen);
+ size = sp_unpack_map_size(&unpack);
+ while(size-- > 0)
+ {
+ sp_unpack_value(&unpack,&field);
+ if(IS_KEY(PK_INT_COBILLNO,field.key))
{
- sp_unpack_value(&unpack,&field);
- if(IS_KEY(PK_INT_COBILLNO,field.key))
+ if(field.val.intval == transdtl_account_cobilLno)
{
- if(field.val.intval == transdtl_account_cobilLno)
+ pos->unconfirm_transdtl.transaddr+= sizeof(sp_transdtl_t);
+ if(ADDR_TRANSDTL_END <= pos->unconfirm_transdtl.transaddr)
{
- pos->unconfirm_transdtl.transaddr+= sizeof(sp_transdtl_t);
- if(ADDR_TRANSDTL_END <= pos->unconfirm_transdtl.transaddr)
- {
- pos->unconfirm_transdtl.transaddr= ADDR_TRANSDTL_BEGIN;
- }
- return sp_write_unconfirm_record(pos);
+ pos->unconfirm_transdtl.transaddr= ADDR_TRANSDTL_BEGIN;
}
+ return sp_write_unconfirm_record(pos);
}
}
}
return resp->retcode;
-
}
static uint8 sp_confirm_heartbeat(sp_protocol_response_t* resp, sp_pos_t* pos)
diff --git a/supwisdom/sp_config.h b/supwisdom/sp_config.h
index 1119d28..60065ad 100644
--- a/supwisdom/sp_config.h
+++ b/supwisdom/sp_config.h
@@ -103,13 +103,14 @@
uint8 transtime[3];
uint32 cobillno; //½»Ò×¶©µ¥±àºÅ
uint8 cardphyid[4]; //¿¨ÎïÀíid
+ uint8 cardno[4]; //ÊÐÃñ¿¨ºÅ
uint8 transway; //½»Ò×·½Ê½£¬0-³õʼ£¬1-Ë¢¿¨£¬2-ɨÂë
- uint8 amount; //ʵ¼ÊÖ§¸¶½ð¶î
- uint8 paidAmount; //ÒÑÖ§¸¶½ð¶î£¬µ±ÊÇÏȿ۷ÑģʽÏ£¬¼Ç¼ÒÑÖ§¸¶µÄ½ð¶î
- uint8 flowsensors; //ʵ¼ÊʹÓüÆÁ¿£¨µ¥Î»£º°ÙºÁÉý£©
+ uint32 amount; //ʵ¼ÊÖ§¸¶½ð¶î
+ uint32 paidAmount; //ÒÑÖ§¸¶½ð¶î£¬µ±ÊÇÏȿ۷ÑģʽÏ£¬¼Ç¼ÒÑÖ§¸¶µÄ½ð¶î
+ uint32 flowsensors; //ʵ¼ÊʹÓüÆÁ¿£¨µ¥Î»£º°ÙºÁÉý£©
uint8 transtatus; //Á÷ˮ״̬£¬0-³õʼ£¬1-³É¹¦£¬2-ʧ°Ü
- uint8 reverse[7]; //ռλ·û
- uint8 crc[2]; //len=32
+ uint8 unused[26]; //ռλ·û
+ uint8 crc[2]; //len=64
} sp_transdtl_t;
typedef struct
@@ -144,12 +145,12 @@
uint8 starttime[6]; //Ë¢¿¨Ê±¼ä
/*Ïȿۿîºó³öË®*/
- uint16 prepaid_num; //µ¥´Î¿ÉÓüÆÁ¿(µ¥Î»:100ml)
- uint16 prepaid_amt; //µ¥´ÎÔ¤¸¶½ðÇ®
+ uint32 prepaid_num; //µ¥´Î¿ÉÓüÆÁ¿(µ¥Î»:100ml)
+ uint32 prepaid_amt; //µ¥´ÎÔ¤¸¶½ðÇ®(µ¥Î»:Àå)
- uint16 paid_num; //ÀۼƿÉÓüÆÁ¿(µ¥Î»:100ml)
- uint16 paid_sum; //ÀÛ¼ÆÖ§¸¶½ð¶î
- uint16 used_num; //ÒÑʹÓüÆÁ¿(µ¥Î»:100ml)
+ uint32 paid_num; //ÀۼƿÉÓüÆÁ¿(µ¥Î»:100ml)
+ uint32 paid_sum; //ÀÛ¼ÆÖ§¸¶½ð¶î(µ¥Î»:Àå)
+ uint32 used_num; //ÒÑʹÓüÆÁ¿(µ¥Î»:100ml)
} sp_purchase_t;
//¶þάÂëÐÅÏ¢
@@ -162,7 +163,7 @@
uint32 waittime; //³öË®µÈ´ýʱ¼ä
uint8 authstatus; //Óû§È·ÈÏ״̬£¨0-δȷÈÏ£¬1-ÒÑÈ·ÈÏ£©
uint8 paystatus; //Ö§¸¶×´Ì¬£¨0-´ýÖ§¸¶£¬ 1-ÒÑÖ§¸¶£¬ 2-´ú¿Û£¬3 - ¹Ø±Õ£©
- uint8 paidAmount; //µ±¶©µ¥ÊÇÒÑÖ§¸¶×´Ì¬£¬·µ»ØÖ§¸¶³É¹¦½ð¶î £¬ ·ñÔòÊÇ 0
+ uint32 paidAmount; //µ±¶©µ¥ÊÇÒÑÖ§¸¶×´Ì¬£¬·µ»ØÖ§¸¶³É¹¦½ð¶î £¬ ·ñÔòÊÇ 0
} sp_qrcode_t;
//É豸²ÎÊý
@@ -224,19 +225,19 @@
{
uint8 fee_start; //T°ÙºÁÉý¿ªÊ¼;
uint8 fee_unit; //µ¥´Î¿Û·Ñ¿ÉÓÃÁ÷Á¿£¨µ¥Î»:100ml£©
- uint8 fee_amt; //µ¥´Î¿Û·Ñ½ð¶î£¬ÒÔ·ÖΪµ¥Î»
+ uint8 fee_amt; //µ¥´Î¿Û·Ñ½ð¶î£¬ÒÔÀåΪµ¥Î»
} sp_feepara_t;
//¿¨½á¹¹ÐÅÏ¢
typedef struct
{
uint8 cardphyid[4];
- uint8 citizen_cardno[12]; //ÊÐÃñºÅ
+ uint8 citizen_cardno[4]; //ÊÐÃñºÅ
uint8 cardtype;
uint8 expiredate[4];
- uint16 waterlimit; //µ¥´Î³öË®Á÷Á¿ÉÏÏÞ£¨100ml£©
- uint16 amountlimit; //µ¥´Î³öË®½ð¶îÉÏÏÞ (·Ö)
+ uint32 waterlimit; //µ¥´Î³öË®Á÷Á¿ÉÏÏÞ£¨100ml£©
+ uint32 amountlimit; //µ¥´Î³öË®½ð¶îÉÏÏÞ (Àå)
uint32 cobillno; //½»Ò×¶©µ¥±àºÅ
uint8 permit; //ÊÇ·ñÔÊÐíÏû·Ñ£¬0-ÔÊÐí£¬1-²»ÔÊÐí
char limitmsg[45]; //ÏÞÖÆÏû·ÑÐÅÏ¢
diff --git a/supwisdom/sp_consume.c b/supwisdom/sp_consume.c
index 90c5295..c418368 100644
--- a/supwisdom/sp_consume.c
+++ b/supwisdom/sp_consume.c
@@ -343,7 +343,7 @@
}
if(pos->purchase.paid_sum > 0)
{
- sprintf(msg,"¹²¼Æ %0.2fÔª",pos->purchase.paid_sum/100.0f);
+ sprintf(msg,"¹²¼Æ %0.3fÔª",pos->purchase.paid_sum/1000.0f);
disp_hint_info_two(pos,"½áÊø¼Æ·Ñ",msg,DELAY_TIME2s);
}
else
@@ -364,7 +364,7 @@
sp_valve_off();
if(pos->purchase.paid_sum > 0)
{
- sprintf(msg,"¹²¼Æ %0.2fÔª",pos->purchase.paid_sum/100.0f);
+ sprintf(msg,"¹²¼Æ %0.3fÔª",pos->purchase.paid_sum/1000.0f);
disp_hint_info_two(pos,"ÔÝÍ£¼Æ·Ñ",msg,DELAY_TIME2s);
}
else
@@ -393,7 +393,7 @@
switch(cardWorkState->current_state)
{
case CARDWORKSTATUS_NONE:
- if(timer_get_ticker() - pos->cardState.firsttick < 1500)
+ if(timer_get_ticker() - pos->cardState.firsttick < 500)
{
break;
}
diff --git a/supwisdom/sp_data.c b/supwisdom/sp_data.c
index 2275abc..d87b918 100644
--- a/supwisdom/sp_data.c
+++ b/supwisdom/sp_data.c
@@ -4,8 +4,8 @@
#include "sp_constant.h"
#include "sp_display.h"
-#define record_behalf_len 19
-#define record_below_len 13
+#define record_behalf_len 23
+#define record_below_len 41
//Ñ»·¼Ç¼ÿһ±ÊÁ÷Ë®¼Ç¼µÄµØÖ·
static uint16 sp_write_last_record(sp_pos_t* pos)
@@ -79,6 +79,7 @@
memcpy(record.transtime, ctime+3, 3);
record.cobillno = card->cobillno;
memcpy(record.cardphyid, card->cardphyid, sizeof(card->cardphyid));
+ memcpy(record.cardno, card->citizen_cardno, sizeof(card->citizen_cardno));
if(pos->paymode == PAYMODE_QRCODE)
{
record.transway = 2;
diff --git a/supwisdom/sp_display.c b/supwisdom/sp_display.c
index 607aeff..3ec3a1b 100644
--- a/supwisdom/sp_display.c
+++ b/supwisdom/sp_display.c
@@ -25,7 +25,7 @@
void show_money(sp_pos_t* pos, uint32 money)
{
char msg[32];
- sprintf(msg," %.02f Ԫ",money/100.0f);
+ sprintf(msg," %.03fԪ",money/1000.0f);
disp_hint_info_two(pos,"ÀÛ¼ÆË®·Ñ:",msg,0);
}