嵌入式RFID校園考勤系統的應用與研究

2022-11-09 21:54:03 字數 7969 閱讀 5995

文章編號

研究與設計微型電腦應用2012年第28卷第9期

嵌入式rfid校園考勤系統的應用與研究

孫巨集偉摘

要:整個嵌入式rifd校園卡考勤管理系統的主體部分,是乙個基於jsp的系統**,綜合運用

mysql技術,實現乙個b/s架構的考勤管理查詢系統。嵌入式終端使用arm處理器,通過linux系統進行管理,linux讀取rfid模組傳入的校園卡id資料,然後通過socket客戶端,將資料傳送到校園內網的伺服器端。伺服器端執行乙個java伺服器程序,利用多執行緒並行接收所有客戶端的資料傳入。

伺服器端主要涉及socket通訊和mysql資料庫技術。介紹了嵌

入式arm裝置的程式開發、socket程式開發、jsp開發,以及涉及到的各種技術,實現嵌入式校園卡考勤管理查詢**。

整個**專案**,用版本控制系統進行版本控制。

關鍵詞資料庫;考勤管理;linux

中圖分類號:tp3l1

文獻標誌碼:a

0引言為了保證教學質量,也為了督促學生積極參加教學活動,上課點名成了大學校園內的一道獨特的風景線,任課的老師通常承擔了義務點名的責任。但這項工作既費時又費

標準協議,將資料傳送給嵌入式終端裝置,裝置端應用程式,

是執行於嵌入式linux下的後台應用程式,該程式讀取rfid模組的傳入訊號,並將其解析後,得到乙個校園卡的pid號。

接著,嵌入式裝置通過與伺服器的socket連線,將所

力,分散了老師的教學精力,逃課現象也依舊存在,效果並

不如人意。

有從rfid模組讀取到的資料連同時間戳以及教室編號,傳送至伺服器接收程式。

伺服器接收程式與嵌入式裝置上的傳送程式緊密配合,負責將接收到的資料再儲存值入整個系統的「資料中心』'_一mysol資料庫中。

面對這一兩難的窘境,無疑可以用非人工的方式完成這

項工作。校園卡如今已經成為了最普遍的標示學生身份的證件,大部分的校園卡還具備了借閱圖書、吃飯、洗浴等功能。

由此,本文將從原理上**乙個可以完成從考勤、記錄

儲存、記錄查詢,分析一系列步驟的校園卡考勤查詢管理系

統。最後,應用的中心便建:在這個集中的資料庫中,基於考勤記錄資料,可以進行多:虧面的應用,本考勤管理查詢系

統實現的乙個jsp**應用,可以通過瀏覽器登入考勤**,進行考勤記錄的多功能查詢。

1設計思想

基於校園卡現有的rfid無線射頻技術,校園卡考勤,

2嵌入式裝置端的應用

2.1無線射頻技術

考勤系統中最前端的部分,便是嵌入式裝置,校園卡普

需要得到校園卡的乙個唯一標識號即可完成考勤記錄。該考勤系統的基本工作流程如下:

課前學生憑各自的校園卡(基於rfid無線射頻技術)刷卡後進入教室。刷卡成功後rfid模組通過wiegand一26

遍採用的是rfid(電子標籤、射頻識別)技術,因此,嵌

作者簡介:孫巨集偉(1986.),男,浙江,上海菸草機械有限責任公司,嵌入式助理工程師,碩士研究生,研究方向:嵌入式設計,上海,201206

35研究與設計微型電腦應用2012年第28卷第9期

入式裝置端,安裝有乙個rfid射頻識別模組,專門負責讀取校園卡中的id標誌。

rfid射頻識別,是一種非接觸式的自動識別技術,通過射頻訊號自動識別目標物件並獲取相關資料,可工作於各種惡劣環境。在校園卡考勤這一應用中,rfid系統可以簡

位元組序把ascii字串引數變換到合適的

位址格式。2.2_3與伺服器鏈結

在對socket進行上述簡單配置後,即可嘗試用connect函式與伺服器進行連線:

單地概括為兩個部分:校園卡和識別校園卡編號的rfid模

塊。嘗試在fd套介面上建立乙個到server伺服器的連線。其中connect函式的引數fd就是前面建立socket時返回的套介面描述字,而server是描述伺服器連線引數的結構體。

如果連線成功,該函式返回0,錯誤則返回一1,在終端上會顯示提示連線失敗,並直接退出應用程式,終止資料傳送。2.2.4與伺服器間的通訊

在與伺服器成功連線後,就可以使用函

在本系統中,唯一需要記錄的是學生持校園卡進行刷卡的校園卡編號和刷卡時間,一旦記錄下這些資料,就可以結合更複雜的後台資料,支撐起乙個比較完整的查詢系統。

