www.pudn.com > A24c01.rar > A24c01.c


//============================================================== 
// 
//                        RICOM Co.,Ltd. 
//                      (c) Copyright 2001 
// 
//      PRODUCT   :  RICOM Base Application in C 
// 
//      COMPONENT :  MagIc1800 
// 
//      FILENAME  :  menuapp.c 
// 
//      HISTORY   : 
// 
//        DATE         AUTHOR       COMMENT 
//      --------     ----------    --------------- 
//      03/06/20     WangWenJun    Program created 
// 
//============================================================== 
#include  
#include  
#include  
 
#include "pm.h" 
#include "kbdapi.h" 
#include "typedef.h" 
#include "slclock.h" 
#include "ext.h" 
#include "var.h" 
#include "utility.h" 
#include "se2k.h" 
#include "24C01.h" 
 
 
 
/* -- External Routines -- */ 
char _loadds Reset(void); 
char _loadds CardInfo(void); 
char _loadds ReadCard(void); 
char _loadds WriteCard(void); 
 
/* -- External Variables -- */ 
 
/* -- Function prototype -- */ 
 
/* -- Local Variables -- */ 
 
HIERARCHY MsgFuncMenu[] =                              // 2K version 
{ 
   { 0,  "ATMEL24C01¿¨²âÊÔ"   ,   NULL},                // level 0 
   { 0,  "RESET"             ,   Reset},               // level 0 
   { 0,  "CardInfo"          ,   CardInfo},           // level 0  
   { 0,  "READ"              ,   ReadCard},            // level 0 
   { 0,  "WRITE"             ,   WriteCard},           // level 0     
   { 0,              NULL,   NULL}                     // end of the menu 
}; 
 
char _loadds Reset(void) 
{ 
  BYTE bStatus; 
 
  ClearDisplay(LINEA); 
 
  if (SC_CardInserted(CUSTOMER_SC_RDR, 0) == FALSE) { 
    ClearDisplay(LINEW); 
    
    OS_DisplayString(LINE3, 3, 10, "Çë²åÈëIC¿¨"); 
      
    if (SC_CardInserted(CUSTOMER_SC_RDR, 30*SEC) != TRUE) { 
      OS_DisplayString(LINE3, 0, 12, "µÈ´ý²å¿¨³¬Ê±"); 
      return FALSE; 
    } 
  }  
 
   
  if (SC_CardDetect(CUSTOMER_SC_RDR, TRUE) == SC_ERROR) { 
    OS_DisplayString(LINE3, 0, 10, "DETECTʧ°Ü"); 
    return FALSE; 
  } 
 
  memset(abBuffer, 0xff, sizeof(abBuffer)); 
 
  if ((bStatus = AT24C01Reset (CUSTOMER_SC_RDR, abBuffer)) == SE2K_OK) {         
    Split(abKbdBuf, abBuffer, 40); 
    OS_DisplayString(LINE2, 0, 16, abKbdBuf); 
    OS_DisplayString(LINE3, 0, 16, &abKbdBuf[16]);     
    OS_DisplayString(LINE4, 0, 16, &abKbdBuf[32]);     
  } else {     
    Bin2Dec(bStatus, abBuffer, 2); 
    OS_DisplayString(LINE2, 0, 6, "ʧ°Ü: "); 
    OS_DisplayString(LINE2, 6, 2, abBuffer); 
  } 
  BeepDelay(0, 0); 
  return OS_OK; 
} 
 
char _loadds CardInfo(void) 
{ 
  AT24C01_STATUS sc24C01; 
  AT24C01_INFO_STRUCT CardInfo; 
   
  ClearDisplay(LINEA); 
  memset(abBuffer, 0xff, sizeof(abBuffer)); 
 
  sc24C01 =AT24C01_CardInfo(CUSTOMER_SC_RDR, &CardInfo); 
  if (sc24C01 == AT24C01_OK) {         
//    Split(abKbdBuf, CardInfo.version, 8); 
    OS_DisplayString(LINE2, 0, VERSION_STR_SIZE, CardInfo.version); 
  } else {     
    Bin2Dec(sc24C01, abBuffer, 2); 
    OS_DisplayString(LINE2, 0, 6, "ʧ°Ü: "); 
    OS_DisplayString(LINE2, 6, 2, abBuffer); 
  } 
  BeepDelay(0, 0); 
  return OS_OK; 
} 
 
 
char _loadds WriteCard(void) 
{ 
     BYTE abWriteBuf[256]; 
     AT24C01_STATUS sc24C01; 
     TSCMDSYNC_24C01 pBuffer; 
 
     ClearDisplay(LINEA);   
    
     memset(abWriteBuf, 0, sizeof(abWriteBuf)); 
      
     memcpy(abWriteBuf,"HELLO",5); 
      
     pBuffer.wOrder = AT24C01_WRITE; 
     pBuffer.wByteLen = 0x05; 
     pBuffer.wByteAdd = 0x00; 
     pBuffer.pbBuff = abWriteBuf; 
     sc24C01 = AT24C01_Cmd (CUSTOMER_SC_RDR, &pBuffer );                	 
 
  if (sc24C01 == AT24C01_OK) { 
    Bin2Dec(sc24C01, abBuffer, 2);  
    OS_DisplayString(LINE1, 0, 2, abBuffer); 
    OS_DisplayString(LINE2, 0, 8, "WRITE OK");     
  } else { 
    Bin2Dec(sc24C01, abBuffer, 2);  
    OS_DisplayString(LINE1, 0, 2, abBuffer); 
    OS_DisplayString(LINE2, 0, 10, "WRITE FAIL");     
  } 
 
      
     return OS_OK; 
} 
 
 
 
char _loadds ReadCard(void) 
{ 
  BYTE abAtrBuf[256]; 
  AT24C01_STATUS sc24C01; 
  TSCMDSYNC_24C01 pBuffer;   
   
  ClearDisplay(LINEA);   
  memset(abAtrBuf,0x00,sizeof(abAtrBuf)); 
   
  pBuffer.wOrder = AT24C01_READ; 
  pBuffer.wByteLen = 0x64; 
  pBuffer.wByteAdd = 0x00; 
  pBuffer.pbBuff = abAtrBuf; 
  sc24C01 = AT24C01_Cmd (CUSTOMER_SC_RDR, &pBuffer ); 
   
   
  if (sc24C01 == AT24C01_OK) { 
    Split(abBuffer, abAtrBuf, 8); 
    OS_DisplayString(LINE1-1, 0, 16, abBuffer);  	 
    Split(abBuffer, &abAtrBuf[8], 8); 
    OS_DisplayString(LINE1, 0, 16, abBuffer);  	 
    Split(abBuffer, &abAtrBuf[16], 8); 
    OS_DisplayString(LINE2-1, 0, 16, abBuffer);  	 
    Split(abBuffer, &abAtrBuf[24], 8); 
    OS_DisplayString(LINE2, 0, 16, abBuffer);  	             
    Split(abBuffer, &abAtrBuf[32], 8); 
    OS_DisplayString(LINE3-1, 0, 16, abBuffer);  	             
    Split(abBuffer, &abAtrBuf[40], 8); 
    OS_DisplayString(LINE3, 0, 16, abBuffer);  	             
    Split(abBuffer, &abAtrBuf[48], 8); 
    OS_DisplayString(LINE4-1, 0, 16, abBuffer);  	             
    Split(abBuffer, &abAtrBuf[56], 8); 
    OS_DisplayString(LINE4, 0, 16, abBuffer);  	             
  } else { 
    Bin2Dec(sc24C01, abBuffer, 2);  
    OS_DisplayString(LINE1, 0, 2, abBuffer); 
    OS_DisplayString(LINE2, 0, 9, "READ FAIL");     
  } 
     
  BeepDelay(0,0);   
  return OS_OK; 
} 
 
 
 
void menuApp(void) 
{ 
  ManMenuRun(MsgFuncMenu); 
}