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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

6、。主機(jī)基于Linux3.0內(nèi)核和飛凌嵌入式技術(shù)有限公司提供的文件系統(tǒng)以及QT4.8運(yùn)行環(huán)境,開(kāi)發(fā)了ZigBee網(wǎng)關(guān)程序,能夠監(jiān)聽(tīng)ZigBee協(xié)調(diào)器的串口并且能夠保存數(shù)據(jù)到本地?cái)?shù)據(jù)庫(kù)。</p><p>  圖1 ZigBee無(wú)線考勤系統(tǒng)效果圖</p><p>  2. ZigBee協(xié)議棧簡(jiǎn)介</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é)議的具體實(shí)現(xiàn)形式。協(xié)議棧是協(xié)議和用戶(hù)之間的一個(gè)接口,開(kāi)發(fā)人員通過(guò)使用協(xié)議棧來(lái)使用這個(gè)協(xié)議的,進(jìn)而實(shí)現(xiàn)無(wú)線數(shù)據(jù)收發(fā)。 圖2展示了ZigBee無(wú)線網(wǎng)絡(luò)協(xié)議層的架構(gòu)圖。ZigBee的協(xié)議分為兩部分,IEEE 802.15.4定義了物理層和介質(zhì)訪問(wèn)層技術(shù)規(guī)范,ZigBee聯(lián)盟定義了網(wǎng)絡(luò)層、應(yīng)用程序支持子層、應(yīng)用層技術(shù)規(guī)范。Zi

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

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

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

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

12、備,稱(chēng)為終端設(shè)備,直接與ZigBee協(xié)調(diào)器進(jìn)行通信。在樹(shù)狀和網(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ò)可以通過(guò)ZigBee路由器進(jìn)行擴(kuò)展。樹(shù)型網(wǎng)絡(luò)中,路由器使用一個(gè)分層路由策略傳輸數(shù)據(jù)和控制信息在網(wǎng)絡(luò)中。樹(shù)型網(wǎng)絡(luò)可以使用IEEE 802.15.4-2003標(biāo)準(zhǔn)化通信信標(biāo)。網(wǎng)狀網(wǎng)絡(luò)允許完全的點(diǎn)對(duì)點(diǎn)通信。在網(wǎng)狀網(wǎng)絡(luò)拓?fù)渲?,ZigBee路由器將不定期發(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ò)是一個(gè)簡(jiǎn)單的、低成本的通信網(wǎng)絡(luò),它應(yīng)用于一些功率有限和對(duì)網(wǎng)絡(luò)吞吐量無(wú)嚴(yán)格要求的設(shè)備之間的無(wú)線連接。ZigBee網(wǎng)絡(luò)的目標(biāo)是建立一個(gè)易于安裝、有可靠的數(shù)據(jù)傳輸、通信距離短、成本低、非常好的電池壽命這樣的一個(gè)網(wǎng)絡(luò),并且它能保持簡(jiǎn)單的和靈活的網(wǎng)絡(luò)協(xié)議。</p>&

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

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

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

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

18、找到合適的解決方案,從而加快開(kāi)發(fā)進(jìn)程。同時(shí)CC2530片上系統(tǒng)是一具有增強(qiáng)型工業(yè)標(biāo)準(zhǔn)8051單片機(jī),并集成了無(wú)線收發(fā)功能。CC2530片上系統(tǒng)具有非常低的待機(jī)功耗,在普通干電池的驅(qū)動(dòng)下能夠穩(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 睡眠定時(shí)器以及2個(gè)usart(通用同步異步串行發(fā)送接收器)等。</p><p>  圖5 ZigBee核心板原理圖</p><p>  3.2非接觸式IC卡工作原理</p><p>  非接觸式IC卡電氣部分組僅為一個(gè)天線和集成電路卡(ASIC)??ǖ奶炀€由適用于包裝ISO卡的幾個(gè)繞組線圈構(gòu)成。集成電路卡是由高速(1

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

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

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

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

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

25、,SQLite主要的通信協(xié)議是在編程語(yǔ)言?xún)?nèi)通過(guò)直接調(diào)用接口函數(shù)來(lái)實(shí)現(xiàn)。這一方法在消耗總量、延遲時(shí)間和整體簡(jiǎn)單性上有積極的作用。整個(gè)數(shù)據(jù)庫(kù),包括數(shù)據(jù)庫(kù)的定義、表、索引和數(shù)據(jù)本身,都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件中。</p><p>  SQLite是一款微型嵌入式數(shù)據(jù)庫(kù),目前已經(jīng)有很多嵌入式產(chǎn)品使用了SQLite數(shù)據(jù)庫(kù)引擎。SQLite具有占用資源非常的低的有點(diǎn),在嵌入式系統(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>  該命令運(yùn)行后,會(huì)將編譯好的結(jié)果安裝到sqlite-arm文件夾下,在安裝目錄下會(huì)生成bin、lib、include文件夾,bin文件夾下是sqlite3可執(zhí)行文件,lib文件夾下包含sqlite3運(yùn)行所依賴(lài)的庫(kù)。另外,在編譯包含sqlite數(shù)據(jù)庫(kù)的應(yīng)用程序時(shí),必須指明sqlite所依賴(lài)的頭文件和庫(kù)。</p>

29、;<p><b>  4. 去掉調(diào)試信息</b></p><p>  SQLite完成編譯后,會(huì)產(chǎn)生許多調(diào)試信息。如果把編譯見(jiàn)過(guò)全部下載到開(kāi)發(fā)板,會(huì)占用目標(biāo)板很多資源。為了減少占用目標(biāo)板Flash和其他資源,可以通過(guò)命令來(lái)去掉調(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í)行后,會(huì)去掉編譯結(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ù)庫(kù)</b></p><p>  sqlite3 gstest.sqlite3</p><p>  命令運(yùn)行后,在當(dāng)前目錄下建立了名為gstest.sqlite3的數(shù)據(jù)庫(kù)。</p>&l

32、t;p><b> ?。?)建立數(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七個(gè)字段。</p><p> ?。?)向數(shù)據(jù)表中插入數(shù)據(jù)</p><p>  insert into call_echo values ($n,guoshuai,2,'new',4,5,6);</p><p> ?。?)查詢(xún)數(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ù)庫(kù)中的數(shù)據(jù)表</p><p>  .schema tablename -列出指定數(shù)據(jù)表的結(jié)構(gòu)</p><p>  .quit -離開(kāi)數(shù)據(jù)庫(kù)</p><

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

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