rfid模組使用了標準的wiegand26介面傳輸訊號。wiegand介面通常由3根線組成,分別是:資料0(data0),資料1(data1)和這3條線負責傳輸wiegand

數進行伺服器/客戶端之間的資訊收發了。考勤系統裝置端**實現如下:

通過send函式,將data所指向的資料緩衝區中的資料

訊號。do,di在沒有資料輸出時都保持+5v高電平。若輸出為0,則do拉低一段時間,若輸出為1,則d1拉低一段

時間。考勤系統使用的校園卡識別裝置,就是採用wiegand一26

標準協議的,data0和datal兩根傳送資料訊號的線,分別

傳送的套介面描述字fd所指代的socket連線。傳送後執行

一連線到嵌入式裝置的兩個10埠上,在嵌入式linux作業系統中,通重載入自定義驅動程式來訪問datao和datal。

在載入了rfid驅動模組之後,嵌入式linux中使用簡單的**,就可以對rfid讀卡資料訊號進行讀取了。而在考勤系統中需要使用到的校園卡pid值,則如前文所述,是wiregen變數中第10位至25位總共16位值。取得校園卡pid值之後,便可將該pid值傳送給伺服器資料接收程式了連線的通訊技術

取得了能夠區分不同校園卡的pid值之後,接下來需要將校園卡pid資料、刷卡所在教室的考勤裝置編號、時間傳送給遠端伺服器。

次接收函式recv0,該函式的作用旨在傳送資料之後總應

當要求伺服器端作出乙個回應。更多的應用甚至可以通過該回應訊息來判斷伺服器的狀態。

2.2.5關閉鏈結

當客戶端完成資料的傳送,並且得到伺服器的適當回應之後,就應該關閉socket鏈結,以讓作業系統**該socket

鏈結。關閉套介面和關閉檔案是一樣的,呼叫可關閉socket描述字對應的socket套介面。2-3客戶端的資料結構

考勤裝置資料傳送程式持有pid資料,但是,為了能夠讓伺服器知道客戶端傳送來的資料具體是什麼內容,在客戶端和伺服器之問需要共同遵守乙個固定資料序列協議,數

資料的傳送和接收使用的是socket套介面連線。socket介面是tcp/ip網路的介面定義了許多函式和

例程。據流中的前4個位元組表示終端所對應的教室編號(或者可以

簡單地看作裝置編號),接下來4個位元組表示後面緊接著的資料流包含的記錄數量,每條記錄含有l0個位元組的資料,每條記錄的前2個位元組代表刷卡pid值(16位),後8個位元組代表產生本條記錄的時間(即刷卡時間)的64位timestamp表示法。當所有的資料傳送完畢後,是任何情況下部固定不變的3個位元組「end」,如果伺服器接收時,沒有在結尾處遇到這3個位元組的結尾符,那麼伺服器控制台將會發出乙個警告訊息。

在目前的客戶端**中,只是簡單地對每一條資料進行次打包傳送(即count=1),當然,如果網路或其他限制比較嚴重的情況下,完全可以採用更好的演算法進行多條資料的

一嵌入式終端客戶端採用c語言編寫,通過linux下的socket與伺服器主機上的java程式建立的伺服器socket相連線。

首先,每個socket連線都有個整數描述字來唯一

地進行標識。另外,客戶端程式需要乙個結構體來指定連線到伺服器的位址和埠等資訊,接下來,先簡單敘述建立裝置端socket程式的基本流程。2.2.1建立tcp套介面

fdtotcp、:

_socket函式建立af inet位元組流打包。

套介面。該函式返回了乙個整數描述字,在以後的函式呼叫中,都是用這個整數值來標識這個套介面。

2.2.2指定伺服器ip位址和埠

客戶端**通過數對pid進行打包,將教室id、pid、時問、結尾符填入資料緩衝區後,直接交由socket函式send()傳送給伺服器端。

2.4伺服器資料接收

伺服器端採用java程式作為伺服器程式,在iava.net.類庫中通過構造乙個類的例項就可以使伺服器檢測到指定埠的資料。

首先將server結構體清零,伺服器的ip位址來自程式

