📄 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 <am.h>
#include <pub_os.h>
#include <pub_sc.h>
#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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -