基于zigbee技術(shù)的無線考勤系統(tǒng)設(shè)計畢業(yè)設(shè)計_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  基于ZigBee技術(shù)的無線考勤系統(tǒng)設(shè)計</p><p>  摘要:系統(tǒng)基于ZigBee個域網(wǎng)協(xié)議和嵌入式系統(tǒng),使刷卡設(shè)備和考勤統(tǒng)計系統(tǒng)分離,具有組網(wǎng)方便,安裝拆卸簡單,擴(kuò)容性好,無需布線等特點,可以減少因線路故障帶來的損失和不便,提高了系統(tǒng)的穩(wěn)定性和可靠性。并完成了ZigBee網(wǎng)絡(luò)的搭建與優(yōu)化,嵌入式數(shù)據(jù)庫Sqlite的移植以及嵌入式QT的開發(fā)等。</p><p> 

2、 關(guān)鍵字:ZigBee, 射頻卡考勤,嵌入式網(wǎng)關(guān)</p><p><b>  1 緒論</b></p><p>  隨著信息化時代的到來,我們生活的各方面都和信息化息息相關(guān)。社會的管理和資金的流通也已經(jīng)進(jìn)入信息化的革命。非接觸IC卡“一卡通”便是信息化革命的產(chǎn)物之一。本系統(tǒng)設(shè)計的目的是為了實現(xiàn)考勤數(shù)據(jù)采集、數(shù)據(jù)統(tǒng)計和信息查詢過程的無線化和自動化。方便用戶對考勤數(shù)據(jù)的保

3、存和導(dǎo)出。</p><p>  ZigBee是進(jìn)入21世紀(jì)后來出現(xiàn)的一種新型無線通信技術(shù),該協(xié)議具有近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的特點,在智能家居、智能樓宇自動化、工業(yè)智能監(jiān)等控領(lǐng)域具有非常寬廣的市場空間。隨著多家芯片制造商推出支持ZigBee協(xié)議的片上系統(tǒng)解決方案,越來越多的無線控制系統(tǒng)采用ZigBee技術(shù)。</p><p>  系統(tǒng)基于ZigBee個域網(wǎng)協(xié)議和嵌入式系統(tǒng)

4、,使刷卡設(shè)備和考勤統(tǒng)計系統(tǒng)分離,與目前廣泛使用的有線考勤系統(tǒng)相比,具有組網(wǎng)方便,安裝拆卸簡單,擴(kuò)容性好,無需布線等特點,可以減少因線路故障帶來的損失和不便,提高了系統(tǒng)的穩(wěn)定性和可靠性。</p><p>  本文首先介紹了系統(tǒng)的總體拓?fù)浣Y(jié)構(gòu),然后詳細(xì)闡述了刷卡設(shè)備和網(wǎng)關(guān)設(shè)備的硬件設(shè)計和軟件開發(fā)過程,其中包括刷卡驅(qū)動電路設(shè)計,ZigBee協(xié)議棧應(yīng)用程序設(shè)計,QT應(yīng)用軟件設(shè)計,Sqlite數(shù)據(jù)庫移植方法等。</p

5、><p><b>  2 系統(tǒng)總體結(jié)構(gòu)</b></p><p>  本系統(tǒng)主要有IC卡讀寫模塊,發(fā)射接收模塊和嵌入式系統(tǒng)主機(jī)組成。系統(tǒng)總體結(jié)構(gòu)如圖1所示。刷卡設(shè)備由德州儀器CC2530系統(tǒng)板和RC522讀寫模塊組成,系統(tǒng)主機(jī)由三星6410開發(fā)板和CC2530無線收發(fā)系統(tǒng)組成。當(dāng)符合讀卡協(xié)議的IC卡片進(jìn)入刷卡范圍,刷卡設(shè)備會將IC卡片的編號通過ZigBee網(wǎng)絡(luò)發(fā)往嵌入式網(wǎng)關(guān)