執行引數arg[」,埠號定義為12313,填入結構體server中。置位址簇為函式意為「從

主機到網路短整數」,將埠位址值轉換成主機無關的網路

36研究與設計微型電腦應用2012年第28卷第9期

伺服器端java程式是

的主類是

這樣一來,考勤資料庫記錄所需要的校園卡pid值、

刷卡時間值、刷卡教室編號都已經成功獲取,利用mysql資料庫接i21,將上述資料逐條插入到資料庫

表中記錄。每取到一條記錄,就使用insert語句將其插入到資料庫的primitive表中:

ler,這個類就包含有乙個私有的物件,在程式初始化時建立,監聽埠12313上的socket連線請

求,然後程式就進入乙個無限迴圈,每當返回時就建立乙個receiver執行緒來進行資料接收,主線程進入

下一次迴圈,等待下乙個socket連線請求,因此,無論客戶端同時發起多少個socket連線請求,都不會被阻塞,而是直接得到伺服器的響應。

receiver是自定義的乙個類的靜態內部類,繼承自thread類:在這個專門用來接收資料的類中,由執行緒主體run()函式來完成處理邏輯。在receiver類的建構函式中,會將引數提供的socket連線引用儲存的自己的私有成員變數中供run()使用,在run()函式中,按照客戶端/

當處理完所有的資料,檢查好結尾符後,就要關閉資料庫連線,方法是類似的,只要對所建立的類物件例項呼叫其close方法即可。接著向客戶端傳送一條提示訊息,以表示正常接收了,java中字串是utf一8編碼的,而這條訊息此處只包含了英文,因此嵌入式linux終端可以正常顯示。

伺服器共同遵守的打包/j砰包協議進行資料傳輸處理,分別接收教室id,記錄數量,各條記錄以及結尾字串。java中對socket連線資料的讀取和傳送,已經被抽象成為最普通的緩衝區讀寫操作,

首先獲得socket連線上的輸入流物件,然後將其作為構造引數構造乙個物件,專門用於進行流讀取操作,但類依然是乙個相對底層的10操作類,因此,這裡再一次將其作為構造引數,

這樣,伺服器端乙個執行緒的資料接收就基本結束了,最後呼叫socket物件的close()方法關閉這個socket連線,釋

放系統資源,就完成了從客戶端到伺服器資料傳輸的整個過

程。3考勤記錄的資料庫

儲存考勤記錄的資料庫,採用開放源**的mysql資料庫,作為考勤管理查詢**的後台資料庫。mysql是乙個開放原始碼的小型關係型資料庫管理系統,具有體積小、速度快、總體擁有成本低等特點。

考勤記錄資料庫涉及的所有資料庫表編碼,都採用utf-8格式編碼,即mysql預設編碼就設定成utf-8。也可以在數

將實際是對socket資料流的操作,最終委託給高度抽象的

物件。按照之前定好的通訊協議,資料流巾的前4個位元組代表

的是考勤裝置編號(或者可以等價地說是教室編號):

據表定義時加上字尾來特別設定

編碼。裝置編號讀取完,接下來的連續四個寧節代表的是本資料報所包含的記錄條數,利用同樣的方法進行解析:

接下來,是整個查詢系統所涉及到的所有考勤記錄相關

資料庫表。

資料庫共有9個**,如圖1所示:f

有了上述資料,便可推算出整個資料報剩餘的位元組數量,進而對其中包含的資料記錄逐一進行解析。總的思想如

下:盈classin[o

闡i,團

一!=0){

讀取記錄pid值,佔兩位元組;

讀取記錄時問戳,佔8個位元組;

將pid、時問戳、連同教室編號資訊資料存入考勤記

錄資料庫中:

}接卜來逐步解決上述思想中的各個步驟。

首先,取得pid值,即資料條目的前兩個位元組:

-|函團團函pirmitive團豳

圖資料庫

接著連續8個位元組表示時間,這裡8個位元組實際表示的是乙個64位整數,是標準的timestamp表示法,即從l970年1月1日0時0分0秒起至今的毫秒數,資料取法同取pid值類似,每取乙個位元組進行一次移位即可。

然後物件有乙個建構函式可以直接接受乙個64位的long值引數作為時間戳資料。

建立好上述資料庫環境後,即可在伺服器程式和jsp

站中對資料庫進行操作了。要在java程式中使用mysql

資料庫,需要使用對於般的java應用程式在中加入對

一的引用即可,對於web網

站,需要在**根目錄中有

java一這個檔案。

37研究與設計微型電腦應用2012年第28卷第9期

在完成對本次鏈結的操作後需要用關閉此在姓名一欄中輸入學生姓名,在時間過濾中選擇要查詢次資料庫鏈結,釋放相關資源。

的課程年份,點選「繼續」按鈕後會出現乙個列表框,顯示所4建立查詢**

有符合過濾條件的學生學號,隨後選擇需要查詢的學號,點

4.1**頁面

擊「繼續」按鈕,系統會在列表中顯示該學生在該學年中參與jsp頁面由html**和嵌入其中的java**所組成。的所有課程,選擇要查詢的課程,再點選「繼續」按鈕,**考勤管理查詢系統的jsp考勤查詢**中,頁面內容在很大

即顯示該學生的所選課程的考勤記錄,內容包含4個主要字程度上,僅僅依靠xhtml配合呈現動態頁面,段:「上課時間」、「刷卡時間」、「教室」和「狀態」。此外,當

jsp指令在頁面中,承擔的主要責任是一些動態的位址賦值

滑鼠移動到「上課時間」的資料上時,同時顯示出下課時間和身份驗證賦值運算。而則負責對http請求(預設每堂課課時為40分鐘)。

產生動態的xml文件輸出。xml文件在考勤管理查詢**中,承擔著極其重要的中間人角色,在伺服器——**頁

5總結面——使用者之間建立了一座簡單通用的資料呈現的橋梁。

整個實現通用的流程如下:

4.2功能頁面

1)建立請求,向伺服器發出httppost

