消费金额按厘计算
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);
 }