在這篇文章中,我們將構(gòu)建一個(gè)基于RFID的考勤系統(tǒng),該系統(tǒng)可以記錄給定時(shí)間窗口內(nèi) 12 名學(xué)生/教職員工的出勤情況,該系統(tǒng)最多可以記錄每人 255
名考勤。
什么是RFID考勤系統(tǒng)
我們不需要任何關(guān)于基于RFID的考勤系統(tǒng)的介紹,它被用于大學(xué),辦公室,圖書館,以了解一個(gè)人在什么時(shí)間進(jìn)出多少次或多少人。
在這個(gè)項(xiàng)目中,我們將構(gòu)建一個(gè)最簡(jiǎn)單的基于RFID的考勤系統(tǒng),該系統(tǒng)不會(huì)使項(xiàng)目過(guò)于復(fù)雜。
在這個(gè)項(xiàng)目中,我們將使用RTC模塊,該模塊用于在給定的時(shí)間段內(nèi)啟用和禁用考勤系統(tǒng),以便我們可以阻止遲到者。
RFID模塊“RFID-RC522”可以在基于恩智浦的RFID標(biāo)簽上進(jìn)行讀寫操作。恩智浦是全球RFID標(biāo)簽的領(lǐng)先生產(chǎn)商,我們可以輕松地在線和離線商店購(gòu)買它們。
使用16 x 2 LCD顯示屏,用于顯示時(shí)間,日期,出席人數(shù)等信息。
最后使用Arduino板,這是項(xiàng)目的大腦。您可以選擇任何版本的主板。
現(xiàn)在讓我們繼續(xù)看原理圖:
Arduino 到 LCD 顯示屏連接:
只需按照下圖連接接線,并使用 10 千歐姆電位計(jì)調(diào)整對(duì)比度。
Arduino 到 RFID 模塊連接:
RFID 模塊必須由 3.3V 供電,5V 可能會(huì)損壞板載組件。RFID-RC522模塊在與Arduino通信時(shí)采用SPI通信協(xié)議工作。
電路的其余部分:
Arduino可以由9V墻上適配器供電。有一個(gè)蜂鳴器和 LED 指示檢測(cè)到卡。提供了 4
個(gè)按鈕,用于查看考勤、清除內(nèi)存以及“是”和“否”按鈕。
硬件部分到此結(jié)束。
現(xiàn)在我們必須為 RTC 模塊設(shè)置正確的時(shí)間才能執(zhí)行此操作,按照以下步驟完成硬件設(shè)置。
打開 Arduino IDE。
導(dǎo)航到文件》示例》DS1307RTC》設(shè)置時(shí)間。
上傳代碼。
將代碼上傳到Arduino后,打開串行監(jiān)視器?,F(xiàn)在,RTC與計(jì)算機(jī)的時(shí)間同步。
現(xiàn)在,您必須找到所有12個(gè)RFID卡/標(biāo)簽的UID或唯一標(biāo)識(shí)號(hào)。要查找 UID,請(qǐng)上傳以下代碼并打開串行監(jiān)視器。
//-------------------------Program developed by
R.Girish------------------//
#include 《SPI.h》
#include 《MFRC522.h》
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F(“Your tag is not of type MIFARE Classic, your card/tag
can‘t be read :(”));
return;
}
String StrID = “” ;
{
StrID +=
(rfid.uid.uidByte[i] 《 0x10 ? “0” : “”) +
String(rfid.uid.uidByte[i], HEX) +
(i != 3 ? “:” : “” );
}
StrID.toUpperCase();
Serial.print(“Your card’s UID: ”);
Serial.println(StrID);
rfid.PICC_HaltA ();
rfid.PCD_StopCrypto1 ();
}
//-------------------------Program developed by
R.Girish------------------//
打開串行監(jiān)視器。
掃描RFID模塊上的卡/標(biāo)簽。
現(xiàn)在,您將看到每張卡的一些十六進(jìn)制代碼。
寫下來(lái),我們將在下一個(gè)程序中輸入這些數(shù)據(jù)。
主程序:
//-------------------------Program developed by
R.Girish------------------//
#include 《LiquidCrystal.h》
#include 《EEPROM.h》
#include 《SPI.h》
#include 《MFRC522.h》
#include 《Wire.h》
#include 《TimeLib.h》
#include 《DS1307RTC.h》
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
const int rs = 7;
const int en = 6;
const int d4 = 5;
const int d5 = 4;
const int d6 = 3;
const int d7 = 2;
const int LED = 8;
boolean ok = false;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int list = A0;
const int CLM = A1;
const int yes = A2;
const int no = A3;
int H = 0;
int M = 0;
int S = 0;
int i = 0;
int ID1 = 0;
int ID2 = 0;
int ID3 = 0;
int ID4 = 0;
int ID5 = 0;
int ID6 = 0;
int ID7 = 0;
int ID8 = 0;
int ID9 = 0;
int ID10 = 0;
int ID11 = 0;
int ID12 = 0;
char UID[] = “”;
// **************************** SETTINGS ************************ //
// ------ From -------- // (Set the time range for attendance in hours 0 to
23)
int h = 21; // Hrs
int m = 00; // Min
// ------- To ------- //
int h1 = 21; // Hrs
int m1 = 50; //Min
// ---------------- SET UIDs ----------------- //
char UID1[] = “F6:97:ED:70”;
char UID2[] = “45:B8:AF:C0”;
char UID3[] = “15:9F:A5:C0”;
char UID4[] = “C5:E4:AD:C0”;
char UID5[] = “65:1D:AF:C0”;
char UID6[] = “45:8A:AF:C0”;
char UID7[] = “15:9F:A4:C0”;
char UID8[] = “55:CB:AF:C0”;
char UID9[] = “65:7D:AF:C0”;
char UID10[] = “05:2C:AA:04”;
char UID11[] = “55:7D:AA:04”;
char UID12[] = “BD:8A:16:0B”;
// -------------- NAMES -----------------------//
char Name1[] = “Student1”;
char Name2[] = “Student2”;
char Name3[] = “Student3”;
char Name4[] = “Student4”;
char Name5[] = “Student5”;
char Name6[] = “Student6”;
char Name7[] = “Student7”;
char Name8[] = “Student8”;
char Name9[] = “Student9”;
char Name10[] = “Student10”;
char Name11[] = “Student11”;
char Name12[] = “Student12”;
// ********************************************************** //
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
SPI.begin();
rfid.PCD_Init();
pinMode(yes, INPUT);
pinMode(no, INPUT);
pinMode(list, INPUT);
pinMode(LED, OUTPUT);
pinMode(CLM, INPUT);
digitalWrite(CLM, HIGH);
digitalWrite(LED, LOW);
digitalWrite(yes, HIGH);
digitalWrite(no, HIGH);
digitalWrite(list, HIGH);
}
void loop()
{
if (digitalRead(list) == LOW)
{
Read_data();
}
if (digitalRead(CLM) == LOW)
{
clear_Memory();
}
tmElements_t tm;
if (RTC.read(tm))
{
lcd.clear();
H = tm.Hour;
M = tm.Minute;
S = tm.Second;
lcd.setCursor(0, 0);
lcd.print(“TIME:”);
lcd.print(tm.Hour);
lcd.print(“:”);
lcd.print(tm.Minute);
lcd.print(“:”);
lcd.print(tm.Second);
lcd.setCursor(0, 1);
lcd.print(“DATE:”);
lcd.print(tm.Day);
lcd.print(“/”);
lcd.print(tm.Month);
lcd.print(“/”);
lcd.print(tmYearToCalendar(tm.Year));
delay(1000);
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0);
lcd.print(“RTC stopped?。?!”);
lcd.setCursor(0, 1);
lcd.print(“Run SetTime code”);
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Read error!”);
lcd.setCursor(0, 1);
lcd.print(“Check circuitry!”);
}
}
if (H == h)
{
if (M == m)
{
ok = true;
}
}
if (H == h1)
{
if (M == m1)
{
ok = false;
}
}
if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F(“Your tag is not of type MIFARE Classic, your card/tag
can‘t be read :(”));
}
String StrID = “” ;
for (byte i = 0; i 《 4; i ++)
{
StrID +=
(rfid.uid.uidByte[i] 《 0x10 ? “0” : “”) +
String(rfid.uid.uidByte[i], HEX) +
(i != 3 ? “:” : “” );
}
StrID.toUpperCase();
if (ok == false)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Attendance is”);
lcd.setCursor(0, 1);
lcd.print(“Closed.”);
delay(1000);
}
if (ok)
{
//-----------------------------------//
if (StrID == UID1)
{
ID1 = EEPROM.read(1);
ID1 = ID1 + 1;
if (ID1 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID1 != 256)
{
EEPROM.write(1, ID1);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered !??!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID2)
{
ID2 = EEPROM.read(2);
ID2 = ID2 + 1;
if (ID2 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID2 != 256)
{
EEPROM.write(2, ID2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。。 保?
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID3)
{
ID3 = EEPROM.read(3);
ID3 = ID3 + 1;
if (ID3 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID3 != 256)
{
EEPROM.write(3, ID3);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。?!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID4)
{
ID4 = EEPROM.read(4);
ID4 = ID4 + 1;
if (ID4 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID4 != 256)
{
EEPROM.write(4, ID4);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered !?。 保?
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID5)
{
ID5 = EEPROM.read(5);
ID5 = ID5 + 1;
if (ID5 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID5 != 256)
{
EEPROM.write(5, ID5);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。。 保?
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID6)
{
ID6 = EEPROM.read(6);
ID6 = ID6 + 1;
if (ID6 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID6 != 256)
{
EEPROM.write(6, ID6);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。。 保?
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID7)
{
ID7 = EEPROM.read(7);
ID7 = ID7 + 1;
if (ID7 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID7 != 256)
{
EEPROM.write(7, ID7);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。?!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID8)
{
ID8 = EEPROM.read(8);
ID8 = ID1 + 1;
if (ID8 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID8 != 256)
{
EEPROM.write(8, ID8);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered !!!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID9)
{
ID9 = EEPROM.read(9);
ID9 = ID9 + 1;
if (ID9 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID9 != 256)
{
EEPROM.write(9, ID9);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。?!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID10)
{
ID10 = EEPROM.read(10);
ID10 = ID10 + 1;
if (ID10 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID10 != 256)
{
EEPROM.write(10, ID10);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered !?。 保?
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID11)
{
ID11 = EEPROM.read(11);
ID11 = ID11 + 1;
if (ID11 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID11 != 256)
{
EEPROM.write(11, ID11);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。?!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
//-----------------------------------//
if (StrID == UID12)
{
ID12 = EEPROM.read(12);
ID12 = ID12 + 1;
if (ID12 == 256)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Memory is Full”);
lcd.setCursor(0, 1);
lcd.print(“Please Clear All.”);
for (i = 0; i 《 20; i++)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
i = 0;
return;
}
if (ID12 != 256)
{
EEPROM.write(12, ID12);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Your Attendance”);
lcd.setCursor(0, 1);
lcd.print(“Registered ?。?!”);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
return;
}
}
if (StrID != UID1 || StrID != UID2 || StrID != UID3 || StrID != UID4
|| StrID != UID5 || StrID != UID6 || StrID != UID7 || StrID != UID8
|| StrID != UID9 || StrID != UID10 || StrID != UID11 || StrID != UID12)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Unknown RFID”);
lcd.setCursor(0, 1);
lcd.print(“Card !?。 保?
for (i = 0; i 《 3; i++)
{
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}
}
rfid.PICC_HaltA ();
rfid.PCD_StopCrypto1();
}
}
void Read_data()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name1);
lcd.print(“:”);
lcd.print(EEPROM.read(1));
lcd.setCursor(0, 1);
lcd.print(Name2);
lcd.print(“:”);
lcd.print(EEPROM.read(2));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name3);
lcd.print(“:”);
lcd.print(EEPROM.read(3));
lcd.setCursor(0, 1);
lcd.print(Name4);
lcd.print(“:”);
lcd.print(EEPROM.read(4));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name5);
lcd.print(“:”);
lcd.print(EEPROM.read(5));
lcd.setCursor(0, 1);
lcd.print(Name6);
lcd.print(“:”);
lcd.print(EEPROM.read(6));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name7);
lcd.print(“:”);
lcd.print(EEPROM.read(7));
lcd.setCursor(0, 1);
lcd.print(Name8);
lcd.print(“:”);
lcd.print(EEPROM.read(8));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name9);
lcd.print(“:”);
lcd.print(EEPROM.read(9));
lcd.setCursor(0, 1);
lcd.print(Name10);
lcd.print(“:”);
lcd.print(EEPROM.read(10));
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(Name11);
lcd.print(“:”);
lcd.print(EEPROM.read(11));
lcd.setCursor(0, 1);
lcd.print(Name12);
lcd.print(“:”);
lcd.print(EEPROM.read(12));
delay(2000);
}
void clear_Memory()
{
lcd.clear();
lcd.print(0, 0);
lcd.print(F(“Clear All Data?”));
lcd.setCursor(0, 1);
lcd.print(F(“Long press: Y/N”));
delay(2500);
Serial.print(“YES”);
if (digitalRead(yes) == LOW)
{
EEPROM.write(1, 0);
EEPROM.write(2, 0);
EEPROM.write(3, 0);
EEPROM.write(4, 0);
EEPROM.write(5, 0);
EEPROM.write(6, 0);
EEPROM.write(7, 0);
EEPROM.write(8, 0);
EEPROM.write(9, 0);
EEPROM.write(10, 0);
EEPROM.write(11, 0);
EEPROM.write(12, 0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(F(“All Data Cleared”));
lcd.setCursor(0, 1);
lcd.print(F(“****************”));
delay(1500);
}
if (digitalRead(no) == LOW);
{
return;
}
}
//-------------------------Program developed by
R.Girish------------------//
---------------- 設(shè)置用戶界面----------------- //
字符 UID1[] = “F6:97:ED:70”;
字符 UID2[] = “45:B8:AF:C0”;
字符 UID3[] = “15:9F:A5:C0”;
char UID4[] = “C5:E4:AD:C0”;
字符 UID5[] = “65:1D:AF:C0”;
char UID6[] = “45:8A:AF:C0”;
字符 UID7[] = “15:9F:A4:C0”;
char UID8[] = “55:CB:AF:C0”;
字符 UID9[] = “65:7D:AF:C0”;
字符 UID10[] = “05:2C:AA:04”;
字符 UID11[] = “55:7D:AA:04”;
字符 UID12[] = “BD:8A:16:0B”;
//----------------------------------------------//
您這里有地名:
--------------名字-----------------------//
字符名稱 1[] = “學(xué)生 1”;
字符名稱 2[] = “學(xué)生 2”;
字符名稱 3[] = “學(xué)生 3”;
字符名稱 4[] = “學(xué)生 4”;
字符名稱 5[] = “學(xué)生 5”;
字符名稱 6[] = “學(xué)生 6”;
字符名稱 7[] = “學(xué)生 7”;
字符名稱 8[] = “學(xué)生 8”;
字符名稱 9[] = “學(xué)生 9”;
字符名稱 10[] = “學(xué)生 10”;
字符名稱 11[] = “學(xué)生 11”;
字符名稱 12[] = “學(xué)生 12”;
//--------------------------------------------//
將學(xué)生 1、學(xué)生 2 替換為您想要的任何名稱或保持原樣。
您必須設(shè)置從何時(shí)到考勤系統(tǒng)應(yīng)該處于活動(dòng)狀態(tài)的時(shí)間,其余時(shí)間當(dāng)我們掃描RFID標(biāo)簽/卡時(shí),系統(tǒng)不會(huì)注冊(cè)考勤:
------從--------//
整數(shù) h = 21;小時(shí)
int m = 00;最小值
-------自-------//
整數(shù) h1 = 21;小時(shí)
int m1 = 50;最小值
//-------------------------//
上半部分是開始時(shí)間,下半部分是結(jié)束時(shí)間。您必須輸入從 0 到 23 的小時(shí)和從 00 到 59 的分鐘。
-
RFID
+關(guān)注
關(guān)注
388文章
6152瀏覽量
237912 -
考勤系統(tǒng)
+關(guān)注
關(guān)注
0文章
40瀏覽量
11213 -
DIY制作
+關(guān)注
關(guān)注
2文章
32瀏覽量
9261
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論