jsp頁面按各種功能分類進行頁面組織,首先在web請求。

根目錄下有乙個index.jsp表示系統首頁,用作使用者驗證登2)在成功得到伺服器正確響應的情況下,利用mootools

錄介面。所有頁面必須要使用者登入之後才可見,本系統使用提供的指令碼功能,迭代xml文件中的item元素,並為session設定使用者身份驗證來阻止未登入使用者訪問受限制頁

每乙個item元素的子項構造單元格。

面。主要頁面分:以學生、課程、教師為主要條件的查詢頁3)對xml文件中的相對原始資料進行一定的計算處理,

面;分別新增學生、班級、教師的新增操作頁面;一些輔助

並在相應的單元格中,顯示相對應的計算結果,比如是頁面,如導航側邊欄、標題欄、腳注欄等,都以內嵌頁面的否遲到的判定,是通過指令碼中計算xml文方式嵌入在上述主要頁面中。

檔中,提供的資料得到的,而不是伺服器直接判定好的4_3主要頁面流程

狀態結果。

在眾多頁面中是secure目錄下,所有主4)每處理乙個item元素,就表示**中的一行資料,切

要頁面都包含的子頁面,是代表頁面標題的內嵌頁。換當前行的背景顏色。

則是secure目錄下,所有主要頁面都包含的代

5)完成**的建立。如果可選的「**excel**」或者「發

表頁面頁尾的內嵌頁。

送email」被選擇了,那麼在伺服器上,會另外產生乙個是大部分主頁面共有的乙個位於頁面左側url位址,可以形成乙份當前記錄**的excel**文的導航欄內嵌頁面。如果使用者是按照正常的流程登入到檔,和一封html**方式組織的自動email傳送到secure下的頁面的,注意到實際「登入」按鈕執行的是

指定的郵箱位址中。

指令碼函式該指令碼函式完成乙個很簡單的登入流程。

參考文獻:

一旦登入成功,使用者的資訊將被儲存在相應session的

usersig屬性中,無論使用者定位到secure目錄下的哪個頁面

中,都可以正常訪問了。

是乙個查詢特定學生某一門課的考勤

記錄的頁面。開啟該頁面的初始情況,如圖2所示:

summa ̄

[3】張洪偉開發及整合應用,[r]清華大學,

按照學生的姓名和}i定掌年查詢鴦記錄

匹■ 到學生後會避一步綱化進行鼴程的選擇童御樣例輸入:姓名(m)學年

掛名[4]劉曉華、張健、周慧貞,jsp應用開發詳解,u】電子工

蕊黲御學生的蛙名

業.2007.1

權威指南

2007.5

[6]夏慧軍、魏雪輝,深入淺出ajax,[j]電子工業,2007.4

回圜圜函

(收稿日期

圖2學生查詢38

嵌入式系統的組成

嵌入式系統由硬體和軟體兩大部分組成,硬體一般由高效能微處理器和外圍介面電路組成,軟體一般由作業系統和應用程式構成,軟體和硬體之間由所謂的中間層 bsp層,板級支援包 連線。嵌入式系統的硬體有 嵌入式微處理器 儲存器 輸入輸出 i o a d d a 嵌入式系統的軟體有 作業系統 應用軟體。作業系統是...

嵌入式系統設計

課程學習 題目 基於arm嵌入式影象處理系統設計與實現 院系 資訊工程與自動化學院 專業 模式識別與智慧型系統 學生姓名 學號指導老師 2013年08月10日 摘要本文主要設計了一種基於arm的可攜式影象採集處理系統。該系統以arm7 s3c44box 為核心,配上外圍電路以實現影象處理功能,並結合...

嵌入式系統應用

電子資訊工程系實驗報告 課程名稱 嵌入式系統應用 實驗專案名稱 實驗3 gpio 中斷 定時器程式設計實驗時間 2012 10 10 班級 電信092姓名 學號 910706201 t span cr r 12 一 實驗目的 進一步熟悉ads1.2開發環境的使用方法,掌握利用ads1.2開發環境進行...