6、。主機(jī)基于Linux3.0內(nèi)核和飛凌嵌入式技術(shù)有限公司提供的文件系統(tǒng)以及QT4.8運行環(huán)境,開發(fā)了ZigBee網(wǎng)關(guān)程序,能夠監(jiān)聽ZigBee協(xié)調(diào)器的串口并且能夠保存數(shù)據(jù)到本地數(shù)據(jù)庫。</p><p>  圖1 ZigBee無線考勤系統(tǒng)效果圖</p><p>  2. ZigBee協(xié)議棧簡介</p><p>  2.1 ZigBee協(xié)議棧描述</p>&

7、lt;p>  ZigBee協(xié)議是一系列的通信標(biāo)準(zhǔn),通信雙方需要共同按照這一標(biāo)準(zhǔn)進(jìn)行正常的數(shù)據(jù)發(fā)射和接收。協(xié)議棧是協(xié)議的具體實現(xiàn)形式。協(xié)議棧是協(xié)議和用戶之間的一個接口,開發(fā)人員通過使用協(xié)議棧來使用這個協(xié)議的,進(jìn)而實現(xiàn)無線數(shù)據(jù)收發(fā)。 圖2展示了ZigBee無線網(wǎng)絡(luò)協(xié)議層的架構(gòu)圖。ZigBee的協(xié)議分為兩部分,IEEE 802.15.4定義了物理層和介質(zhì)訪問層技術(shù)規(guī)范,ZigBee聯(lián)盟定義了網(wǎng)絡(luò)層、應(yīng)用程序支持子層、應(yīng)用層技術(shù)規(guī)范。Zi

8、gBee協(xié)議棧就是將各個層定義的協(xié)議都集合在一起,以函數(shù)的形式實現(xiàn),并給用戶提供API(應(yīng)用層),用戶可以直接調(diào)用。</p><p>  圖2 ZigBee協(xié)議棧層次</p><p><b>  2.2 協(xié)議棧結(jié)構(gòu)</b></p><p>  ZigBee協(xié)議棧是由一組稱為層模塊的結(jié)構(gòu)來構(gòu)成。下一層將為上層執(zhí)行特定的一組服務(wù)。數(shù)據(jù)單位提供數(shù)據(jù)傳

9、輸服務(wù),管理單位提供所有其他服務(wù)。各個業(yè)務(wù)實體通過服務(wù)接入點(SAP)為上層提供一個接口,每個服務(wù)接入點支持多個服務(wù)原語來實現(xiàn)要求的功能。</p><p>  IEEE 802.15.4-2003標(biāo)準(zhǔn)定義了物理層(PHY)和媒體訪問控制子層(MAC)兩個網(wǎng)絡(luò)底層?;谖锢韺雍兔襟w訪問控制子層,ZigBee聯(lián)盟開發(fā)了網(wǎng)絡(luò)層和應(yīng)用層體系結(jié)構(gòu)。其中,應(yīng)用支持子層(APS)、ZigBee 設(shè)備對象(ZDO)組成了應(yīng)用層框

10、架。應(yīng)用對象使用架構(gòu)層以及APS共享和安全服務(wù),則有不同芯片制造商來定義。</p><p>  IEEE 802.15.4-2003標(biāo)準(zhǔn)有兩個物理層,運行在868 / 915 MHz和2.4GHz兩個不同的頻率范圍。由于每個國家開放給科學(xué)和工業(yè)的ISM頻段標(biāo)準(zhǔn)不同,所以低頻率物理層包括歐洲使用的868MHZ頻段以及美國和澳大利亞等國家使用915 MH頻段。而世界上大多數(shù)國家的使用的是2.4GHz頻段的物理層。IE

11、EE 802.15.4-2003 MAC子層使用CSMA-CA協(xié)議機(jī)制來控制無線信道訪問。CSMA-CA協(xié)議即載波監(jiān)聽多路訪問沖突檢測方法。</p><p>  2.3 ZigBee網(wǎng)絡(luò)拓?fù)?lt;/p><p>  ZigBee網(wǎng)絡(luò)層支持星型,樹撞和網(wǎng)狀的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。在星型拓?fù)浣Y(jié)構(gòu)中,控制網(wǎng)絡(luò)的設(shè)備稱為ZigBee協(xié)調(diào)器。ZigBee協(xié)調(diào)器負(fù)責(zé)ZigBee網(wǎng)絡(luò)備啟動和網(wǎng)絡(luò)設(shè)備的維護(hù),其他的設(shè)

