![項(xiàng)目六界面數(shù)據(jù)實(shí)現(xiàn)-任務(wù)1農(nóng)業(yè)大棚中溫濕度實(shí)時(shí)顯示_第1頁](http://file4.renrendoc.com/view/1d4d674f9b31c549e19d5d8dbb0fcdfa/1d4d674f9b31c549e19d5d8dbb0fcdfa1.gif)
![項(xiàng)目六界面數(shù)據(jù)實(shí)現(xiàn)-任務(wù)1農(nóng)業(yè)大棚中溫濕度實(shí)時(shí)顯示_第2頁](http://file4.renrendoc.com/view/1d4d674f9b31c549e19d5d8dbb0fcdfa/1d4d674f9b31c549e19d5d8dbb0fcdfa2.gif)
![項(xiàng)目六界面數(shù)據(jù)實(shí)現(xiàn)-任務(wù)1農(nóng)業(yè)大棚中溫濕度實(shí)時(shí)顯示_第3頁](http://file4.renrendoc.com/view/1d4d674f9b31c549e19d5d8dbb0fcdfa/1d4d674f9b31c549e19d5d8dbb0fcdfa3.gif)
![項(xiàng)目六界面數(shù)據(jù)實(shí)現(xiàn)-任務(wù)1農(nóng)業(yè)大棚中溫濕度實(shí)時(shí)顯示_第4頁](http://file4.renrendoc.com/view/1d4d674f9b31c549e19d5d8dbb0fcdfa/1d4d674f9b31c549e19d5d8dbb0fcdfa4.gif)
![項(xiàng)目六界面數(shù)據(jù)實(shí)現(xiàn)-任務(wù)1農(nóng)業(yè)大棚中溫濕度實(shí)時(shí)顯示_第5頁](http://file4.renrendoc.com/view/1d4d674f9b31c549e19d5d8dbb0fcdfa/1d4d674f9b31c549e19d5d8dbb0fcdfa5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
任務(wù)實(shí)現(xiàn)知識(shí)準(zhǔn)備任務(wù)目標(biāo)項(xiàng)目6界面數(shù)據(jù)更新的實(shí)現(xiàn)任務(wù)1農(nóng)業(yè)大棚中溫濕度的實(shí)時(shí)顯示項(xiàng)目目標(biāo)智能農(nóng)業(yè)系統(tǒng)
境數(shù)據(jù)是以無線傳感器技術(shù)為基礎(chǔ),實(shí)現(xiàn)對農(nóng)業(yè)生產(chǎn)環(huán)境的監(jiān)測和邏輯控制。本任務(wù)農(nóng)業(yè)大棚中通過
ZigBee協(xié)調(diào)器模塊、ZigBee繼電器模塊與ZigBee溫濕度傳感器獲取到的溫濕度值,通過Handler-message的機(jī)制在移動(dòng)終端界面中完成數(shù)據(jù)的更新顯示。【任務(wù)目標(biāo)】掌握消息處理類(Handler)的應(yīng)用掌握消息類(Message)的應(yīng)用1.消息類(Message)簡介【知識(shí)準(zhǔn)備】當(dāng)Android平臺(tái)啟動(dòng)一個(gè)應(yīng)用程序會(huì)開啟一個(gè)主線程(界面UI線程),由界面UI線程來管理所顯示的所有控件,并件,來響應(yīng)用戶并分發(fā)事件等。因此,在界面UI線用戶點(diǎn)擊事一般不執(zhí)行耗時(shí)的操作,如聯(lián)網(wǎng)
數(shù)據(jù)等,否則出現(xiàn)ANR錯(cuò)誤。所以就將這些操作放在子線
,但是由于AndroidUI線程是不安全的,所以只能在主線
更新UI。正如其他GUI應(yīng)用程序一樣,Android應(yīng)用程序也是消息(事件)驅(qū)動(dòng)的。這種消息的傳遞必須依賴于應(yīng)用框架提供的消息機(jī)制。Android本身提供了2種消息機(jī)制:組件間消息傳遞(Intent)和線程間消息傳遞(Message)。在此主要
Android線程間消息傳遞機(jī)制及其應(yīng)用。1.消息類(Message)簡介【知識(shí)準(zhǔn)備】android.os.Message是定義一個(gè)Messge包含必要的描述和屬性
數(shù)據(jù),并且此對象可以被發(fā)送給android.os.Handler處理。屬性字段:arg1、arg2、what、obj、replyTo等;其中arg1和arg2是用來存放
整型數(shù)據(jù)的;what是用來保存消息標(biāo)示的;obj是Object類型的任意
對象;replyTo是消息管理器,會(huì)關(guān)聯(lián)到一個(gè)handler,handler就是處理其中的消息。通常對Message對象不是直接new出來的,只要調(diào)用handler中的obtainMessage方法來直接獲得Message對象,現(xiàn)把常用到的一些方法說明提供如下方法名稱含義Message()構(gòu)造一個(gè)新的Message對象Message
obtain
()從全局池中返回一個(gè)新的Message實(shí)例【知識(shí)準(zhǔn)備】Message可理解為線程間交流的信息,處理數(shù)據(jù)
線程需要更新UI,則發(fā)送Message內(nèi)含一些數(shù)據(jù)給UI線程。
在單線程模型下,為了解決類似的問題,Android設(shè)計(jì)了一個(gè)Message
Queue(消息隊(duì)列),
線程間可以通過該Message
Queue并結(jié)合Handler和Looper組件進(jìn)行信息交換。一個(gè)Message對象具有下表所對應(yīng)的屬性:1.消息類(Message)簡介屬性類型描述arg1int用來存放整型數(shù)據(jù)arg2int用來存放整型數(shù)據(jù)objObject用來存放發(fā)送給 的Object類型的任意對象ReplyToMessenger用來指定此Message發(fā)送到何處的可選Messager對象whatint用于指定用戶自定義的消息代碼,這樣接收者可以了解這個(gè)消息的信息2.消息處理類(Handler)簡介【知識(shí)準(zhǔn)備】在使用Handler處理消息的時(shí)候,Handler一般會(huì)揮發(fā)兩個(gè)作用:1、在新線
發(fā)送消息;2、在主線程(界面線息。在實(shí)際的程序開發(fā)中,Handler類為開發(fā)獲取并處理消提供了便捷的開發(fā)策略,在新線程(可以是多個(gè)新線
編寫消息發(fā)送的功能代碼,在主線
接收、識(shí)別并處理。這就解決了何時(shí)發(fā)送何時(shí)處理的問題。通過設(shè)計(jì)智能農(nóng)業(yè)移動(dòng)應(yīng)用相關(guān)業(yè)務(wù)參數(shù),需要熟悉和使用Handler類的相關(guān)方法,現(xiàn)把常用到的一些方法說明提供如下方法名稱含義void handleMessage(Message
msg)主線程處理消息的方法;boolean
hasMessages(int
what,
Objectobject)檢查消息隊(duì)列是否包含有what屬性并且object屬性為指定對象的消息;finalboolean hasMessages(int
what)檢查消息隊(duì)列是否包含有what屬性的消息;finalMessage
obtainMessage()獲取消息;2.消息處理類(Handler)簡介【知識(shí)準(zhǔn)備】finalbooleanpost(Runnable
r)將一個(gè)線程添加到消息隊(duì)列;finalbooleanpostDelayed(Runnable
r,
long
delayMillis)將一個(gè)線程delayMillis毫秒后添加到消息隊(duì)列;finalbooleansendMessage(Message
msg)立即發(fā)送消息;finalbooleansendMessageDelayed(Message
msg,
longdelayMillis)延遲delayMillis毫秒后發(fā)送消息;2.消息處理類(Handler)簡介【知識(shí)準(zhǔn)備】在開發(fā)移動(dòng)應(yīng)用程序時(shí),開發(fā) 只需要重寫Handler類中的處理消息的handleMessage(Message
msg)方法,每當(dāng)新線程使用sendMessage(Message
msg)發(fā)送消息時(shí),Handler類會(huì)自動(dòng)回調(diào)handleMessage(Message
msg)的邏輯代碼。3.使用Handler傳遞消息【知識(shí)準(zhǔn)備】使用Handler-Message消息傳遞機(jī)制更新主線程UI需要經(jīng)過以下步驟可以實(shí)現(xiàn):(1)在主線程Activity中創(chuàng)建Handler對象,并重寫handleMessage(Message
msg)方法;Handler
mHandler=new
Handler(){public
void
handleMessage(android.os.Message
msg){switch
(msg.what)
{case
0://對溫度值進(jìn)行操作break;case
1://對濕度值進(jìn)行操作break;case
2://對光照值進(jìn)行操作break;}};};3.使用Handler傳遞消息【知識(shí)準(zhǔn)備】(2)
在新線
使用主線程創(chuàng)建的Handler對象,調(diào)用它的發(fā)送消息方法向主線程發(fā)送消息;Message
mMsg=new
Message();//創(chuàng)建Message對象mMsg.obj=0;//設(shè)置mMsg的傳輸值mMsg.what=ISTEMP;//設(shè)置mMsg的類型mHandler.sendMessage(mMsg);//通過構(gòu)造函數(shù)傳入的Handler發(fā)送Message(3)利用Handler對象的handleMessage(Messagemsg)方法接收消息,然后根據(jù)obj的不同取值執(zhí)行不同的業(yè)務(wù)邏輯(代碼見第一步);【任務(wù)實(shí)現(xiàn)】在Eclipse下創(chuàng)建一個(gè)Android項(xiàng)目,命名為AndroidDemo6_1,將項(xiàng)目2任務(wù)8的界面導(dǎo)入到本項(xiàng)目中。在
.example.androiddemo6_1包中,新建一個(gè)類BasePort.java,用于打開Zigbee的四個(gè)輸入串口,定義openZigBeePort方法,打開ZigBee的端口,代碼如下:public
class
BasePort
{/**打開Zigbee四輸入串口@param
com
串
如COM0
COM1
COM2@param
mode區(qū)分是USB串口還是COM串口,0表示COM,【任務(wù)實(shí)現(xiàn)】1
表示
USB,2表示是低頻與
頻*
@param
baudRate(0-9)波特率
0=1200
1=24002=4800
3=9600
4=19200
5=38400
6=57600
7=1152008=230400
9=921600*
@return串口*/public
int
openZigBeePort(int
com,int
mode,int
baudRate){Zigb=ZigBee ogServiceAPI.openPort(com,
mode,
baudRate);return
Zigb
;}【任務(wù)實(shí)現(xiàn)】3.新建closeZigBeePort()方法用于四個(gè)輸入串口的關(guān)閉/***關(guān)閉Zigbee四輸入串口*/public
void
closeZigBeePort(){ZigBee
ogServiceAPI.closeUart();}【任務(wù)實(shí)現(xiàn)】4.
在
.example.androiddemo6_1包中,再新建一個(gè)類FourInput.java繼承自BasePort.java類,定義三個(gè)整型的變量ISTEMP、ISHUMI、ISLIGHT分別代表溫度、濕度和光照感應(yīng),初始值分別為0、1、2;定義Handler類的對象mHandler初始值為null;定義mFourInput_fd
變量初始值為
0。public
class
FourInput
extends
BasePort
{private
final
int
ISTEMP
=
0;private
final
int
ISHUMI
=
1;private
final
int
ISLIGHT
=
2;private
Handler
mHandler
=
null;public
static
int
mFourInput_fd
=
0;【任務(wù)實(shí)現(xiàn)】5.在重寫的FourInput()方法中,利用handler實(shí)現(xiàn)對頁面的更新,將打開四個(gè)端口獲得的溫度、濕度和波特率的值賦給變量mFourInput_fd,代碼如下:public
FourInput
(int
com,int
mode,int
baudRate,Handlerhandler){this.mHandler
=
handler;mFourInput_fd
=
openZigBeePort(com,
mode,baudRate);}【任務(wù)實(shí)現(xiàn)】6.在重寫的start方法中,創(chuàng)建ZigBeeService的對象,并對其進(jìn)行實(shí)例化,且開啟服務(wù)。利用ZigBee
ogServiceAPI的getTemperature方法更新溫度信息。代碼如下:ZigBee
ogServiceAPI.getTemperature("temp",
newOnTemperatureResponse(){@Overridepublic
void
onValue(String
arg0)
{//創(chuàng)建Message對象Message
mMsg
=
new
Message();//設(shè)置mMsg的傳輸值mMsg.obj
=
arg0;【任務(wù)實(shí)現(xiàn)】//設(shè)置mMsg的類型mMsg.what
=
ISTEMP;//通過構(gòu)造函數(shù)傳入的Handler發(fā)送MessagemHandler.sendMessage(mMsg);}@Overridepublic
void
onValue(double
arg0)
{}});【任務(wù)實(shí)現(xiàn)】重寫的start方法中,創(chuàng)建ZigBeeService的對象,并對其進(jìn)行實(shí)例化,且開啟服務(wù)。利用ZigBee
ogServiceAPI的getHum方法更新濕度的值重寫的start方法中,創(chuàng)建ZigBeeService的對象,并對其進(jìn)行實(shí)例化,且開啟服務(wù)。利用ZigBee
ogServiceAPI的getLight方法更新光照的值在MainActivity.java中,定義TextView類的三個(gè)對象mTvTemp,mTvHumi,mTvLight和FourInput類的對象mfourInput初始值為null。代碼如下:private
TextView
mTvTemp,mTvHumi,mTvLight;private
FourInput
mFourInput
=null【任務(wù)實(shí)現(xiàn)】10.在重寫的onCreate方法中,調(diào)用initView()方法(需自定義),對視圖進(jìn)行初始化,將四輸入接入COM1,并開啟四個(gè)輸入端口protected
void
onCreate(Bundle
savedInstanceState){super.onCreate
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB 45185-2024眼視光產(chǎn)品成品眼鏡安全技術(shù)規(guī)范
- SMARCA2-ligand-13-生命科學(xué)試劑-MCE-7252
- Nonanoylcarnitine-C9-carnitine-生命科學(xué)試劑-MCE-3656
- CP-LC-1254-生命科學(xué)試劑-MCE-4991
- 3-Hydroxy-desalkylflurazepam-生命科學(xué)試劑-MCE-8942
- 二零二五年度瓷磚產(chǎn)品出口退稅代理服務(wù)合同
- 二零二五年度泳池水上運(yùn)動(dòng)項(xiàng)目推廣合作合同
- 二零二五年度環(huán)境污染責(zé)任賠償調(diào)解協(xié)議
- 質(zhì)量控制在提高實(shí)驗(yàn)室效率中的作用
- 2024煙臺(tái)的海教學(xué)設(shè)計(jì)-六年級語文《煙臺(tái)的?!方贪?/a>
- 城市隧道工程施工質(zhì)量驗(yàn)收規(guī)范
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 2025江蘇太倉水務(wù)集團(tuán)招聘18人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年人教新版高二(上)英語寒假作業(yè)(五)
- 2025脫貧攻堅(jiān)工作計(jì)劃
- 借款人解除合同通知書(2024年版)
- 《血小板及其功能》課件
- 江蘇省泰州市靖江市2024屆九年級下學(xué)期中考一模數(shù)學(xué)試卷(含答案)
- 沐足店長合同范例
- 《旅游資料翻譯》課件
- 《既有軌道交通盾構(gòu)隧道結(jié)構(gòu)安全保護(hù)技術(shù)規(guī)程》
評論
0/150
提交評論