38、lite3_close(sqlite3*);</p><p>  傳遞的參數(shù)是SQLite數(shù)據(jù)庫(kù)指針,用來(lái)關(guān)閉指定名稱(chēng)的數(shù)據(jù)庫(kù),操作成功是返回0,否則返回一個(gè)出錯(cuò)編號(hào)。</p><p> ?。?)數(shù)據(jù)庫(kù)出錯(cuò)信息由函數(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ù)都是返回出錯(cuò)信息的,第一個(gè)函數(shù)返回的是最近調(diào)用數(shù)據(jù)庫(kù)接口的錯(cuò)誤代碼。第二個(gè)和第三個(gè)函數(shù),是返回最近調(diào)用數(shù)據(jù)庫(kù)接口的錯(cuò)誤信息。第二個(gè)函數(shù)返回的錯(cuò)誤信息是用UTF-8編碼的。第三個(gè)

40、函數(shù)返回的錯(cuò)誤信息是用UTF-16編碼的。</p><p> ?。?)數(shù)據(jù)庫(kù)SQL語(yǔ)句由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;  這個(gè)函數(shù)是用來(lái)執(zhí)行SQLite數(shù)據(jù)庫(kù)的SQL語(yǔ)句的。第一個(gè)參數(shù)是SQLite數(shù)據(jù)庫(kù)指針。第二個(gè)參數(shù)是要執(zhí)行的SQL語(yǔ)句字符串。第三個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),在執(zhí)行查詢(xún)操作時(shí)用到,其它的操作可以傳空值即NULL。第四個(gè)參數(shù)是傳遞給回調(diào)函數(shù)第一個(gè)參數(shù)的實(shí)參。第五個(gè)參數(shù)是一個(gè)錯(cuò)誤信息。</p><p> ?。?)數(shù)據(jù)庫(kù)操作的回調(diào)由callback()函數(shù)完成,原型如下:</p><p>  

42、int callback(void*,int argc,char** argv,char** cname);</p><p>  第一個(gè)參數(shù)是從sqlite3_exec傳遞過(guò)來(lái)的參數(shù),可以為任意的類(lèi)型。第二個(gè)參數(shù)是查詢(xún)的列數(shù)。第三個(gè)參數(shù)是查詢(xún)結(jié)果集的值。第四個(gè)參數(shù)是列名。</p><p> ?。?)數(shù)據(jù)庫(kù)的有專(zhuān)門(mén)的查詢(xún)函數(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>  這個(gè)函數(shù)主要是用來(lái)查詢(xún)的。第一個(gè)參數(shù)是數(shù)據(jù)庫(kù)描述符指針。第二個(gè)參數(shù)是SQL語(yǔ)句。第三個(gè)參數(shù)是查詢(xún)的結(jié)果集。第四個(gè)參數(shù)是結(jié)果集中的行數(shù)。第五個(gè)參數(shù)是結(jié)果集中的列數(shù)。第六個(gè)參數(shù)是錯(cuò)

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

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

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

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

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

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

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

51、t;  5. 總結(jié)</b></p><p>  本系統(tǒng)在傳統(tǒng)IC卡考勤系統(tǒng)的基礎(chǔ)上,將ZigBee無(wú)線通信技術(shù)引入到考勤系統(tǒng)中,提出基于ZigBee無(wú)線通信技術(shù)的嵌入式考勤系統(tǒng)的設(shè)計(jì)方案。給出了其硬件系統(tǒng)組成和軟件設(shè)計(jì)流程。該系統(tǒng)主要有IC卡讀寫(xiě)模塊,發(fā)射接收模塊和嵌入式系統(tǒng)主機(jī)組成,實(shí)現(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)對(duì)我產(chǎn)生很大的影響。一直是我工作、學(xué)習(xí)中的榜樣。在金中朝老師教導(dǎo)下,我在學(xué)校已經(jīng)踏入了嵌入式開(kāi)發(fā)領(lǐng)域,接觸了實(shí)際項(xiàng)目開(kāi)發(fā),對(duì)我將來(lái)的學(xué)習(xí)和工作打下了良好基礎(chǔ)。承蒙X老師親切的關(guān)懷和精心的指導(dǎo),特別是給我提供了創(chuàng)新學(xué)習(xí)的環(huán)境和平臺(tái),讓我接觸了許多新興技術(shù),使我獲益匪淺。</p><

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

54、e[S].</p><p>  [2] 黃河.基于ARM的嵌入式無(wú)線ZigBee網(wǎng)關(guān)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海大學(xué), 2007.</p><p>  [3] 李建坡 朱緒寧 隋吉生. 基于ZigBee技術(shù)的無(wú)線指紋考勤系統(tǒng)[J]. 東北電力大學(xué)學(xué)報(bào), 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)用開(kāi)發(fā)完全手冊(cè)[M].人民郵電出版社,2008.</p><p>  [7] 金純, 羅祖秋. ZigBee技術(shù)基礎(chǔ)及案例分析[M]. 國(guó)防工業(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論