12、備,稱為終端設(shè)備,直接與ZigBee協(xié)調(diào)器進(jìn)行通信。在樹狀和網(wǎng)狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,ZigBee協(xié)調(diào)器負(fù)責(zé)發(fā)起ZigBee網(wǎng)絡(luò),選擇網(wǎng)絡(luò)中的一些關(guān)鍵參數(shù),但網(wǎng)絡(luò)可以通過ZigBee路由器進(jìn)行擴(kuò)展。樹型網(wǎng)絡(luò)中,路由器使用一個分層路由策略傳輸數(shù)據(jù)和控制信息在網(wǎng)絡(luò)中。樹型網(wǎng)絡(luò)可以使用IEEE 802.15.4-2003標(biāo)準(zhǔn)化通信信標(biāo)。網(wǎng)狀網(wǎng)絡(luò)允許完全的點對點通信。在網(wǎng)狀網(wǎng)絡(luò)拓?fù)渲校琙igBee路由器將不定期發(fā)布的IEEE 802.15.4-200

13、3信標(biāo)。</p><p><b>  圖3 網(wǎng)絡(luò)拓?fù)?lt;/b></p><p>  ZigBee網(wǎng)絡(luò)是一個簡單的、低成本的通信網(wǎng)絡(luò),它應(yīng)用于一些功率有限和對網(wǎng)絡(luò)吞吐量無嚴(yán)格要求的設(shè)備之間的無線連接。ZigBee網(wǎng)絡(luò)的目標(biāo)是建立一個易于安裝、有可靠的數(shù)據(jù)傳輸、通信距離短、成本低、非常好的電池壽命這樣的一個網(wǎng)絡(luò),并且它能保持簡單的和靈活的網(wǎng)絡(luò)協(xié)議。</p>&

14、lt;p>  ZigBee網(wǎng)絡(luò)中含有兩個不同的設(shè)備,全功能設(shè)備(FFD)和簡單功能設(shè)備(RFD)。FFD在三種網(wǎng)絡(luò)模式中可作為整個PAN網(wǎng)絡(luò)的協(xié)調(diào)器、路由器或網(wǎng)絡(luò)中的終端設(shè)備。FFD可以和RFD或者FFD通信,而簡單功能設(shè)備(RFD)只能和FFD通信。RFD設(shè)備在網(wǎng)絡(luò)中主要是一個應(yīng)用設(shè)備,它們箱單簡單,比如它們可以作為燈的開關(guān)或者紅外線傳感器,但不能傳輸大規(guī)模的數(shù)據(jù),且在某一時刻只能和一個FFD相聯(lián)系。</p>&l

15、t;p>  一個ZigBee網(wǎng)絡(luò)由幾個部分組成。最基本的部分是設(shè)備,設(shè)備既可以是FFD,也可以是RFD。如果兩個和更多的設(shè)備在一個個人通信空間(POS)范圍內(nèi),且在同一信道通信,那么這些設(shè)備就組成一個WPAN。但網(wǎng)絡(luò)中必須含一個FFD設(shè)備作為PAN協(xié)調(diào)器。</p><p>  對于無線多媒體來說,由于傳播的動態(tài)性和不確定性,一個精確的覆蓋區(qū)域是不存在的。位置和方向的微笑變化,都可能引起信號強(qiáng)度和通信鏈路的急

16、劇變化。不管靜態(tài)設(shè)備或移動設(shè)備都可能出現(xiàn)這種結(jié)果。</p><p>  3. ZigBee刷卡設(shè)備</p><p>  ZigBee刷卡設(shè)備由CC2530系統(tǒng)板外接RC522讀寫模塊組成,實物圖如圖4所示。RC522非接觸式IC卡讀寫模塊采用Philips MFRC522芯片設(shè)計,能夠讀取符合ISO14443A 標(biāo)準(zhǔn)的多張卡片,使用方便,成本低廉。CC2530通過SPI接口直接驅(qū)動讀寫模塊

