![《Android智能家居》設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)](http://file4.renrendoc.com/view8/M02/06/0A/wKhkGWcryMmAA4jBAACXiJfXzbQ417.jpg)
![《Android智能家居》設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)](http://file4.renrendoc.com/view8/M02/06/0A/wKhkGWcryMmAA4jBAACXiJfXzbQ4172.jpg)
![《Android智能家居》設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)](http://file4.renrendoc.com/view8/M02/06/0A/wKhkGWcryMmAA4jBAACXiJfXzbQ4173.jpg)
![《Android智能家居》設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)](http://file4.renrendoc.com/view8/M02/06/0A/wKhkGWcryMmAA4jBAACXiJfXzbQ4174.jpg)
![《Android智能家居》設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)](http://file4.renrendoc.com/view8/M02/06/0A/wKhkGWcryMmAA4jBAACXiJfXzbQ4175.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于Android的智能家居 1 1 2 3 3 3 4 4 5 5 5 6 74.1A8-ANDROIDA 7 74.1.2Application層詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 94.2A8-數(shù)據(jù)傳遞架構(gòu)模塊 4.3.1A8接收數(shù)據(jù)格式 第1章項(xiàng)目概述以數(shù)字錄像設(shè)備為核心的視頻監(jiān)控系統(tǒng),另一種是以嵌入操作系統(tǒng)。攝像頭采集到的圖片信息經(jīng)過(guò)壓縮,通過(guò)服務(wù)器,網(wǎng)絡(luò)上的用戶可以直接用瀏覽器觀看web服務(wù)圖像。由于把圖片采集和web功能集中到一個(gè)體積很小管理。嵌入式web服務(wù)器實(shí)際上是基于嵌入式微處理機(jī)(Smartphone),是指“像個(gè)人電腦一樣,具有獨(dú)立的操真正開(kāi)放和完整的移動(dòng)軟件。隨著Android應(yīng)Android:Android是一種以Linux為基礎(chǔ)的開(kāi)放源碼操作系統(tǒng),主要使用于A8:ARMCortex-A8處理器是第一款基于ARMv7架構(gòu)的應(yīng)用處第2章技術(shù)方案進(jìn)行監(jiān)控、控制。A8即可作為移動(dòng)終端設(shè)備(如phone、pad等),亦可作中Android文件系統(tǒng)第3章前端數(shù)據(jù)中心(A8)總體設(shè)計(jì)NodeInfoActivity循環(huán)NodeWriteThreadHandlerNodeInfoActivity循環(huán)NodeWriteThreadHandlerSmartHomeActivityMainHandlerThreadMainReadThreaddevControlUartSendCmd uartsendcmdUartSendCmd uartsendcmdUartDataUpdateFrameWorkLayerMyUartService uartdataupdate2.NodeInfoActivity,3.MainReadThread,讀數(shù)據(jù)主線程,該線程只負(fù)責(zé)對(duì)通3.NodeInfo,定義設(shè)備的所有采集信息,控制器狀態(tài)和WatchDog。第4章前端A8模塊設(shè)計(jì)ZigbeeNewNodeZigbeeCortex-M0ZigbeeNewNodeZigbeeCortex-M0MainReadThreadMainHandlerThreadnCortex-A8NEWNODE數(shù)據(jù)格式MainReadThread線程讀取到SmartHomeActivity判斷鏈表是否已經(jīng)存在Zigbee NodeInfo ZigbeeCortex-M0Zigbee NodeInfo ZigbeeCortex-M0MainReadThreadMainHandlerThreadiCortex-A8NODEINFO數(shù)據(jù)MainReadThread線程讀取到ZigbeeNodeInfoZigbeeCortex-M0ZigbeeNodeInfoZigbeeCortex-M0MainReadThreadMainHandlerThreadrCortex-A8MainReadThread線程讀取到MainHandlerThread對(duì)RFID進(jìn)行校驗(yàn),判斷是否合法送Handler消息交由SmartHomeActi序列化時(shí)保持版本的兼容性,即在版本升級(jí)時(shí)反boolean使用枚舉將命令聲明一組命名的常數(shù),方便函數(shù)readNode序列化時(shí)保持版本的兼容性,即在版本升級(jí)時(shí)反x存儲(chǔ)節(jié)點(diǎn)對(duì)象的三軸加速度x值yzfunbeepnextNodeInfowatchDogNodeInfoNodeInfoNodeInfoNodeInfoledOfffunOffbeepOnbeepOffnixietubeOnnixietubeOffheadNodeInfoNodeInfoNodeInfoNodeInfoNodeInfoNodeInfonodeIsNotExistedboolean所有設(shè)備節(jié)點(diǎn)看門(mén)狗減一NodeInfo當(dāng)啟動(dòng)MainReadThread線MainHandlerThread處理線程是否創(chuàng)建,未創(chuàng)建則創(chuàng)建并將讀出的數(shù)據(jù)傳給readNoderunnewMainHandlerThreadFalsebeginreadNoderunnewMainHandlerThreadFalsebegin<>ningTure<>FalsemhtIsExistTrue<>TuregetDataTypeisValidData<>TuregetDataTypeRNRNRundevControlf)設(shè)置選項(xiàng)被單擊的監(jiān)聽(tīng)器,setOnItemClic)關(guān)閉主界面Activity,this.finish。b)判斷是否有節(jié)點(diǎn)看門(mén)狗死亡,findNodeDogDie。如果存在a)從節(jié)點(diǎn)列表刪除從界面返回的節(jié)點(diǎn)的原對(duì)象,nodeListb)向節(jié)點(diǎn)列表插入從界面返回的新節(jié)點(diǎn)對(duì)象f)將主界面獲取的nodeInfo對(duì)象反饋到界面,sprimarykeyautoincrementNullNull3.通過(guò)調(diào)用本地方法實(shí)現(xiàn)java方法UartDataUpdateUartSendCmdUartDataUpdateUartSendCmdNewMyUartService_uart_uart_send_cmd_init_uart_data_updateUart_Uart_initUart_readUart_writeUart_device_openUart_read_halUart_write_halUart_read_drvUart_write_drvNEWfd口structuart_control_uart_read_haluart_write_hal讀上層讀串口Uart_read_drv()Read()Read()是否有數(shù)據(jù)N是否有數(shù)據(jù)NY是否為開(kāi)始位Y開(kāi)始接收是否結(jié)束YCRC檢驗(yàn)是否正確NNNY是否為開(kāi)始位Y開(kāi)始接收是否結(jié)束YCRC檢驗(yàn)是否正確NNNY填充讀buf寫(xiě)上層寫(xiě)串口Uart_write_drv()將數(shù)據(jù)打包,加入CRC校驗(yàn)Write()NN成功成功uart_control_device_t*保存通過(guò)調(diào)用stub中的open接口后uart_module_t*JNI層主要實(shí)現(xiàn)了Java與c/c++之間的過(guò)渡,不涉及復(fù)雜的邏輯,只根據(jù)規(guī)publicclassMyUartServipublicintUartSendCmd(void*)uart_write}{"_init","()Z",(void*)uart_iniUartSendCmd()//公有方法,向串口發(fā)送命令MyUartService(){_init()}//構(gòu)造串口服務(wù)時(shí)調(diào)用初始化函數(shù)Uart_write()sUartDevice->uart_read_hal(void*)uart_write}{"_init","()Z",(void*)uart_iniUartSendCmd()//公有方法,向串口發(fā)送命令MyUartService(){_init()}//構(gòu)造串口服務(wù)時(shí)調(diào)用初始化函數(shù)Uart_write()sUartDevice->uart_read_hal(sUartDevice,s_buf,sizeof(s_buf));//調(diào)用hal層注冊(cè)的讀方法sUartDevice->uart_write_hal(sUartDevice,command);//調(diào)用hal層注冊(cè)的寫(xiě)方法MyUartService{}System.load("/system/lib/libuart_runtime.so");//加載jni的動(dòng)態(tài)庫(kù)}JNI_OnLoad()//Framework層加載jni庫(kù)時(shí)調(diào)用registerMethods()//注冊(cè)自己的JNINativeMethod{"_uart_data_update","()Ljava/lang/String;",(void*)uart_read}Env->RegisterNatives()//注冊(cè)上述方法,至此裝載JNI庫(kù)工作完成UartDataUpdate()//公有方法,讀取串口數(shù)據(jù)根據(jù)Method找到對(duì)應(yīng)的JNI層接口Uart_read()Hw_get_module()//根據(jù)LED_HARDWARE_MODULE_ID找到hw_module_tUart_control_open()module->methods->open(module,LED_HARDWARE_MODULE_ID,(structhw_device_t**)device);//這個(gè)過(guò)程非常重要,jni通過(guò)LED_HARDWARE_MODULE_ID找到對(duì)應(yīng)的stubconststructuart_module_tHAL_MODULE_INFO_SYMcommon:{Id:UART_HARDWARE_MODULE_ID,//模塊ID,上層的Service通過(guò)這個(gè)ID應(yīng)用當(dāng)前Stubmethods:&led_module_methods,//入口函數(shù)管理結(jié)構(gòu)體}//向系統(tǒng)注冊(cè)了一個(gè)ID為UART_HARDWARE_MODULE_ID的stubJNI層調(diào)hal層的Uart_JNI層調(diào)hal層的Uart_read_halJNI層調(diào)hal層的openUart_read_drv()Uart_write_drv()staticstructhw_module_methods_tuart_module_methods={Open:uart_device_open;}定一個(gè)hw_module_methods_t結(jié)構(gòu)體,關(guān)聯(lián)入口函數(shù)JNI層調(diào)hal層的Uart_read_halUart_device_open()初始化上層傳入的device變量,并關(guān)聯(lián)操作接口{Dev.uart_read_hal=uart_read_drv;Dev.uart_write_hal=uart_write_drv;*device=&dev->common;}真正調(diào)用驅(qū)動(dòng)接Open真正調(diào)用驅(qū)動(dòng)接Open()真正調(diào)用驅(qū)動(dòng)接write()真正調(diào)用驅(qū)動(dòng)接特率等打開(kāi)成功Strings=myUartService.UartDataUpdate();//更新采集數(shù)據(jù)myUartService.UartSendCmd(1,LE/*System.loadLibrary(}}/*Strings=_uart_data_update();returns;vpublicintUartSendCmd(intn,intc){_uart_send_cmd(n,cprivatestaticnativeint_uart_send_cmd(intn,intc);//自定義的一個(gè)針對(duì)Uart控制的結(jié)構(gòu),包含hw_device_t和支持的APJNINativeMethod是jni層注冊(cè)的方法,F(xiàn)ramework層可以使用這些方法/*lookuptheclass*/clazz=env->FindClass(kClas}{LOGE("Failedregister}//向類(lèi)中注冊(cè)本SO中Native的}/*#include<cutils/log.chardev_no;chartemp[2];charadc[2];characc[3];//CRC16的校驗(yàn)函數(shù),查表法,表在crc1{unsignedcharucCRCHi=0x0;unsignedcharucCRCLo=0x0;intiIndex;}}staticintuart_device_close(structhw_device_t*{}}{chardata_buf[40]={0charch;ssize_tr_size=0;//數(shù)據(jù)類(lèi)型//數(shù)據(jù)段頭intdev_no;//設(shè)備號(hào)//用于CRC校驗(yàn)的頭{timeout--;//由于采用輪詢讀的方法,如果沒(méi)消息則}}}}//傳遞到上層傳下的buf}//傳遞到上層傳下的buf}}{ssize_tw_size=0;LOGE("writeerro,write}LOGI("Halwrite%dbytescmd:%s",w_size,cmd_buf);}{memset(dev,0,sizeof(*dev));dev->common.close=uart_device_close//實(shí)例化支持的操作//將實(shí)例化后的uart_control_device_t{}//初始化串口options.c_cflag&=~CRTSCTS;//不使用數(shù)據(jù)options.c_cflag&=~CSTOPB;//無(wú)結(jié)束位/*網(wǎng)上許多流行的linux串口編程的版本中都沒(méi)對(duì)c_iflag(termios成員變量)這樣傳送ASCII碼時(shí)沒(méi)什么問(wèn)題,但傳送二進(jìn)制數(shù)據(jù)時(shí)遇到0x0d,0x11和0x13不用說(shuō)也知道,這幾個(gè)肯定是特殊字符,被用作特殊控制了。關(guān)掉ICRNL和}//定一個(gè)hw_module_methods_t結(jié)構(gòu)體,關(guān)聯(lián)入口staticstructhw_module_methods_tuart_module_methods={//定義Stub入口//模塊ID,上層的Service通過(guò)這個(gè)ID應(yīng)用當(dāng)前Stubmethods:&uart_modulbuf[0]buf[1]buf[2]buf[3]{charlength;//數(shù)據(jù)的長(zhǎng)度溫濕度數(shù)據(jù)長(zhǎng)度為characc[3];//三軸加速x,y,z據(jù)位XYZ{charhead;//數(shù)據(jù)包頭‘S’chartype_data;//數(shù)據(jù)類(lèi)型為‘c’charlength;//數(shù)據(jù)charcmd;//命令溫濕度數(shù)據(jù)長(zhǎng)度為第5章終端M0模塊設(shè)計(jì)GPIO7LEDTEMP/HUMLIGHTRFIDMODULESPI0I2CGPIO7LEDTEMP/HUMLIGHTRFIDMODULESPI0I2CLED/FAN/SPEKERLPC11C143-AXIXSENSORZigBeeMODULE3-AXIXSENSORZigBeeMODULEUART-SPIM0上電復(fù)位系統(tǒng)初始化、啟動(dòng)系統(tǒng)滴答定時(shí)器發(fā)送new消息采集、發(fā)送傳感信息采集、發(fā)送傳感信息couonter1=0counter1>4scounter1>4s<><>counte有喂狗counter2counte有喂狗counter2=0r2>3s有操作命令?有操作命令?執(zhí)行相應(yīng)的命令發(fā)送卡號(hào)信息卡?發(fā)送卡號(hào)信息DHT10數(shù)字溫濕度傳感器是是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的1)DHT11上電后(DHT11上電后要等待1SZigBee模塊采用的是周立功公司代理的ZICM2410模塊M0SPIUARTSC16IS752UARTSC16IS752ZigBee寄存器(RHR),并將讀取出來(lái)的數(shù)據(jù)保讀取IIR中斷標(biāo)識(shí)寄存器是否為RHR中斷是否為RHR中斷N讀取RHR寄存器,消除中斷Y讀取RHR寄存器,消除中斷讀取并入隊(duì)RHR數(shù)據(jù),SPI752_rbuf1ip++NYSPINYSPI752_rbuf1ip>=MAXSPI752_rbuf1ip=0結(jié)束<><>Y<><>YNN
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年一手房買(mǎi)賣(mài)合同示例
- 2025年產(chǎn)品質(zhì)量檢驗(yàn)合作協(xié)議
- 2025年勞務(wù)合作合同監(jiān)管規(guī)定
- 2025年水利樞紐安全施工管理合作協(xié)議書(shū)
- 2025年個(gè)體戶資金借款合同模板
- 2025年品牌發(fā)展戰(zhàn)略合作諒解協(xié)議
- 2025年個(gè)人住房貸款代理服務(wù)協(xié)議
- 2025年智能交通系統(tǒng)策劃協(xié)議
- 2025年共有住房使用協(xié)議
- 2025年企業(yè)租賃合同實(shí)務(wù)與案例
- GB 4706.20-2004家用和類(lèi)似用途電器的安全滾筒式干衣機(jī)的特殊要求
- 無(wú)紙化會(huì)議系統(tǒng)解決方案
- 佛教空性與緣起課件
- 上海鐵路局勞動(dòng)安全“八防”考試題庫(kù)(含答案)
- 《愿望的實(shí)現(xiàn)》教學(xué)設(shè)計(jì)
- 效率提升和品質(zhì)改善方案
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 義務(wù)教育學(xué)科作業(yè)設(shè)計(jì)與管理指南
- 《汽車(chē)發(fā)展史》PPT課件(PPT 75頁(yè))
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
- 反詐騙防詐騙主題教育宣傳圖文PPT教學(xué)課件
評(píng)論
0/150
提交評(píng)論