do_keyeven.c
上传用户:shyuanyi
上传日期:2008-05-24
资源大小:69k
文件大小:4k
源码类别:

RFID编程

开发平台:

C/C++

  1. #include  "my_head.h"
  2. #include  "key.h"
  3. #include  "carddef.h"
  4. /***************************************************/
  5. //data shows;
  6. BYTE  code  D_DISPLAY[]=
  7. {
  8.  0XC0,//0
  9.  0XF9,//1
  10.  0XA4,//2
  11.  0XB0,//3
  12.  0X99,//4
  13.  0X92,//5
  14.  0X82,//6
  15.  0XF8,//7
  16.  0X80,//8
  17.  0X90,//9
  18.  0X88,//a
  19.  0x83,//b
  20.  0xc6,//c
  21.  0xa1,//d
  22.  0x86,//e
  23.  0x8e,//f
  24.  //status shows;
  25.  0xBF,//- --16
  26.  0x11,//y --17
  27.  0xFF,//  --18
  28.  0xE7,//< --19
  29.  0xAF,//r --20
  30.  0xCF,//I --21
  31.  0xAB,//n --22
  32.  0xA3,//o --23
  33.  0x0C,//p.--24
  34.  0X12,//s.--25
  35.  0xF3,//> --26
  36.  0xF7,//_ --27
  37. };
  38. void  Dis_Err(BYTE cod)
  39. {
  40.    BYTE buf[8];
  41.    Sound_Err(cod);
  42.    buf[0]=~D_DISPLAY[21];
  43.    buf[1]=~D_DISPLAY[22];
  44.    buf[2]=~D_DISPLAY[0xf];
  45.    buf[3]=~D_DISPLAY[23];
  46.    buf[4]=~D_DISPLAY[18];
  47.    buf[5]=~D_DISPLAY[cod/100];cod%=100;
  48.    buf[6]=~D_DISPLAY[cod/10];cod%=10;
  49.    buf[7]=~D_DISPLAY[cod];
  50.    Display_str(buf);
  51. }
  52. KEY_STR   idata  thekey;
  53. bit bdata save_op_flag = FALSE;
  54. void  KeyBuf_Clear(bit  val_flag)
  55. {
  56.   memset(thekey.key_buf,0,KEY_SIZE);
  57.   thekey.key_count=6;
  58.   thekey.dot_count=0;
  59.   save_op_flag = FALSE;
  60.   if(!val_flag)
  61.     {
  62.      thekey.key_val=0L;
  63.  thekey.KEY_OP =0;
  64. }
  65. }
  66. void  Dis_KeyBuf(void)
  67. {
  68.    BYTE i,j,buf[8];
  69.    j= (thekey.key_count==6)? 5:thekey.key_count;
  70.    for(i=0;i<j;i++)buf[i]=~D_DISPLAY[18];
  71.    for(;i<8;i++)
  72.    {
  73.      buf[i]=~D_DISPLAY[thekey.key_buf[i]];
  74.    }
  75.    buf[5] |= 0x80;
  76.    Display_str(buf);//Do_Led(buf[0]);
  77. }
  78. /*
  79. //规定:金额数据不能大于等于十万元!
  80. bit  Count_KeyVal(void)
  81. {
  82.   BYTE  i;
  83.   long  val=0L;
  84.   for(i=thekey.key_count;i<8;i++)
  85.   {
  86.    val *= 10;
  87.    val += thekey.key_buf[i];
  88.   }
  89.   if((val<0L)||(val>9999900L))return(FALSE);
  90.   switch(thekey.KEY_OP)
  91.   {
  92.    case KEY_INC :thekey.key_val += val;break;
  93.    //case KEY_DEC :thekey.key_val -= val;break;
  94.    case KEY_MUL :thekey.key_val *= val;
  95.                  thekey.key_val /= 100;
  96.                  break;
  97.    //case 0:
  98.    default:thekey.key_val = val;break;
  99.   }
  100.   if((thekey.key_val<0L)||(thekey.key_val>9999900L))return(FALSE);
  101.   return(TRUE);
  102. }
  103. */
  104. void  KeyVal_Tobuf(void)
  105. {
  106.   BYTE  i;
  107.   long  val=0L;
  108.   for(val=thekey.key_val,i=8;i--;)
  109.   {
  110.    thekey.key_buf[i] = val%10;
  111.    if(!(val /= 10) && (i<6))break;
  112.   }
  113.   thekey.dot_count = 8;
  114.   thekey.key_count = i>5?6:i;
  115. }
  116. /*
  117. BYTE    Do_FirstKey_Even_1(BYTE  Key)
  118. {
  119.     return(Key);
  120. }
  121. extern  bit   Dj_Into_Consume(void);
  122. extern  void  DoTest_ArrayRead_Memory(WORD pageaddr);
  123. BYTE  Do_NextKey_Even_2(BYTE  Key) //单价消费用
  124. {
  125.     return(Key);
  126. }
  127. /*
  128. bit  Dj_Into_Consume(void)
  129. {
  130.   if(!Count_KeyVal())KeyBuf_Clear(0);
  131.   KeyVal_Tobuf();
  132.   Dis_KeyBuf();
  133.   if(thekey.key_val<1)
  134.    {
  135.     do_buzzer(BUZZER_ERROR);
  136.     return(FALSE);
  137.    }
  138.   Dis_consume_Led(TRUE);
  139.   Do_DisLed_Flash(0xff,0x00,25);
  140.   //Stop_Timer(DIS_CLOCKEVENT_Tevent);
  141.   Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);
  142.   Stop_Timer(WAIT_EXIT_Tevent);
  143.   Set_TimerEvent(WAIT_EXIT_Tevent,WAIT_EXIT_TIME);
  144.   SetCurState(CONSUME_STATUS);
  145.   return(TRUE);
  146. }
  147. /*
  148. bit  Dj_Into_TestCardWrite(void)
  149. {
  150.   if(!Count_KeyVal())KeyBuf_Clear(0);
  151.   KeyVal_Tobuf();
  152.   Dis_KeyBuf();
  153.   if(thekey.key_val<1)
  154.    {
  155.     do_buzzer(BUZZER_ERROR);
  156.     return(FALSE);
  157.    }
  158.   Dis_consume_Led(TRUE);
  159.   Do_DisLed_Flash(0xff,0x00,25);
  160.   //Stop_Timer(DIS_CLOCKEVENT_Tevent);
  161.   Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);
  162.   Stop_Timer(WAIT_EXIT_Tevent);
  163.   Set_TimerEvent(WAIT_EXIT_Tevent,WAIT_EXIT_TIME);
  164.   SetCurState(MY_TEST_STATUS);
  165.   return(TRUE);
  166. }
  167. bit  Dj_Into_Increment(void)
  168. {
  169.   if(!Count_KeyVal())KeyBuf_Clear(0);
  170.   KeyVal_Tobuf();
  171.   Dis_KeyBuf();
  172.   if(thekey.key_val<1)
  173.    {
  174.     do_buzzer(BUZZER_ERROR);
  175.     return(FALSE);
  176.    }
  177.   Dis_consume_Led(TRUE);
  178.   Do_DisLed_Flash(0xff,0x00,25);
  179.   //Stop_Timer(DIS_CLOCKEVENT_Tevent);
  180.   Set_TimerEvent(WAIT_CARD_Tevent,WAIT_CARDCONSUME_TIME);
  181.   Stop_Timer(WAIT_EXIT_Tevent);
  182.   Set_TimerEvent(WAIT_EXIT_Tevent,WAIT_EXIT_TIME);
  183.   SetCurState(INCREMENT_STATUS);
  184.   return(TRUE);
  185. }
  186. */
  187. BYTE  Do_WaitCardKey_Even_4(BYTE  Key)
  188. {
  189.   //SendStr(&Key,1);//for test!
  190.   //Do_Led(0x1<<(Key%8));//for test.
  191.   if(Key > KEY_MAX-1)return(Key);
  192.   if(Key==KEY_CANCEL)
  193.     {
  194.  Renew_To_AllInit();
  195.  return(0);
  196.     }
  197.   return(Key);
  198. }