17、。</p><p>  圖4 ZigBee刷卡設(shè)備</p><p>  3.1采集節(jié)點主控芯片</p><p>  節(jié)點主控芯片使用的CC2530是由德州儀器公司提出的用于ZigBee應(yīng)用的片上系統(tǒng)解決方案。CC2530系統(tǒng)核心板的電路原理圖如圖5所示。CC2530片上系統(tǒng)能夠廣泛解決的2.4GHz應(yīng)用方案。這些應(yīng)用場景能夠快速的通過TI 提供的Z-Stack協(xié)議棧

18、找到合適的解決方案,從而加快開發(fā)進(jìn)程。同時CC2530片上系統(tǒng)是一具有增強(qiáng)型工業(yè)標(biāo)準(zhǔn)8051單片機(jī),并集成了無線收發(fā)功能。CC2530片上系統(tǒng)具有非常低的待機(jī)功耗,在普通干電池的驅(qū)動下能夠穩(wěn)定工作半年以上。</p><p>  CC2530工作電壓為3.0V到3.6V,待機(jī)電流最低值為1微安。具有豐富的片內(nèi)外設(shè),包括5通道DMA,紅外發(fā)生電路,8 路12 位ADC,硬件支持CSMA/CA,AES 安全協(xié)處理器,電

19、池監(jiān)視器和溫度傳感器,具有捕獲功能的32-kHz 睡眠定時器以及2個usart(通用同步異步串行發(fā)送接收器)等。</p><p>  圖5 ZigBee核心板原理圖</p><p>  3.2非接觸式IC卡工作原理</p><p>  非接觸式IC卡電氣部分組僅為一個天線和集成電路卡(ASIC)??ǖ奶炀€由適用于包裝ISO卡的幾個繞組線圈構(gòu)成。集成電路卡是由高速(1

20、06kb波特率)的射頻接口,一個控制單元和一個8K EEPROM(電可擦可編程只讀存儲器-)。非接觸式IC卡的工作原理為,RC522射頻卡讀寫模塊回發(fā)一組固定頻率的電磁信號,而卡片內(nèi)具有一個頻率與RC522讀寫模塊相同頻率的串聯(lián)諧振電路,在電磁信號的激發(fā)下,LC諧振電路將會產(chǎn)生共振,從而使電容內(nèi)存儲了電荷,而電容器的另一極,連接有一個單向?qū)ǖ碾娮颖?,會將充電電容器的電荷送到另一個電容器儲存,當(dāng)所積累的電荷達(dá)到2V,電容器將作為電源為卡

21、片其他電路提供工作電流,將發(fā)出卡片內(nèi)數(shù)據(jù)或讀入RC522模塊數(shù)據(jù)。</p><p>  3.3ZigBee節(jié)點程序</p><p>  上電后CC2530主控芯片初始化RC522模塊,當(dāng)有符合ISO 14443A/MI標(biāo)準(zhǔn)的卡片進(jìn)入讀寫范圍時,RC522模塊通過SPI協(xié)議把數(shù)據(jù)傳遞給CC2530主控芯片,主控芯片把接收到的數(shù)據(jù)打包發(fā)送到協(xié)調(diào)器。程序流程圖如圖6所示。</p>

22、<p>  圖6 ZigBee節(jié)點程序流程圖</p><p>  4.系統(tǒng)主機(jī)設(shè)備設(shè)計與實現(xiàn)</p><p>  主機(jī)設(shè)備由三星6410開發(fā)板和CC2530系統(tǒng)板組成,如圖7所示。S3C6410開發(fā)板和CC2530系統(tǒng)板通過串口進(jìn)行通信,當(dāng)CC2530建立起傳感網(wǎng)絡(luò)后,刷卡節(jié)點會自動加入網(wǎng)絡(luò)。網(wǎng)關(guān)基于Linux3.0內(nèi)核和飛凌嵌入式技術(shù)有限公司提供的文件系統(tǒng)以及QT4.8運行環(huán)境

23、,開發(fā)了ZigBee網(wǎng)關(guān)程序,能夠監(jiān)聽ZigBee協(xié)調(diào)器的串口并且能夠讀寫遠(yuǎn)程或本地數(shù)據(jù)庫。下文將詳細(xì)介紹主機(jī)設(shè)備的開發(fā)過程,包含sqlite數(shù)據(jù)庫移植和嵌入式QT的環(huán)境搭建與開發(fā)。 </p><p>  圖7 ZigBee刷卡考勤網(wǎng)關(guān)設(shè)備</p><p>  4.1 Sqlite數(shù)據(jù)庫移植</p><p>  4.1.1Sqlite數(shù)據(jù)庫移植過程</p>

