📄 ear.c
字号:
}
void updatescreen()
{
char str[10];
/***************************128x64lcd**********************
lcddisplaysstr(0 * 8, 0, " E A R 4 0 2 2 ", INVERTED_MODE);
lcddisplaysstr(0 * 8, 1, " Show your card ", INVERTED_MODE);
lcddisplaysstr(1 * 8, 3, " ", NORMAL_MODE);
lcddisplaysstr(1 * 8, 4, " ", NORMAL_MODE);
dategetdate(&today);
datetostr(&today, date_str);
lcddisplaybmp(7 , 6, calender, CALENDER_BMP_COLS, CALENDER_BMP_ROWS, NORMAL_MODE);
date_str[2] = '-';
lcddisplaysstr(2 * 8, 6, date_str, NORMAL_MODE);
timegettime(&now);
timetostr(&now, time_str);
lcddisplaybmp(71, 6, clock, CLOCK_BMP_COLS, CLOCK_BMP_ROWS, NORMAL_MODE);
lcddisplaysstr(10 * 8, 6, time_str, NORMAL_MODE);
lcddisplaysstr(0, 7, " ", INVERTED_MODE);
************************************************************/
/***************************2x16lcd*************************/
dategetdate(&today);
datetostr(&today, date_str);
timegettime(&now);
timetostr(&now, time_str);
lcd2x16displaystr(1, 1, "D-");
lcd2x16displaystr(3, 1, date_str);
lcd2x16displaystr(10, 1, "T-");
lcd2x16displaystr(12, 1, time_str);
lcd2x16displaystr(1, 2, " Show your card ");
/**********************************************************/
}
void rx() interrupt 4
{
char ch;
if(RI)
{
ch = SBUF;
if(rfid_processed)
{
if(ch == '\r' || ch == '\n')
{
rfid[index] = '\0';
index = 0;
rfid_received = 1;
rfid_processed = 0;
}
else
{
rfid[index++] = ch;
}
}
RI = 0;
}
}
void transmit(char *str)
{
while(*str)
{
SBUF = *str;
while(!TI);
TI = 0;
str++;
}
}
/*
void buzz(int pw1, int pw2, int dur)
{
int i;
for(i = 0; i < dur; i++)
{
BUZZER = 0;
delay(pw1);
BUZZER = 1;
delay(pw2);
}
}
#define BUZZ() buzz(5, 15, 1000)
*/
void initEAR4022()
{
init89c51rd2(BAUD_RATE_9600);
ENABLE_OFFCHIP_XRAM();
//initlcd(); //for graphic lcd
init2x16lcd();
//delay(25000);
clearlcd();
PROCESS_END();
RFID_PROCESSED();
if(reset_mode)
{
/* lcddisplaybmp(0, 0, JBB, JBB_BMP_COLS, JBB_BMP_ROWS, INVERTED_MODE);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
delay(25000);
clearlcd();
lcddisplaystr(0, 4, "EAR - 4022 V 1-0", NORMAL_MODE);*/
lcd2x16displaystr(1, 1, " JBB Soft Tech ");
lcd2x16displaystr(1, 2, " EAR 4022 V-1.0 ");
BUZZER_ON();
delay(25000);
BUZZER_OFF();
delay(25000);
BUZZER_ON();
delay(25000);
BUZZER_OFF();
clearlcd();
/* lcddisplaybmp(0, 0, common, COMMON_BMP_COLS, COMMON_BMP_ROWS, NORMAL_MODE);
lcddisplaystr(2 * 8, 4, " ", NORMAL_MODE);*/
}
if(display_rfid != 0x00 && display_rfid != 0xFF)display_rfid = 0xFF;
reset_mode = 1;
}
char validrfid(char *rfid)
{
if(strstrlen(rfid) < RFID_LENGTH)return 0;
return 1;
}
char transmitar(AttendanceRecord *ar) // codes similar to 1022 but encapsulated for transmitting to pc
{
char ds[10];
char ts[10];
if(ar == NULL)return 0;
//Transmiting rfid
transmit("[");
transmit(ar->rfid);
transmit(" ");
datetostr(ar->d, ds);
ds[2] = '/';
transmit(ds);
transmit(" ");
timetostr(ar->t, ts);
ts[2] = ':';
transmit(ts);
transmit("]");
return 1;
}
AttendanceRecord *storear(char *rfid, struct date *d, struct time *t) // stores to database
{
strstrcpy(attendance_records[record_counts].rfid, rfid);
attendance_records[record_counts].d = *d;
attendance_records[record_counts].t = *t;
record_counts++;
if(record_counts >= MAX_RECORD_COUNTS - 50 &&
record_counts < MAX_RECORD_COUNTS)
{
//lcddisplaystr(0 * 8, 1, " Database Full ", INVERTED_MODE);
lcd2x16displaystr(1,2," Database Full ");
delay(5000);
}
if(record_counts >= MAX_RECORD_COUNTS)
{
fail_safe_record_counts = record_counts;
record_counts = 0;
}
return &attendance_records[record_counts - 1];
}
void main()
{
AttendanceRecord xdata *ar;
char xdata command[20];
int i;
initEAR4022();
while(1)
{
updatescreen();//shows updated date and time
if(RFID_RECEIVED())
{
if(validrfid(rfid))
{
BUZZER_ON();
PROCESS_START();
//lcddisplaystr(1 * 8, 3, " Valid ", NORMAL_MODE);
lcd2x16displaystr(1,2," Valid " );
//if(display_rfid)lcddisplaystr(3 * 8, 4, rfid, NORMAL_MODE);
ar = storear(rfid, &today, &now);
if(ar == NULL)
{
//lcddisplaystr(1 * 8, 4, " Database full", NORMAL_MODE);
lcd2x16displaystr(1,2," Database full " );
}
else
{
transmitar(ar);
}
BUZZER_OFF();
delay(25000);
PROCESS_END();
}
else
{
//lcddisplaystr(1 * 8, 4, "Show your card", NORMAL_MODE);
lcd2x16displaystr(1,2, " Show your card ");
}
RFID_PROCESSED()
}
//If command received from PC
if(COMMAND_RECEIVED())
{
COM_SELECT = 0;
readcommand(command);
COM_SELECT = 1;
processcommand(command);
CMD_ACKNOWLEDGE = 1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -