Z-Stack運行機制的實驗教學(xué)探究
發(fā)布時間:2021-02-17 05:49
無線傳感器網(wǎng)絡(luò)課程中ZigBee技術(shù)開發(fā)是重要教學(xué)內(nèi)容,本文分析了ZigBee實驗過程中Z-Stack運行原理和機制,通過對Z-Stack工程文件分析以及對比部分實驗探討,進(jìn)一步幫助學(xué)生理解OASL運行調(diào)度機制,提高學(xué)生應(yīng)用Z-Stack進(jìn)行ZiBee技術(shù)開發(fā)的能力。
【文章來源】:電子制作. 2020,(20)
【文章頁數(shù)】:3 頁
【圖文】:
Z-Stack工程文件目錄結(jié)構(gòu)
我們再設(shè)計一個實驗,具體要求是在串口實驗實現(xiàn)的功能基礎(chǔ)上,添加按鍵功能,每當(dāng)按鍵按下時,串口顯示出按鍵信息。這在CC2530基礎(chǔ)實驗中,是很容易實現(xiàn)的。只要配置好輸入輸出口,采用輪詢或中斷方式,使用按鍵檢測代碼,就可檢測按鍵是否按下。在Z-Stack里,采用的思路也是完全不一樣。本文具體分析Z-Stack采用按鍵輪詢的方式進(jìn)行按鍵功能的設(shè)計。初始化是必不可少的,Z-Stack里提供了初始化按鍵的函數(shù)HalKeyInit(),調(diào)用此函數(shù)即可進(jìn)行初始化GPIO,但要在宏定義里,修改定義的引腳為用作按鍵的引腳(比如使用P0.5作為按鍵輸入)。HalkeyPoll()函數(shù)是按鍵檢測函數(shù),檢測是哪個按鍵以及按鍵是否按下。如果在CC2530基礎(chǔ)實驗里,我們可以通過循環(huán)語句來進(jìn)行輪詢。但在Z-Stack中是通過事件來驅(qū)動的OASL進(jìn)行輪詢。按鍵查找的是在HAL層進(jìn)行,Z-Stack在HAL層定義一個按鍵事件HAL_KEY_EVENT,此層初始化時,需要通過函數(shù)osal_set_event()把此定義的按鍵事件添加進(jìn)去,OSAL循環(huán)運行中檢測到按鍵事件是否發(fā)生,如發(fā)生按鍵事件,HAL層處理函數(shù)Hal_ProcessEvent()會調(diào)用HalkeyPoll()函數(shù),對按鍵進(jìn)行檢測,從而檢測到按鍵狀態(tài)。為了達(dá)到定時輪詢,可以通過osal_start_timerEx()函數(shù)設(shè)置定時觸發(fā)按鍵事件HAL_KEY_EVENT,這樣,就相當(dāng)于定時掃描是否有按鍵按下,獲得按鍵信息。按鍵獲得的信息是在HAL層獲得的,但是按鍵處理通常是在APP層,那么APP層又如何獲得按鍵信息的呢?Z-Stack里提供了OnBoard_SendKeys()函數(shù),這個函數(shù)的功能就是將按鍵的值和按鍵的狀態(tài)進(jìn)行打包,然后發(fā)送到應(yīng)用層。在APP應(yīng)用層,處理函數(shù)里進(jìn)行解包,就獲得按鍵的信息,調(diào)用按鍵處理程序進(jìn)行處理。運行結(jié)果如圖2所示。由此可見,Z-Stack里是把按鍵作為一個事件來處理,需要把按鍵進(jìn)行注冊,不斷產(chǎn)生事件,讓OASL循環(huán)調(diào)用按鍵檢測,獲得按鍵信息,并傳送到應(yīng)用層。當(dāng)有按鍵按下時,觸發(fā)按鍵事件,然后調(diào)用事件處理函數(shù)進(jìn)行按鍵處理,所以Z-Stack必須依賴OASL才能運行,不管在那一層,都可讓OASL進(jìn)行調(diào)度。
【參考文獻(xiàn)】:
期刊論文
[1]基于Z-Stack的ZigBee協(xié)議棧組網(wǎng)過程研究[J]. 何智勇,徐麗萍. 南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報. 2018(01)
[2]ZigBee技術(shù)在開放性實驗教學(xué)中的應(yīng)用[J]. 李洋,章韻. 無線互聯(lián)科技. 2016(12)
[3]面向ZigBee技術(shù)的教學(xué)實驗平臺[J]. 郭偉然,湯勇明. 電氣電子教學(xué)學(xué)報. 2014(01)
[4]Z-Stack剖析及其在無線測溫網(wǎng)絡(luò)中的應(yīng)用[J]. 張奇松,尹航. 計算機系統(tǒng)應(yīng)用. 2009(02)
本文編號:3037524
【文章來源】:電子制作. 2020,(20)
【文章頁數(shù)】:3 頁
【圖文】:
Z-Stack工程文件目錄結(jié)構(gòu)
我們再設(shè)計一個實驗,具體要求是在串口實驗實現(xiàn)的功能基礎(chǔ)上,添加按鍵功能,每當(dāng)按鍵按下時,串口顯示出按鍵信息。這在CC2530基礎(chǔ)實驗中,是很容易實現(xiàn)的。只要配置好輸入輸出口,采用輪詢或中斷方式,使用按鍵檢測代碼,就可檢測按鍵是否按下。在Z-Stack里,采用的思路也是完全不一樣。本文具體分析Z-Stack采用按鍵輪詢的方式進(jìn)行按鍵功能的設(shè)計。初始化是必不可少的,Z-Stack里提供了初始化按鍵的函數(shù)HalKeyInit(),調(diào)用此函數(shù)即可進(jìn)行初始化GPIO,但要在宏定義里,修改定義的引腳為用作按鍵的引腳(比如使用P0.5作為按鍵輸入)。HalkeyPoll()函數(shù)是按鍵檢測函數(shù),檢測是哪個按鍵以及按鍵是否按下。如果在CC2530基礎(chǔ)實驗里,我們可以通過循環(huán)語句來進(jìn)行輪詢。但在Z-Stack中是通過事件來驅(qū)動的OASL進(jìn)行輪詢。按鍵查找的是在HAL層進(jìn)行,Z-Stack在HAL層定義一個按鍵事件HAL_KEY_EVENT,此層初始化時,需要通過函數(shù)osal_set_event()把此定義的按鍵事件添加進(jìn)去,OSAL循環(huán)運行中檢測到按鍵事件是否發(fā)生,如發(fā)生按鍵事件,HAL層處理函數(shù)Hal_ProcessEvent()會調(diào)用HalkeyPoll()函數(shù),對按鍵進(jìn)行檢測,從而檢測到按鍵狀態(tài)。為了達(dá)到定時輪詢,可以通過osal_start_timerEx()函數(shù)設(shè)置定時觸發(fā)按鍵事件HAL_KEY_EVENT,這樣,就相當(dāng)于定時掃描是否有按鍵按下,獲得按鍵信息。按鍵獲得的信息是在HAL層獲得的,但是按鍵處理通常是在APP層,那么APP層又如何獲得按鍵信息的呢?Z-Stack里提供了OnBoard_SendKeys()函數(shù),這個函數(shù)的功能就是將按鍵的值和按鍵的狀態(tài)進(jìn)行打包,然后發(fā)送到應(yīng)用層。在APP應(yīng)用層,處理函數(shù)里進(jìn)行解包,就獲得按鍵的信息,調(diào)用按鍵處理程序進(jìn)行處理。運行結(jié)果如圖2所示。由此可見,Z-Stack里是把按鍵作為一個事件來處理,需要把按鍵進(jìn)行注冊,不斷產(chǎn)生事件,讓OASL循環(huán)調(diào)用按鍵檢測,獲得按鍵信息,并傳送到應(yīng)用層。當(dāng)有按鍵按下時,觸發(fā)按鍵事件,然后調(diào)用事件處理函數(shù)進(jìn)行按鍵處理,所以Z-Stack必須依賴OASL才能運行,不管在那一層,都可讓OASL進(jìn)行調(diào)度。
【參考文獻(xiàn)】:
期刊論文
[1]基于Z-Stack的ZigBee協(xié)議棧組網(wǎng)過程研究[J]. 何智勇,徐麗萍. 南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報. 2018(01)
[2]ZigBee技術(shù)在開放性實驗教學(xué)中的應(yīng)用[J]. 李洋,章韻. 無線互聯(lián)科技. 2016(12)
[3]面向ZigBee技術(shù)的教學(xué)實驗平臺[J]. 郭偉然,湯勇明. 電氣電子教學(xué)學(xué)報. 2014(01)
[4]Z-Stack剖析及其在無線測溫網(wǎng)絡(luò)中的應(yīng)用[J]. 張奇松,尹航. 計算機系統(tǒng)應(yīng)用. 2009(02)
本文編號:3037524
本文鏈接:http://sikaile.net/kejilunwen/wltx/3037524.html
最近更新
教材專著