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

正文內容

基于android的智能家居系統(tǒng)設計畢業(yè)論文(編輯修改稿)

2025-07-07 22:28 本頁面
 

【文章內容簡介】 另外光感應驅動也在這里打開,方便在同一個地方把需要隨時刷新的值都得到并及時更新到 cflags 里面去。 在監(jiān)控溫濕度的線程中,首先根據驅動給的借口,取得溫濕度傳感器的檔描述符 fdtemperature,通過 IO 控制函數 temperature_ioctl(fdtemperature , amp。cflags[1])。還有 emperature_ioctl(fdtemperature , amp。cflags[0])。不斷循環(huán)并取得當前的溫濕度數值。 在取得數值之后,通過安卓里面的 handler 隨時刷新數值,而 C層需要做的就是不斷更新數組里面的所有數據并通過 JNI 傳到上層以達到界面層和運算層的實時通信。首 先需要在初始化時把 HANDLER 的屬性對象保存起來,先定義兩個全局變量 jobject g_obj = NULL。和 JavaVM *g_vm = NULL。然后在 JNI 執(zhí)行初始化是進行環(huán)境變量的保存 (*env)GetJavaVM(env,amp。g_vm)。 和 g_obj= (*env)NewGlobalRef(env,obj)。 在更新線程中釋放之前保存的全局變量以便找到 JAVA 中的對象即對應的JAVA 數組并轉換上傳,具體操作是: jclass gasdevclazz = (*g_env)GetObjectClass (g_env, g_obj)。 jfieldID fieldID = (*g_env)GetFieldID (g_env, gasdevclazz, flags, [I)。 15 jflags = (*g_env)GetObjectField (g_env, g_obj,fieldID)。 jclass iclass = (*g_env)GetObjectClass(g_env, g_obj)。 jmethodID methodId = (*g_env)GetMethodID(g_env, iclass, HandlerArray, (I)V)。 在家模式和外出模式的切換 由于在出門的時候用戶經常需要關閉很多的用電器,整合一個外出模式就能為用戶提供極大的便利。外出系統(tǒng)的主要功能是在用戶切換到外出功能的 10 秒后,關閉室內的所有可控制用電器并打開所有可用警報的短信通知。 在家模式和外出模式,根據界面需求,只設置一個觸發(fā)動作的界面,具體操作是當用戶按下外出模式按鈕 C 語言層接受到觸發(fā)命令,在 C 語言層通過利用pthread_create 創(chuàng) 建兩 個 線程 : 第一 個 線程 首先 利 用線 程 分離 函 數pthread_detach(pthread_self())進行線程的分離,使用 sleep(10)等待 10 秒后,若 10 秒之內判斷到外出模式的標志位 cflags[3]依然是 1,就通過包裝過的驅動界面把用電器關閉,把標志紅外入侵警報的 cflags[4]和標志有毒氣體警報的 clags[5]都設置成短信通知,并把所有存儲用電器狀態(tài)值的 cflags 中的相關數值進行刷新,最后關閉線程;另一個線程則是負責不斷監(jiān)聽 RFID,也是先通過分離線程,然后使用 while(1)不 斷循環(huán),在循環(huán)體內打開 rfid 驅動,每 秒啟動一次,用 if 判斷語句當識別到用戶綁定的 ID 卡時切換為在家模式 把紅外警報和氣體警報標志位置成關閉狀態(tài),并關閉線程。 工作原理流程圖如 31 所示。 16 進入安防界面 在進入安防界面的時候需要用到 RFID 卡的認證,為上層界面提供了一個觸發(fā)界面,具體操作是當接收到界面?zhèn)鱽淼倪M入安防界面動作時,在 C語言層開辟一個安防進入的線程,利用 for 循環(huán)輪詢,每次循環(huán)相隔 秒,然后用 if語句把存儲有綁定的有效 rfid 卡 ID 的 cfags[17]與 rfid 識別到的卡號進行比對,當一致時把 cfags[6]置成 ID 卡號表示進入安防界面成功,如果在 5秒內未能識別正確的 ID卡號,就把 cfags[6]置成 1 表示進入安防界面失敗。 如流程圖 32 所示。 等待 10 秒 用戶點擊切換成外出模式 關閉用電器 并打開警報 是否刷正確的ID 卡 切換成在家模式 圖 31 N Y 17 圖 32 鬧 鐘 鬧鐘是智能家居中一個重要的功能,此鬧鐘可以設定在 24 小時內使蜂鳴器發(fā)出一次聲響,并且能夠隨時取消并重新設置。 此界面給上層提供的界面是傳遞一個字符串,通過算法把字符串提取成數字并作為設定時間。若當前時間和設定時間一致則蜂鳴器 動作。每次判斷蜂鳴器是否動作之前都需要先判斷標志位,看看用戶是否取消鬧鐘。是的話就停止減少時間并跳出該段程序。 具體操作是在初始化的時候先建立好鬧鐘線程 (后面會說到鬧鐘線程還整合了其他功能 ),然后分離線程,通過 time_t tp。和 struct tm *s_tm。定義時間結構體并且通過 tp = time(NULL)。和 s_tm = localtime(amp。tp)。兩個函數取得當前時點擊進入安防界面 彈出刷卡提示 是否超過 10 秒 是否識別正確ID 卡 進入安防界面失敗 成功進入安防界面 N N Y Y 18 間,同時通過以下 if語句判斷:if(((cflags[16]/10000)==1)amp。amp。((s_tmtm_hour)==(cflags[16]%10000/100))amp。amp。((s_tmtm_min)==(cflags[16]%100))) 其中 cflags[16]中,后面四位是表示用戶設定的時間和分鐘,第一位是指是否設定鬧鐘的標志位,如果標志鬧鐘的 clags[16]不為 0而當前的時分與用戶設定的時分又是一致的話,就直接通過蜂鳴器的包裝驅動設置蜂鳴器的合適占空比和周期,并持續(xù)動作 10 秒,之后則把鬧鐘標志位 clags[16]置 0。 該流程如圖 33所示 : 圖 33 燈 光 燈光的直接控制就是通過用戶直接點擊上層按鈕,傳到下層直接打開驅動進行操作,操作完成后刷新標志位??梢悦看慰刂埔粋€ LED 燈或者是一次控制所有用戶輸入一個字符串串 轉換成設定時間 是否取消鬧鐘 是否到達設定時間 鬧鐘取消 蜂鳴器動作 N N Y Y 19 的 LED 燈,方便用戶控制。 在燈光界面我們給上層界面只需要提供一個界面,傳進來一個 int 型數,就可以知道用戶的意圖,通過 if 語句判斷,當傳進來的數是 13或者 14,我們就把對應的房間或者客廳 LED 燈取反,如果傳進來的數是 0,就把所有 LED 燈關掉,1則是打開所有的 LED 燈,在開關后必須把標志燈光狀態(tài)的標志位更新。 另外,出于環(huán)保的考慮,我們默認設置了,當光 照值大于 4000 的時候,燈光會自動關閉。 窗 簾 光感監(jiān)控 用戶在燈光界面可以看到當前的光照值,以便對光感控制窗簾中的光感強度有更具體的概念。 由于這個監(jiān)控也是不需要任何的觸發(fā)動作,當用戶切換到此頁面是就會不斷刷新數值,因此也不提供任何界面,而刷新光感的具體動作也是通過同一個HANDLER 不斷地取得在驅動中獲取的當前光照值并上傳到上層界面。 控制窗簾 在窗簾界面提供直接窗簾的界面,只需要傳遞一個整數, 0 的時候打開, 1的時候關閉,用戶可以根據當前的光照值設定當光照值大于某設定 值時,窗簾進行關閉動作,以及當前光照值少于設定值時,窗簾開啟并屋內的燈光。 具體操作也是在初始化的時候就建立并分離線程,用 while(1)每隔兩秒判斷一次,我們把預設光感值 cflags[9]初始值設為最大值 5000,低于設定值開用語句 if((cflags[7]==2)amp。amp。(cflags[8]==0)amp。amp。(cflags[9]cflags[10])) 進行判斷,高于設定值關則用也是用一個類似的語句來判斷,具體是:if((cflags[7]==1)amp。amp。(cflags[8]==1)amp。amp。(cflags[9]cflags[10])),然后通過描述符操作步進電機的動作完成用戶的指令。 而直接操作窗簾的線程只在用戶層有指令傳送下來的時候存在,通過一個 if語句判斷是開還是關,然后直接操作驅動,最后刷新標志位并關閉線程。 需要注意的是,由于步進電機的特性問題,而打開和關閉的動作也需要轉動 20 一定的步數,因此在短時間內進行打開和關閉,會導致步進電機的停止動作,為了防止這一情況的發(fā)生,我們規(guī)定,用信號量去加鎖,當完成打開或者關閉動作時,再執(zhí)行下一個動作,避免了錯誤的發(fā)生。 實際操作是我們在當接收到用戶需要操作窗簾時會新建并分離一個線程 ,用if 語句判斷如果進行動作與窗簾當前狀態(tài)一致則不動作,或者當信號量小于 0時,利用 sem_trywait()函數阻塞,直到上一個動作完成為止。 光感控制窗簾開關原理流程圖如圖 34所示。 21 空調及排氣扇 空調和排氣扇的直接控制 空調和排氣扇的直接控制是用戶對界面進行操作對空調和排氣扇直接進行直接的操作。界面?zhèn)鬟f一個整形數,分別直接控制空調和排氣扇的開關。 具體操作是在借口程序里面打開驅動取得表示空調的 LED燈和直流電機的描述符,然后通過一個 switch 語句判斷用戶動作并執(zhí)行, 最后回收描述符。 溫度控制空調 用戶通過設定一個溫度,當當前溫度高于用戶所設溫度的時候空調自動打開。監(jiān)控程序依附在 handler 刷新上傳 flags 的線程中,而設定的值則在接口程用戶設定光照值和動作 是否大于 /小于設定值 取得當前光照值 關閉 /打開窗簾 N Y Y 圖 34 22 序里面通過 cflags[15]來設定,然后不斷用 if((cflags[15]/100 !=0)amp。amp。 (cflags[15]%100 cflags[1]))循環(huán)比對,當符合則打開標志空調的 LED 燈。 流程圖如圖 35所示。 短信控制空調 短信控制空調可以通過綁定的號碼給本機發(fā)送短信對空調進行控制,通 過GPRS 模塊接收短信,在初始化的時候開辟并分離一條用于接收短信的線程,用while(1)不斷循環(huán),當識別到號碼是綁定號碼時對字符串進行解析,短信控制打開空調的命令是“ openair”,用 if(strcmp(gprs_mesbuf[2],openair)==0)判斷本機接收到信號,操作驅動點亮表示空調的 LED 燈,并把空調開關的標志位cflags[11]更改為開,最后給回復綁定號碼一條短信,內容為:“ openair ok。” 用戶設定溫度 是否大于 設定值 取得當前溫度值 打開空調 N Y 圖 35 23 安 防 警報 紅外入侵警報是通過打開紅外傳感器,當有物 體遮擋時進行用戶要求的動作,如蜂鳴器警報和短信警報。 煙霧警報是通過打開煙霧傳感器,當有物體遮擋時進行用戶要求的動作,如蜂鳴器警報和短信警報。 在安防設置中為警報提供了一個整形數的傳遞界面,而其中 cflags[4]和clags[5]分別是入侵和氣體警報的標志位,數字 2 代表短信警報,數字 1代表蜂鳴器警報, 0 表示關閉警報。通過 switch 語句分別判斷情況,分別是紅外和煙霧警報的短信、蜂鳴器警報或者取消警報。當接受到打開警報的指令,會改變標志位令線程里的該段程序生效。 前面我們說過,為了節(jié)省資源,我們把警報的工作 也同樣放到鬧鐘的線程里面,其中用 if(((cflags[4]!=0)||(cflags[5]!=0))amp。amp。((k=3000)||(j==0)))這一判斷語句判斷是否打開了蜂鳴器警報并打開蜂鳴器的驅動接口,在其中又有兩個判斷語句 if((j==0)amp。amp。(cflags[4]!=0))和 if((k=3000)amp。amp。(cflags[5]!=0))分別用來判斷硬件的狀態(tài),當接受到信號時蜂鳴器動作。而短信警報則需要用if((k=3000)amp。amp。(cflags[5]==2)amp。amp。((cflags[18]/10000)=3600 )) 和if((j==0)amp。amp。(cflags[4]==2)amp。amp。((cflags[18]%10000)=3600 ))來分別判斷是否觸發(fā)短信警報,而每兩次相同類型的短息警報,我們也有兩個判斷體去控制最少間隔 10 分鐘才會再次觸發(fā)警報以免短信的費用過高。 切換識別 ID 卡以及電話號碼 切換綁定號碼會把原來保存的電話號碼清除并更新為用戶輸入的新號碼,以在需要發(fā)短信的時候使用。提供的界面會在上層界面接受一個字符串,只需通過memset()清空字符串和 strcpy()復制字符串兩個函數就可以直接把電 話號碼的字符串內容替換掉。 RFID 卡的切換,需要在 10秒內將有效的新卡放到 RFID 傳感器上,當切換成功時會有文字框提示。操作是首先在接口程序創(chuàng)建一個換卡的線程,打開 RFID驅動用 dowhile 循環(huán) 5 次,當識別到有效的新 ID卡替換掉掉舊的 cflags[17]儲存的 ID 卡號,并把標志換卡狀態(tài)的 cflags[19]置位成表示成功的 2
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1