freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于zigbee的空氣質(zhì)量檢測儀設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-資料下載頁

2025-07-14 19:20本頁面
  

【正文】 nit( taskID++ )。 //APS_Init(3) ZDApp_Init( taskID++ )。 //ZDApp_Init(4) SAPI_Init( taskID )。 //SAPI_Init(5)} 操作系統(tǒng)執(zhí)行程序設(shè)計(jì)ZStack中的操作系統(tǒng)是利用事件優(yōu)先級順序執(zhí)行的輪流查詢、循環(huán)處理的系統(tǒng)。當(dāng)完成上述初始化后,開始執(zhí)行osal_start_system()函數(shù),這樣運(yùn)行OSAL系統(tǒng)就開始正式運(yùn)行。Zstack所有的子系統(tǒng)都作為OSAL的一個任務(wù)來執(zhí)行,因此,在開發(fā)應(yīng)用層的時(shí)候,需要通過創(chuàng)建OSAL任務(wù)來運(yùn)行應(yīng)用程序。我們利用osalInitTasks( )函數(shù)來創(chuàng)建OSAL的任務(wù),其中TaskID表示為每個任務(wù)的標(biāo)識號。任何OSAL任務(wù)必須分為兩步:(1)進(jìn)行任務(wù)執(zhí)行前準(zhǔn)備;(2)是執(zhí)行處理任務(wù)事件。任務(wù)執(zhí)行前準(zhǔn)備程序已經(jīng)在系統(tǒng)初始化中給出。下面主要講的就是如何進(jìn)行任務(wù)事件的處理。首先,對要處理的目標(biāo)事件是通過創(chuàng)建“YonghuName_ProcessEvent( )“函數(shù)完成OSAL任務(wù)處理事件的創(chuàng)建。然后,就開始進(jìn)入輪循式事件處理,先比較事件優(yōu)先級,按照優(yōu)先級調(diào)用事件處理函數(shù)進(jìn)行事件處理。直到所有的事件全部處理完畢。最后,由工作模式轉(zhuǎn)入低功耗的休眠模式。OSAL任務(wù)包括強(qiáng)制事件(Mandatory Events),SYS_EVENT_MSG( )是強(qiáng)制事件之一[[] Xiaoqi Zhuang,Lijun Zhang,Min Embedded System of Bridge Stress Monitoring Based on ARM9 and Zigbee. Electrical and Control Engineering,International Conference on , 2014,09:348351.]。除此之外,我們還可以自己定義15個事件。下面操作系統(tǒng)執(zhí)行流程框圖,如圖54所示。圖 54 執(zhí)行操作系統(tǒng)流程圖與流程框圖對應(yīng)的執(zhí)行代碼如下所示:void osal_start_system( void ){ for(。) // 死循環(huán) {do {if (tasksEvents[idx]) {break。 } // 得到待處理的最高優(yōu)先級任務(wù)索引號 idx } while (++idx tasksCnt)。 if (idx tasksCnt) {HAL_ENTER_CRITICAL_SECTION(intState)。 //進(jìn)入臨界區(qū) events = tasksEvents[idx]。 //查找待處理的事件 tasksEvents[idx] = 0。 // 清除本次任務(wù)的事件 HAL_EXIT_CRITICAL_SECTION(intState)。 //退出臨界區(qū) events = (tasksArr[idx])( idx, events )。 //調(diào)用處理函數(shù) HAL_ENTER_CRITICAL_SECTION(intState)。 //進(jìn)入臨界區(qū) tasksEvents[idx] |= events。 // 保存未處理的事件 HAL_EXIT_CRITICAL_SECTION(intState)。 //退出臨界區(qū) }}}ZStack中的操作系統(tǒng)是利用事件優(yōu)先級順序執(zhí)行的輪流查詢、循環(huán)處理的系統(tǒng)。在ZStack的事件處理中有三種任務(wù)事件處理函數(shù),每種函數(shù)分別擔(dān)任不同類型的任務(wù)處理。這三種任務(wù)事件處理函數(shù)分別是:SAPI_ProcessEvent( )函數(shù)、ZDApp_event_loop( ) 函數(shù)和Hal_ProcessEvent( )函數(shù)[[] [J].物聯(lián)網(wǎng)技術(shù),2011,03:7173.]。任務(wù)處理事件處理函數(shù)如下: SAPI 任務(wù)事件處理函數(shù)SAPI 任務(wù)事件處理函數(shù)是由SAPI_ProcessEvent( )控制,主要處理允許綁定時(shí)間事件、綁定時(shí)間事件、系統(tǒng)消息事件、進(jìn)入事件和用戶事件。如圖55所示。圖 55 SAPI 任務(wù)事件處理函數(shù) Hal 任務(wù)事件處理函數(shù)Hal任務(wù)事件處理函數(shù)是由函數(shù)Hal_ProcessEvent()控制實(shí)現(xiàn)的,該函數(shù)負(fù)責(zé)LED閃爍事件、按鍵事件和系統(tǒng)消息事件的處理。如圖56所示。圖 56 Hal 任務(wù)事件處理函數(shù) ZDApp 任務(wù)事件處理函數(shù)ZDApp 任務(wù)事件處理函數(shù)是由ZDApp_event_loop()控制,該函數(shù)主要負(fù)責(zé)ZDO狀態(tài)改變事件、網(wǎng)絡(luò)形成事件處理、系統(tǒng)消息事件、路由啟動事件、網(wǎng)絡(luò)啟動事件、網(wǎng)絡(luò)更新NV 事件和設(shè)備重啟事件的處理。如圖57所示。圖 57 ZDApp 任務(wù)事件處理函數(shù) PC上位機(jī)程序設(shè)計(jì) VC++軟件簡介Visual C++ ,是微軟公司發(fā)布的一種C++編譯器。VC不僅僅是C++編譯器,更是一個編程語言的開發(fā)環(huán)境。VC++是一款功能強(qiáng)大的、可看見的、通用的、和諧的、集成的開發(fā)環(huán)境。Developer Studio是一個和諧的程序編寫環(huán)境。但它并不是專門用于VC的,它也同樣用于VB,VJ,VID等編程語言[[] 郭云,陳圣林. 基于USB總線的溫度采集——應(yīng)用程序設(shè)計(jì)[J]. 科技致富向?qū)?2013,21:125.]。MFC是微軟基礎(chǔ)類庫的簡稱,是微軟公司提供的c++類庫。它包含了大部分的windows API函數(shù),并且擁有一個應(yīng)用程序框架。除此之外,包含的類包含許多句柄、內(nèi)建控件和組件的封裝類。這樣可以減少編程人員的任務(wù)量。PlatformSDK是Visual C++和整個Visual Studio的精華和靈魂。SDK是編寫應(yīng)用程序的開發(fā)工具包的集合,它是由程序員編寫數(shù)據(jù)包、架構(gòu)包、平臺包、操作系統(tǒng)包等組成的。大致說來,Platform SDK是以Microsoft C/C++編譯器為核心,配合MASM工作,輔助的工具和文檔資料集合。 上位機(jī)設(shè)計(jì)實(shí)現(xiàn)PC上位機(jī)程序是利用Visual C++ 。Zigbee的協(xié)調(diào)器是通過USB數(shù)據(jù)線連接電腦串口,因此需要電腦端安裝串口轉(zhuǎn)USB驅(qū)動程序,然后,協(xié)調(diào)器將通過無線網(wǎng)絡(luò)接收到的信息傳送到電腦PC端。因此,該上位機(jī)程序是通過編程實(shí)現(xiàn)從電腦串口讀取信息,然后,通過運(yùn)算將接受到的信息進(jìn)行輸出顯示[[] Zhenli ZHANG,Fazhu ZHOU,Yuming Routing AlgorithmBased on Energy Awareness and Energy Balance. Consumer Electronics,Communications and Networks (CECNet) , 2012,17:421426. ]。檢測人員就可以通過電腦對傳感器節(jié)點(diǎn)進(jìn)行實(shí)時(shí)的監(jiān)控。下面就是上位機(jī)程序運(yùn)行結(jié)果,如圖58所示。圖 58 PC電腦上位機(jī)程序下面介紹上位機(jī)的顯示窗口的組成部分,上位機(jī)程序主界面如圖59所示:標(biāo)題欄,標(biāo)有名稱“室內(nèi)空氣質(zhì)量檢測儀——T111齊利剛”,名稱左側(cè)有該程序的應(yīng)用圖標(biāo),右側(cè)有關(guān)閉窗口的按鈕。終端1和終端2,終端1有兩個板塊組成,一個板塊是溫濕度顯示,另一板塊分是氣體質(zhì)量顯示。溫濕度顯示板塊左側(cè)有個像溫度計(jì)一樣的顯示窗口,此窗口可以根據(jù)接收到的數(shù)據(jù)模擬溫度變化。右側(cè)是由兩個輸出文本框組成,分別標(biāo)有溫度和濕度。所對應(yīng)的文本框接收串口信息,并顯示溫濕度具體的數(shù)值。終端2同終端1完全相同。窗體右上側(cè)是溫度和濕度的變化趨勢圖。下面有個二選一選擇項(xiàng),分別標(biāo)有溫度趨勢和濕度趨勢。當(dāng)你選中溫度趨勢的話,就會出現(xiàn)溫度趨勢圖,包括一個坐標(biāo)軸,X軸標(biāo)的是測量時(shí)間的坐標(biāo)(040)秒,Y軸標(biāo)的是溫度(0176。40176。)。如果你選擇的是濕度趨勢,就會出現(xiàn)濕度趨勢圖,同樣,X軸表示時(shí)間軸(040)秒,Y軸表示的是空氣的濕度(0100)。系統(tǒng)設(shè)置。系統(tǒng)設(shè)置模塊在窗體的右下側(cè),包括串口設(shè)置、網(wǎng)絡(luò)服務(wù)、操作提示和刷新操作四部分。串口設(shè)置包括一個串口下拉選擇按鈕,一個串口打開按鈕鍵和一個串口狀態(tài)指示燈。網(wǎng)絡(luò)服務(wù)包括一個網(wǎng)絡(luò)地址輸入窗口,一個啟動網(wǎng)絡(luò)服務(wù)按鍵和一個網(wǎng)絡(luò)狀態(tài)指示燈,這個部分主要是為Android手機(jī)客戶端應(yīng)用程序連接網(wǎng)絡(luò)服務(wù)。操作輸出部分有操作提示標(biāo)簽、操作提示窗口,可以對每步操作進(jìn)行提示。最后,就是刷新部分。刷新部分分為手動刷新按鍵和自動刷新按鍵。當(dāng)點(diǎn)擊手動刷新按鍵,每點(diǎn)一次就將接受到的數(shù)據(jù)刷新一次進(jìn)行顯示,當(dāng)點(diǎn)擊自動刷新按鍵,系統(tǒng)就會自動的對數(shù)據(jù)進(jìn)行刷新,每隔特定的時(shí)間就會刷新一次,當(dāng)然,刷新的時(shí)間是可以根據(jù)自己的需要進(jìn)行設(shè)置。 圖 59 上位機(jī)程序顯示窗口用鼠標(biāo)指向標(biāo)題欄,然后右擊就會彈出一個菜單,顯示關(guān)閉、移動和關(guān)于。選中關(guān)于就會彈出一個窗口。如圖510所示。窗口標(biāo)題為“關(guān)于 空氣質(zhì)量檢測儀”,內(nèi)容為“ 齊齊哈爾大學(xué) 版權(quán)所有吧(C) 2015”,左側(cè)為應(yīng)用圖標(biāo),右側(cè)是個“確定”按鈕。點(diǎn)擊確定就會關(guān)閉窗體。圖 410 關(guān)于窗口由于本設(shè)計(jì)采用了兩個Zigbee節(jié)點(diǎn),所以有終端1和終端2兩個節(jié)點(diǎn)模塊。每個Zigbee節(jié)點(diǎn)檢測室內(nèi)空氣質(zhì)量的三個技術(shù)指標(biāo),物理屬性溫度、濕度和化學(xué)屬性氨氣以及本化合物等污染物。這三個數(shù)據(jù)分別是由DHT111溫濕度傳感器和MQ135傳感器進(jìn)行數(shù)據(jù)的采集,然后,傳送到Zigbee節(jié)點(diǎn)。通過Zigbee無線網(wǎng)絡(luò),再發(fā)給Zigbee協(xié)調(diào)器。協(xié)調(diào)器通過USB數(shù)據(jù)線傳送給PC機(jī)。最后,就是由上位機(jī)程序讀取并顯示所接受到的數(shù)據(jù)。這樣,基于Zigbee的室內(nèi)空氣質(zhì)量檢測儀就基本搭建完成。 Android應(yīng)用程序設(shè)計(jì) 軟件介紹Android是一種基于Linux的自由并且開放源代碼的操作系統(tǒng)。該系統(tǒng)是由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)并開發(fā)的。Android系統(tǒng)由四層組成,一是應(yīng)用程序?qū)?,二是?yīng)用程序框架層,三是系統(tǒng)運(yùn)行庫層,四是Linux內(nèi)核層。安卓平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件四部分組成。主要用在移動終端設(shè)備,如:智能手機(jī)、平板和手表等安卓設(shè)備。Android開發(fā)環(huán)境的搭建是由JDK(Java Development Kit)、Eclipse和Android SDK組成。JDK是Java語言的編程的數(shù)據(jù)包。沒有JDK的話,就無法編譯Java程序。Eclipse開發(fā)環(huán)境是來源于Java語言,它的源代碼對外開發(fā)。Eclipse可以通過擴(kuò)展組件來完善自己的編程環(huán)境?,F(xiàn)在,已經(jīng)有比如C/C++、PHP、Android等組件。Android SDK指的是安卓語言編程數(shù)據(jù)包,不用安裝,解壓即可。使用Eclipse進(jìn)行安卓程序編寫需要添加adt組件,這樣Eclipse就可以和android sdk建立聯(lián)系[[] 殷西祥,趙思琪,秦曉安,[J].電腦知識與技術(shù),2014,15:35923594+3587.附錄1Zigbee協(xié)調(diào)器實(shí)物圖:Zigbee傳感器節(jié)點(diǎn)實(shí)物圖:附錄2主程序:int main( void ){ osal_int_disable( INTS_ALL )。 // 關(guān)閉所有中斷 HAL_BOARD_INIT( )。 // 初始化系統(tǒng)時(shí)鐘 zmain_vdd_check( )。 // 檢查芯片電壓是否正常 zmain_ram_init( )。 // 初始化堆棧 InitBoard( OB_COLD )。 // 初始化 I/O,LED、 Timer 等 HalDriverInit( )。 // 初始化芯片各硬件模塊 osal_nv_init( NULL )。 // 初始化 Flash 存儲器 zmain_ext_addr( )。 // 確定 IEEE 地址 zgInit( )。 //初始化非易失變量 ZMacInit( )。 // 初始化 MAC 層 osal_init_system( )。 //初始化操作系統(tǒng) osal_int_enable( INTS_ALL )。 //使能全部中斷 InitBoard( OB_READY )。 //初始化按鍵 zmain_dev_info( )。 //顯示設(shè)備信息 osal_start_system( )。 //執(zhí)行操作系統(tǒng)}系統(tǒng)初始化程序:osal_init_system(void){ osal_mem_init()。 // 初始化內(nèi)存分配系統(tǒng)osal_qHead = NULL。 // 初始化消息隊(duì)列 osalTimerInit()。 // 初始化定時(shí)器 osal_pwrmgr_init()。 // 初始化電源管理系統(tǒng)osalInitTasks()。 //初始化系統(tǒng)的任務(wù) osal_mem_kick()。 // 設(shè)置有效的搜索堆的第一個空閑塊. return (SUCCESS)。}任務(wù)初始化程序:void osalInitTasks( void ){ uint8 taskID = 0。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1