24、;<p>  SQLite是遵守ACID的,能夠?qū)崿F(xiàn)自包容、零配置、支持實物的、開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對其他數(shù)據(jù)庫非常小的的C語言庫中。其特點是高度便攜、使用方便、結(jié)構(gòu)緊湊、高效、可靠。 SQLite是D.RichardHipp建立的公有領(lǐng)域項目。與其他數(shù)據(jù)庫管理系統(tǒng)不同,SQLite不是常見的客戶端到服務(wù)器模式,SQLite引擎也不是程序與之通信的獨立進(jìn)程,而是連接到程序中成為程序的一個主要部分。所以

25、,SQLite主要的通信協(xié)議是在編程語言內(nèi)通過直接調(diào)用接口函數(shù)來實現(xiàn)。這一方法在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數(shù)據(jù)庫,包括數(shù)據(jù)庫的定義、表、索引和數(shù)據(jù)本身,都在宿主主機(jī)上存儲在一個單一的文件中。</p><p>  SQLite是一款微型嵌入式數(shù)據(jù)庫,目前已經(jīng)有很多嵌入式產(chǎn)品使用了SQLite數(shù)據(jù)庫引擎。SQLite具有占用資源非常的低的有點,在嵌入式系統(tǒng)中可能只需要幾百K的內(nèi)存就夠了。移植步

26、驟如下:</p><p>  1、下載sqlite3源代碼、解壓</p><p>  下載地址為http://www.sqlite.org/sqlite-src-3070900.zip</p><p>  2. 配置SQLite</p><p>  在sqlite目錄下進(jìn)行如下配置:</p><p>  ./confi

27、gure --prefix=/QT/sqlite3 --disable-tcl --host=arm-none-linux-gnueabi</p><p><b>  3. 編譯</b></p><p>  在Shell環(huán)境下使用make命令編譯。</p><p><b>  3. 安裝</b></p>&

28、lt;p>  在Shell環(huán)境下使用make install命令安裝。</p><p>  該命令運行后,會將編譯好的結(jié)果安裝到sqlite-arm文件夾下,在安裝目錄下會生成bin、lib、include文件夾,bin文件夾下是sqlite3可執(zhí)行文件,lib文件夾下包含sqlite3運行所依賴的庫。另外,在編譯包含sqlite數(shù)據(jù)庫的應(yīng)用程序時,必須指明sqlite所依賴的頭文件和庫。</p>

29、;<p><b>  4. 去掉調(diào)試信息</b></p><p>  SQLite完成編譯后,會產(chǎn)生許多調(diào)試信息。如果把編譯見過全部下載到開發(fā)板,會占用目標(biāo)板很多資源。為了減少占用目標(biāo)板Flash和其他資源,可以通過命令來去掉調(diào)試信息。在SQLite安裝目錄下執(zhí)行如下命令:</p><p>  arm-linux-strip bin/*</p>

30、;<p>  arm-linux-strip lib/*</p><p><b>  5. 移植</b></p><p>  命令執(zhí)行后,會去掉編譯結(jié)果的調(diào)試信息,文件大小減小許多。將SQLite安裝目錄下 /bin文件夾下的文件sqlite3拷貝到根文件系目錄下,并將sqlite_arm/lib目錄下的文件拷貝到目標(biāo)板根文件系統(tǒng)的lib目錄下。完成SQ

31、Lite移植工作。</p><p>  4.1.2. SQLite的基本操作命令</p><p><b> ?。?)建立數(shù)據(jù)庫</b></p><p>  sqlite3 gstest.sqlite3</p><p>  命令運行后,在當(dāng)前目錄下建立了名為gstest.sqlite3的數(shù)據(jù)庫。</p>&l

32、t;p><b>  (2)建立數(shù)據(jù)表</b></p><p>  create table call_echo (id INTEGER PRIMARY KEY, name NUMERIC,num NUMERIC,time TEXT,count NUMERIC,charge_rate NUMERIC,charge_sum NUMERIC);</p><p>  建

33、立了名為 call_echo的數(shù)據(jù)表,包含id,name,time,,count,charge_sum,charge_rate七個字段。</p><p> ?。?)向數(shù)據(jù)表中插入數(shù)據(jù)</p><p>  insert into call_echo values ($n,guoshuai,2,'new',4,5,6);</p><p> ?。?)查詢數(shù)

34、據(jù)表中的數(shù)據(jù)</p><p>  select * from call_echo;</p><p> ?。?)修改call_echo表中的數(shù)據(jù)</p><p>  update call_echo set id=99 where id=88;</p><p> ?。?)刪除表中的數(shù)據(jù)記錄</p><p>  delet

35、e from call_echo where id=99;</p><p> ?。?)SQLite中的其它經(jīng)常用到的命令</p><p>  .tables -列出所有的數(shù)據(jù)庫中的數(shù)據(jù)表</p><p>  .schema tablename -列出指定數(shù)據(jù)表的結(jié)構(gòu)</p><p>  .quit -離開數(shù)據(jù)庫</p><

36、p>  4.1.3 SQLite編程介紹</p><p>  Sqlite數(shù)據(jù)庫提供了多種編程語言連接的庫,如PHP,C/C++,JAVA等。下面簡單介紹如何通過C語言編程,實現(xiàn)數(shù)據(jù)庫的創(chuàng)建,以及數(shù)據(jù)庫的各種操作,如表的插入、查詢、刪除等。</p><p> ?。?)打開數(shù)據(jù)庫由sqlite3_open()函數(shù)完成,原型如下:</p><p>  nt sql

37、ite3_open(const char* filename,sqlite3**ppdb);</p><p>  第一個函數(shù)形參用來指定數(shù)據(jù)庫文件名。第二個函數(shù)形參是一個SQLite數(shù)據(jù)庫指針,如果數(shù)據(jù)庫打開成功則返回0,否則返回一個出錯代碼。</p><p> ?。?)關(guān)閉數(shù)據(jù)庫由sqlite3_clos()函數(shù)完成,原型如下: </p><p>  int sq

38、lite3_close(sqlite3*);</p><p>  傳遞的參數(shù)是SQLite數(shù)據(jù)庫指針,用來關(guān)閉指定名稱的數(shù)據(jù)庫,操作成功是返回0,否則返回一個出錯編號。</p><p>  (3)數(shù)據(jù)庫出錯信息由函數(shù)完成,原型如下: </p><p>  int sqlite3_errcode(sqlite3*db);</p><p>  c

39、onst char* sqlite3_errmsg(sqlite3* db);</p><p>  const char* sqlite3_errmsg16(sqlite3* db);</p><p>  上面的函數(shù)都是返回出錯信息的,第一個函數(shù)返回的是最近調(diào)用數(shù)據(jù)庫接口的錯誤代碼。第二個和第三個函數(shù),是返回最近調(diào)用數(shù)據(jù)庫接口的錯誤信息。第二個函數(shù)返回的錯誤信息是用UTF-8編碼的。第三個

40、函數(shù)返回的錯誤信息是用UTF-16編碼的。</p><p> ?。?)數(shù)據(jù)庫SQL語句由sqlite3_exec()函數(shù)完成,原型如下: </p><p>  int sqlite3_exec(sqlite3*,const char*sql,int(*callback)(void*,int,char**,char**),void*,**errmsg);</p><p&g

41、t;  這個函數(shù)是用來執(zhí)行SQLite數(shù)據(jù)庫的SQL語句的。第一個參數(shù)是SQLite數(shù)據(jù)庫指針。第二個參數(shù)是要執(zhí)行的SQL語句字符串。第三個參數(shù)是一個回調(diào)函數(shù),在執(zhí)行查詢操作時用到,其它的操作可以傳空值即NULL。第四個參數(shù)是傳遞給回調(diào)函數(shù)第一個參數(shù)的實參。第五個參數(shù)是一個錯誤信息。</p><p> ?。?)數(shù)據(jù)庫操作的回調(diào)由callback()函數(shù)完成,原型如下:</p><p>  

42、int callback(void*,int argc,char** argv,char** cname);</p><p>  第一個參數(shù)是從sqlite3_exec傳遞過來的參數(shù),可以為任意的類型。第二個參數(shù)是查詢的列數(shù)。第三個參數(shù)是查詢結(jié)果集的值。第四個參數(shù)是列名。</p><p> ?。?)數(shù)據(jù)庫的有專門的查詢函數(shù)sqlite3_get_table(),原型如下:</p>

43、;<p>  int sqlite3_get_table(sqlite3*db,const char* sql,char***result,int *row,int*col,char** errmsg);</p><p>  這個函數(shù)主要是用來查詢的。第一個參數(shù)是數(shù)據(jù)庫描述符指針。第二個參數(shù)是SQL語句。第三個參數(shù)是查詢的結(jié)果集。第四個參數(shù)是結(jié)果集中的行數(shù)。第五個參數(shù)是結(jié)果集中的列數(shù)。第六個參數(shù)是錯

44、誤信息。它查詢出的行數(shù)是從字段名開始的。即第0行是字段名。</p><p> ?。?)SQLite 有許多內(nèi)置函數(shù)用于處理字符串或數(shù)字?jǐn)?shù)據(jù)。</p><p>  下面列出了一些有用的 SQLite 內(nèi)置函數(shù),如表1,且所有函數(shù)都是大小寫不敏感,所以可以使用這些函數(shù)的小寫形式或大寫形式或混合形式。</p><p>  表1 SQLite常用字符串處理函數(shù)</p

45、><p>  4.2QT開發(fā)環(huán)境搭建和移植</p><p>  4.2.1 QT概述</p><p>  Qt是1991年由奇趣科技開發(fā)的跨平臺 C++圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā) GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο笳Z言,易于擴(kuò)展,并且允許組件編程。2008年,奇趣科技被諾基亞公司收購,QT也因此成為諾基亞旗下的編

46、程語言工具。現(xiàn)今,Qt庫已經(jīng)能夠支持windows、linux、MAC、embedded Linux、Windows CE等多種平臺。</p><p>  4.2.2 嵌入式QT開發(fā)平臺搭建</p><p>  正式進(jìn)入 QT開發(fā)流程之前,需要進(jìn)行一系列的 QT環(huán)境搭建工作,Qt環(huán)境搭建流程如圖4所示。由圖8知,QT平臺搭建的最終目標(biāo)包括:</p><p>  ★

47、在 PC機(jī)上安裝 Qt的集成開發(fā)環(huán)境,用于開發(fā)調(diào)試時使用。</p><p>  ★在 PC機(jī)上安裝好交叉編譯版本的 QT編譯環(huán)境,用于 QT程序調(diào)試完畢后的交叉</p><p><b>  編譯、移植時使用。</b></p><p>  ★在 ARM網(wǎng)關(guān)上移植 QT庫,用于支持移植好的 QT程序運行。</p><p

48、>  圖8 嵌入式QT開發(fā)平臺搭建流程</p><p>  4.2.3.QT程序交叉編譯流程</p><p>  完整的嵌入式Qt應(yīng)用程序從開發(fā)到能夠應(yīng)用的流程如圖9所示。交叉編譯,簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。這里所謂平臺,實際上包含兩個概念:體系結(jié)(Architecture)、操作系統(tǒng)(Operating System)。同一個體系結(jié)構(gòu)可以運行不同的操作

49、系統(tǒng);同樣,同一個操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運行。本文所用的交叉編譯方法,即為在我們常說的Intel x86體系結(jié)構(gòu)的linux操作系統(tǒng)中編譯生成可以在ARM體系結(jié)構(gòu)中運行的代碼。</p><p>  圖9 嵌入式Qt應(yīng)用程序開發(fā)流程</p><p>  4.2.4 QT編程</p><p>  在QT中沒有特定的串口控制類,而系統(tǒng)主機(jī)和ZigBee網(wǎng)絡(luò)的協(xié)調(diào)

50、器通過UART連接,所以采用第三方串口控制類qextserialport進(jìn)行開發(fā)。程序流程為如圖8所示,網(wǎng)關(guān)上電后,對設(shè)備進(jìn)行初始化,然后開始監(jiān)聽ZigBee串口,當(dāng)有刷卡節(jié)點的數(shù)據(jù)傳遞進(jìn)來,判斷數(shù)據(jù)是否合法,如果不合法則丟棄,反之則對有效數(shù)據(jù)進(jìn)行格式化處理,寫入數(shù)據(jù)庫。軟件運行效果圖如圖10所示。</p><p>  圖10嵌入式網(wǎng)關(guān)程序流程圖和運行效果圖</p><p><b&g

51、t;  5. 總結(jié)</b></p><p>  本系統(tǒng)在傳統(tǒng)IC卡考勤系統(tǒng)的基礎(chǔ)上,將ZigBee無線通信技術(shù)引入到考勤系統(tǒng)中,提出基于ZigBee無線通信技術(shù)的嵌入式考勤系統(tǒng)的設(shè)計方案。給出了其硬件系統(tǒng)組成和軟件設(shè)計流程。該系統(tǒng)主要有IC卡讀寫模塊,發(fā)射接收模塊和嵌入式系統(tǒng)主機(jī)組成,實現(xiàn)了低成本、低功耗,能夠?qū)嶋H應(yīng)用于員工考勤系統(tǒng)。</p><p><b>  致

52、謝</b></p><p>  首先感謝我的指導(dǎo)老師XXX講師,他的嚴(yán)謹(jǐn)負(fù)責(zé)的治學(xué)態(tài)度,一絲不茍的工作作風(fēng)對我產(chǎn)生很大的影響。一直是我工作、學(xué)習(xí)中的榜樣。在金中朝老師教導(dǎo)下,我在學(xué)校已經(jīng)踏入了嵌入式開發(fā)領(lǐng)域,接觸了實際項目開發(fā),對我將來的學(xué)習(xí)和工作打下了良好基礎(chǔ)。承蒙X老師親切的關(guān)懷和精心的指導(dǎo),特別是給我提供了創(chuàng)新學(xué)習(xí)的環(huán)境和平臺,讓我接觸了許多新興技術(shù),使我獲益匪淺。</p><

53、;p>  還要感謝我的父母家人。時光如白駒過隙,回想童年生活,仿佛就在昨日,只是驀然回首時,才發(fā)現(xiàn)曾經(jīng)依靠的肩膀已經(jīng)變得孱弱。感謝他們,讓我總是能夠在脆弱的時候重新變得堅強(qiáng),讓我在最失意的時候也能夠找回自信,讓我在迷茫彷徨時,也始終找得到人生的方向。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] IEEE802.15.4, ZigBe

54、e[S].</p><p>  [2] 黃河.基于ARM的嵌入式無線ZigBee網(wǎng)關(guān)的設(shè)計與實現(xiàn)[D].上海大學(xué), 2007.</p><p>  [3] 李建坡 朱緒寧 隋吉生. 基于ZigBee技術(shù)的無線指紋考勤系統(tǒng)[J]. 東北電力大學(xué)學(xué)報, 2009, 29(6).</p><p>  [4] Blanchette J. C++ GUI Qt 4編程[M].

55、 電子工業(yè)出版社, 2013.</p><p>  [5] 蔣挺, 趙成林. 紫蜂技術(shù)及其應(yīng)用[M]. 北京郵電大學(xué)出版社, 2006.</p><p>  [6] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊[M].人民郵電出版社,2008.</p><p>  [7] 金純, 羅祖秋. ZigBee技術(shù)基礎(chǔ)及案例分析[M]. 國防工業(yè)出版社, 2008.</p

56、><p>  Design of wireless attendance system based on ZigBee Technology</p><p>  Abstract:System based on ZigBee network protocol and embedded system, the card equipment and attendance statistics sy

57、stem separation, network construction isconvenient, easy to install and disassemble, expansion is good, without wiring,can reduce the fault line loss and inconvenience, improve the reliability and stability of the system

58、. And completed the construction and optimization of ZigBee network, embedded database Sqlite transplant and embedded QT development.</p><p>  Keywords:ZigBee,RF card attendance, embedded gateway</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論