Android智能家居详细设计52_第1页
Android智能家居详细设计52_第2页
Android智能家居详细设计52_第3页
Android智能家居详细设计52_第4页
Android智能家居详细设计52_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于Android的智能家居基于Android的智能家居 AcE team 第 page 1 页 共 SECTION页背基于And俺roid的隘智能家居三个火枪手耙2013版年巴5把月拔目 柏 录TOC o 1-3 h z HYPERLINK l _Toc 俺第 1 章肮霸项目概述败 PAGEREF _Toc h 阿1摆V。 HYPERLINK l _Toc 哀1.1哎氨项目背景艾 PAGEREF _Toc h 扒1埃e。 HYPERLINK l _Toc 矮1.2把稗术语定义熬 PAGEREF _Toc h 白2霸4。 HYPERLINK l _Toc 瓣第 2 章吧搬技术方案败 PAGER

2、EF _Toc h 哎3靶b。 HYPERLINK l _Toc 熬2.1胺叭系统描述盎 PAGEREF _Toc h 佰3肮S。 HYPERLINK l _Toc 颁2.2安癌功能描述 PAGEREF _Toc h 埃3熬v。 HYPERLINK l _Toc 埃2.3爱凹项目功能图稗 PAGEREF _Toc h 捌4懊f。 HYPERLINK l _Toc 耙2.4疤疤所涉及的系熬统、工具搬 PAGEREF _Toc h 敖4暗d。 HYPERLINK l _Toc 般第 3 章笆瓣前端数据中扳心(霸A8埃)总体设计败 PAGEREF _Toc h 绊5颁Q。 HYPERLINK l _

3、Toc 般3.1斑鞍程序设计流八程图伴 PAGEREF _Toc h 拔5凹P。 HYPERLINK l _Toc 盎3.2八芭线程定义八 PAGEREF _Toc h 哀5阿c。 HYPERLINK l _Toc 巴3.3摆扮所用类定义暗 PAGEREF _Toc h 敖6艾4。 HYPERLINK l _Toc 奥第 4 章澳版前端斑A8鞍模块设计半 PAGEREF _Toc h 癌7碍A。 HYPERLINK l _Toc 坝4.1澳鞍A8-An矮droid靶 App昂licat肮ion胺层设计敖 PAGEREF _Toc h 7坝g。 HYPERLINK l _Toc 啊4.1.1胺斑

4、数据流分析笆 PAGEREF _Toc h 捌7颁L。 HYPERLINK l _Toc 敖4.1.2熬癌Appli拜catio斑n翱层详细设计搬与实现笆 PAGEREF _Toc h 皑9皑t。 HYPERLINK l _Toc 氨4.2熬败A8-爸数据传递架蔼构模块翱 PAGEREF _Toc h 傲16佰c。 HYPERLINK l _Toc 佰4.2.1氨艾层次接口表暗 PAGEREF _Toc h 佰16阿r。 HYPERLINK l _Toc 霸4.2.2哀版HAL按层扳 PAGEREF _Toc h 碍17啊O。 HYPERLINK l _Toc 把4.2.3半斑JNI白层隘 P

5、AGEREF _Toc h 霸19昂p。 HYPERLINK l _Toc 摆4.2.4版邦Frame半work隘层把 PAGEREF _Toc h 安20按K。 HYPERLINK l _Toc 肮4.2.5癌皑整体流程邦 PAGEREF _Toc h 昂21扳t。 HYPERLINK l _Toc 搬4.2.6斑拌关键代码分办析拜 PAGEREF _Toc h 巴22拜P。 HYPERLINK l _Toc 奥4.3摆案传输协议模俺块设计吧 PAGEREF _Toc h 邦32安u。 HYPERLINK l _Toc 搬4.3.1邦稗A8扳接收数据格扮式澳 PAGEREF _Toc h 鞍

6、32稗N。 HYPERLINK l _Toc 叭4.3.2凹案M0版接收命令数按据结构安 PAGEREF _Toc h 哀33蔼1。 HYPERLINK l _Toc 佰第 5 章懊皑终端巴M0凹模块设计背 PAGEREF _Toc h 斑35胺G。 HYPERLINK l _Toc 办5.1癌暗终端设备方阿案描述班 PAGEREF _Toc h 碍35拌m。 HYPERLINK l _Toc 皑5.2扮坝终端设备工绊作流程澳 PAGEREF _Toc h 按35霸v。 HYPERLINK l _Toc 佰5.3白懊功能模块描绊述盎 PAGEREF _Toc h 盎36胺Q。 HYPERLIN

7、K l _Toc 昂5.3.1芭俺温湿度传感捌器扮DHT10吧 PAGEREF _Toc h 瓣36罢m。 HYPERLINK l _Toc 邦5.3.2罢ZigBe百e稗通信部分白 PAGEREF _Toc h 板37翱U。 HYPERLINK l _Toc 奥5.3.3跋RFID矮读卡模块阿 PAGEREF _Toc h 疤40办5。 HYPERLINK l _Toc 啊5.3.4霸叭IIC隘接口部分耙 PAGEREF _Toc h 摆41凹N。 HYPERLINK l _Toc 俺第 6 章按啊系统测试败 PAGEREF _Toc h 罢45靶5。 HYPERLINK l _Toc 昂6

8、.1扒扮项目演示班 PAGEREF _Toc h 矮45案C。项目概述项目背景艾随着社会电拜子信息化的扳不断发展,爸人们在家居懊中使用的电拜器越来越多柏,由此带来阿的安全隐患阿也有了明显暗的增多。在翱这些电器中爸一旦出现一邦些异常,便挨会给人们带板来很大的损爱失。为了降碍低电器的不叭合理使用带爸来的异常情艾况,就要求疤在异常发生奥时用户能及奥时得到信息翱,并通过实熬时监控采取耙一定的操作皑排除异常。爱因此,远程板监控系统的岸作用是非常靶巨大的。版d。败90年代末邦,随着多媒埃体技术、视扳频压缩编码叭技术、网络耙通讯技术的把发展,数字矮视频监控系肮统迅速崛起扳,现今市场板上由两种数疤字视频监控柏

9、系统类型,爱一种是以数颁字录像设备般为核心的视斑频监控系统哀,另一种是拜以嵌入式视袄频web服癌务器为核心绊的视频监控傲系统。以数昂字录像设备皑为核心的视爸频监控系统疤采用PC机拌作为多媒体伴监控主机,胺综合了视频罢矩阵、图像拔分割器、录柏像机等众多鞍的功能,使凹系统结构大扒为简化,采般用计算机网暗络技术,数盎字多媒体远叭程网络监控罢不受距离限笆制,采用大般容量磁盘阵办列存盘器或绊光盘存储器矮,可以节省败大量的磁盘跋介质,同时板有利于系统鞍实现多媒体俺信息查询。隘但随着基于耙PC机的视胺频监控录像版系统的发展哀,在实际使澳用过程中,板也暴露出一唉些不足,主般要是系统工蔼作的不稳定暗性。霸T。摆

10、以嵌入式视班频web服懊务器为核心安的视频监控澳系统,采用案嵌入式实时岸多任务操作隘系统。摄像瓣头采集到的案图片信息经稗过压缩,通背过内部总线颁送到内置的摆web服务艾器,网络上吧的用户可以爱直接用浏览坝器观看we啊b服务器上捌的由摄像头暗采集的图像佰。由于把图岸片采集和w奥eb功能集扮中到一个体八积很小的设霸备内,可以挨直接连入局唉域网,用户埃无需安装任邦何硬件设备案,仅用浏览绊器即可观看笆。同时还具挨有以下优点靶:爸V。颁布控区域广绊阔,嵌入式唉视频web摆服务器监控扒系统web奥服务器直接蔼连入网络,般没有线缆长班度和信号衰岸减的限制,八同时网络是跋没有距离概疤念的,彻底摆抛弃了地域疤的

11、概念,扩版展布控的区版域。系统具败有几乎无限拜的无缝扩展隘能力。所以板设备都以I佰P地址进行佰标示,增加埃设备只是意鞍味着IP地啊址的扩充。板性能稳定可版靠,无需专翱人管理。嵌敖入式web胺服务器实际罢上是基于嵌癌入式微处理岸器技术,采瓣用嵌入式实半时多任务操挨作系统,对绊于用户来讲哎,上网进行巴登陆,便可拔对家中情况吧进行监控。霸除了WEB拌服务器实时埃控制之外,拜当前智能手捌机的发展趋坝势已经愈加柏明显。智能阿手机(Sm捌artph背one),罢是指皑“敖像个人电脑稗一样,具有拌独立的操作癌系统,可以白由用户自行八安装软件、背游戏等第三白方服务商提盎供的程序,澳通过此类程碍序来不断对拔手机

12、的功能盎进行扩充,阿并可以通过敖移动通讯网按络来实现无扮线网络接入盎的这样一类摆手机的总称奥”胺。而当前应安用在智能手吧机上的操作耙系统中An艾droid扮操作系统占八有相当大的般比例。巴M。八Andro懊id( 中拜文名:安卓疤) 是基于拔Linux啊平台开源手蔼机操作系统八名称,该平摆台由操作系氨统、中间件翱、用户界面爱和应用软件皑组成,号称昂是首个为移班动终端打造翱的真正开放霸和完整的移瓣动软件。随碍着Android应用巴的更见广泛捌,了解并能斑使用And扳roid来霸完成我们对癌智能家居的百控制已经显啊得愈加重要。哀B。柏现在监控系扮统发展到第捌三代,前端熬一体化、视坝频十字化、跋监控

13、网络化拌、系统集成坝化成为视频爱监控系统公耙认的发展方败向,它以网鞍络为依托,扮以数字视频蔼的压缩、传疤输、存放和阿播放为核心哀,以智能实半用的图像分摆析为特点,安并为报警系拜统、门禁系埃统完美的整拜合到一个使鞍用平台上,斑引发了视频拌控制行业的稗一次技术革邦命。扒E。术语定义胺Andro挨id:隘 Andr版oid是一阿种以 HYPERLINK /view/1634.htm 翱Linux埃为基础的开哀放源码 HYPERLINK /view/880.htm 办操作系统敖,主要使用唉于便携设备皑。疤O。罢HAL绊:硬件抽象盎层。板JNI:J熬NI是Ja搬va Na阿tive 敖Inter柏fac

14、e的拌缩写,中文跋为JAVA吧本地调用霸。胺P。绊RFID摆:敖射频识别即瓣RFID(办Radio案 Freq扮uency跋 IDen巴tific昂ation板)技术,又佰称电子标签吧、无线射频办识别,是一矮种通信技术跋,可通过无罢线电讯号识矮别特定目标安并读写相关凹数据,而无版需识别系统佰与特定目标傲之间建立机暗械或光学接鞍触。唉B。蔼A8:半 ARM 爱Corte芭x-A8处芭理器是第一拜款基于AR隘Mv7架构绊的应用处理安器,并且是跋有史以来A疤RM开发的哎性能最高、佰最具功率效颁率的处理器搬。肮4。芭M0:Co埃rtex-般M0处理器碍,是市场上唉现有的最小拔、能耗最低吧、最节能的百A

15、RM处理啊器。扳r。技术方案系统描述埃Andro把id是一个袄开放源码的熬操作系统专疤门为移动电拔话而设计的稗系统。An柏droid伴手机将开辟胺新的应用,蔼使家居智能巴化运用于普扒通家庭。安2。霸Andro伴id 界面矮显示(Co隘rtex_办A8)来自奥于Cort皑ex_m0版模拟量,并皑可对Cor巴tex_m疤0进行控制摆或操作。巴c。本系统做为翱裁减项目,八实现了M0搬采集房间信熬息,通过无爱线方式发送佰到A8进行把监控、控制笆。A8即可颁作为移动终办端设备(如白phone傲、pad等奥),亦可作败中央监控服袄务器设备。把本项目采用柏后者方案,拜即作中央监板控。若需作拌移动设备,般只需

16、将程序爸移植到移动皑设备上,再昂在中央端移靶植web服百务器,移动阿设备登陆服霸务器即可查俺看房屋信息袄。安q。功能描述啊1.检测室柏内温度、湿敖度、光感、伴电压情况(盎通过Cor熬tex_m扒0采集的信岸息)。翱a。傲2.通过温癌度、湿度的按情况来对应罢调节风扇开摆关(控制C哎ortex芭_m0)。百3。巴3.根据光岸敏传感器情邦况对应调节吧led灯亮百灭(控制C懊ortex巴_m0)。搬b。案4.根据三拔轴加速度情笆况对应调节安蜂鸣器开关疤(控制Co胺rtex_埃m0)。摆3。胺5.显示R昂fid信息胺等功能(通跋过Cort笆ex_m0颁采集)。项目功能图袄图2.1 叭项目功能图邦所涉及的

17、系袄统佰、工具班表2.1 扒系统与工具系统名称系统版本备注Linux内核Linux3.0.8Android文件系统Android4.0版本工具链arm-none-linux-gnueabi-gccAndroid程序开发Eclipse叭前端数据中绊心(A8)搬总体设计邦程序设计流哎程图办图3.1 背程序设计流啊程图线程定义拌1.鞍 S斑martH碍omeAc唉tivit版y把,程序主A扳ctivi安ty界面,案打开程序首版先运行。案0。斑2. Node癌InfoA背ctivi挨ty哎,从界面A八ctivi哀ty,用来般显示详细设罢备采集信息矮和控制按键版。拜f。爸3.吧 Main唉ReadT案h

18、read霸,读数据主疤线程,该线敖程只负责对跋通过Zig吧bee获取暗的数据转发扒给读进程,班不进行数据哀操作伴。 拜b。半4.扒 扮MainH俺andle般rThre扳ad半,处理数据埃线程,该线靶程对从读进斑程传来的数把据进行数据拔校验并转发昂。 坝F。笆5.爸 Node胺Write班Threa百d唉,控制线程懊,该线程负肮责处理由用稗户对设备的昂操作。拌O。所用类定义拜1熬.扒 昂Data,傲用来存储和肮处理设备的白采集数据。摆2.鞍 Node安Cmd吧,定义操作傲方法,实现摆对设备的读懊操作和控制板操作。跋d。扮3.俺 Node芭Info罢,定义设备埃的所有采集翱信息,控制暗器状态和W

19、绊atchD暗og。邦O。挨4.颁 Node邦List澳,使用链表坝存储设备信背息。捌5.芭 MyUa盎rtSer把vice坝:提供与底胺层的接口,皑以读写串口哀。拌Z。耙前端A8模肮块设计凹 按A8-An哀droid暗 App伴licat隘ion层设吧计数据流分析奥NEWNO昂DE八,新节点加佰入绊1霸.霸数据处理流艾程图跋图拌4.1矮矮N翱EWNOD靶E皑数据流程图吧2.爸数据格式皑N伴EWNOD蔼E奥数据格式数据格式NEWNODES4FnI1半3.数据处敖理详细描述罢Corte挨x-M0开佰启,通过Z扒igbee邦发送NEW稗NODE数白据给Cor叭tex-A俺8,程序通唉过Main耙R

20、eadT扳hread靶线程读取到熬数据,交由按MainH盎andle邦rThre颁ad线程处傲理。Mai吧nHand瓣lerTh佰read对爱NOEWN凹ODE进行哀校验,判断佰是否合法,笆如果数据无爸误,通过发坝送Hand芭ler消息半交由Sma扒rtHom佰eActi肮vity主俺界面UI线皑程,Sma袄rtHom伴eActi坝vity 昂判断链表是岸否已经存在碍该节点,不奥存在则加入唉链表并创建班节点。叭W。扒NODEI阿NFO办,节点信息岸更新。胺1.数据处爸理流程图白图伴4.芭2奥鞍NODEI颁NFO奥数据流程图拜2.数据格按式办NODEI斑NFO瓣数据数据格式NODEINFOS23

21、FiI1T24H30L6V220X1Y1Z60颁3.数据处哎理详细描述霸Corte奥x-M0开八启,通过Z鞍igbee把发送NEW耙NODE数稗据给Cor颁tex-A般8,程序通澳过Main皑ReadT懊hread矮线程读取到澳数据,交由耙MainH碍andle挨rThre巴ad线程处班理。Mai鞍nHand白lerTh疤read对鞍NODEI板NFO进行瓣校验,判断按是否合法,疤如果数据无爱误,通过发爱送Hand傲ler消息傲交由Sma八rtHom扳eActi哎vity主案界面UI线敖程,Sma翱rtHom拔eActi霸vity 唉判断链表是矮否已经存在把该节点,存靶在则更新该拜链表信息,败

22、并判断是否进入该节点艾从界面,如安果进入发送版Broad版cast通伴知从界面更摆新数据。板b。肮RFID,盎用户登录或埃退出。 百1.数据处吧理流程图拔图拌4.唉3拌白RFID数柏据流程图半2.数据格哎式岸RFID办数据格式数据格式RFIDS11FrI1R笆3.数据处哀理详细描述凹Corte暗x-M0开败启,通过Z案igbee翱发送NEW半NODE数凹据给Cor拌tex-A坝8,程序通唉过Main班ReadT白hread肮线程读取到白数据,交由八MainH凹andle般rThre瓣ad线程处稗理。Mai版nHand鞍lerTh熬read对按RFID进稗行校验,判半断是否合法芭,如果数据疤无误

23、,通过按发送Han捌dler消爱息交由Sm白artHo拌meAct稗ivity昂主界面UI摆线程,Sm霸artHo半meAct傲ivity昂发送Bro跋adcas邦t通知从界懊面,从界面袄判断是否为半自己设备,板是则更新数败据。俺w。按Appli碍catio搬n层详细设跋计与实现搬类对象详细斑描述哀1 .Da扳ta类,负稗责对接受来背数据进行处般理俺表4.1 阿Data成柏员属性表属性类型描述serialVersionUIDlong序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。dataString存储从串口的数据傲表4.2 搬Data成皑员方法表方法参数返回值描述getD

24、ataSizeVoidString从传来的数据获取数据大小isValidDataVoidboolean数据有效性校验,包括数据是为为空,完整等getDataTypeVoidint从传来的数据获取数据类型getDataTargetVoidString从传来的数据获取数据的设备号getRfidVoidString从传来的数据获取Rfid信息getTemperatureVoidString从传来的数据获取温度getHumidityVoidString从传来的数据获取湿度getLightVoidString从传来的数据获取光感getAdVoidString传来的数据获取AD值getXVoidStrin

25、g从传来的数据获取三轴加速度x值getYVoidString从传来的数据获取三轴加速度y值getZVoidString从传来的数据获取三轴加速度z值拔2八 把.Node癌Cmd类,哀负责与底层啊进行交互,挨实现对硬件癌设备读,写靶操作。拔B。坝表4.3 唉NodeC耙md成员属伴性表属性类型描述DevCmdenum使用枚举将命令声明一组命名的常数,方便函数调用。myUartServiceMyUartService串口操作所使用框架耙表4.4 阿NodeC背md成员方阿法表方法参数返回值描述devControlint, DevCmdString向串口发送数据readNodeVoidString从

26、串口获取数据八3 .No挨deInf爸o类,负责把存储一个设唉备的信息。版表4.5 八NodeI柏nfo成员百属性表属性类型描述serialVersionUIDlong序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。temperatureString存储节点对象的温度值humidityString存储节点对象的湿度lightString存储节点对象的光感值xString存储节点对象的三轴加速度x值yString存储节点对象的三轴加速度y值zString存储节点对象的三轴加速度z值adString存储节点对象的ad值ledint存储节点对象的led灯状态(0,灭;1,亮)fu

27、nint存储节点对象的风扇状态(0,关;1,开;2,加速)beepint存储节点对象的报警器状态(0,关;1,开)nixietubint存储节点对象的数码管状态(0,关;1,开)rfidrfid存储节点对象的rfid信息devNumint存储节点对象的设备号nextNodeInfo便于生成链表watchDogint看门狗,监控节点生命值罢表4.6 耙NodeI翱nfo成员百方法表方法参数返回值描述NodeInfovoidvoid构造函数,初始化节点对象NodeInfovoidint有参数构造函数,参数为节点设备号getNextvoidNodeInfosetNextNodeInfovoidget

28、TemperaturevoidString获取该对象温度值setTemperatureStringvoid设置该对象温度值getHumidityvoidString获取该对象湿度值setHumidityStringvoid设置该对象湿度值getLightvoidString获取该对象光感值setLightStringvoid设置该对象光感值getAdvoidString获取该对象AD值setAdStringvoid设置该对象AD值getXvoidString获取该对象三轴加速度x值setXStringvoid设置该对象三轴加速度x值getYvoidString获取该对象三轴加速度y值setYS

29、tringvoid设置该对象三轴加速度y值getZvoidString获取该对象三轴加速度z值setZStringvoid设置该对象三轴加速度z值getLedvoidint获取该对象Led状态值setLedintvoid设置该对象Led状态值getFunvoidint获取该对象Fun状态值setFunintvoid设置该对象Fun状态值getBeepvoidint获取该对象Beep状态值setBeepintvoid设置该对象Beep状态值getNixietubvoidint获取该对象Nixietub状态值setNixietubintvoid设置该对象Nixietub状态值getDevNumvo

30、idint获取该对象DevNum值setDevNumintvoid设置该对象DevNum值getRfidvoidString获取该对象Rfid值setRfidStringvoid设置该对象Rfid值getWatchDogvoidint获取该对象WatchDog值setWatchDogintvoid设置该对象WatchDog值ledOnvoidvoid开灯ledOffvoidvoid关灯funOnvoidvoid开风扇FunOn1voidvoid风扇加速funOffvoidvoid关风扇beepOnvoidvoid开蜂鸣器beepOffvoidvoid关蜂鸣器nixietubeOnvoidvoi

31、d开数码管nixietubeOffvoidvoid关数码管哎4 .No摆deLis拔t类,存储案所有连接设艾备的信息,碍便于进行界摆面节点的更背新,删除和蔼添加操作。暗d。半表4.7 按NodeL暗ist成员坝属性表属性类型描述headNodeInfo链表头结点lenLong链表长度唉表4.8 隘NodeL百ist成员熬方法表方法参数返回值描述getHeadNodeInfovoid获取链表头结点setHeadvoidNodeInfo设置链表头结点createNodeListvoidvoid创建设备节点链表insertNodeNodeInfovoid插入节点delNodeNodeInfovoid

32、删除节点allNodevoidvoid遍历链表所有节点findByDevNumintNodeInfo通过设备号找到节点nodeIsNotExistedintboolean通过设备号查找节点是否存在于链表delByDevNumintvoid通过设备号删除节点allNodeSetWatchDogvoidString所有设备节点看门狗减一oneNodeFeedWatchDogintvoid通过设备号找到设备节点并喂狗findNodeDogDievoidint遍历设备节点,查看是否有节点生命结束getLenvoidint得到链表长度findNodeByPosintNodeInfo通过在链表中位置查找到

33、设备节点线程类详细百描述傲1唉 笆.佰 Main氨ReadT埃hread耙类按当启动Ma瓣inRea俺dThre挨ad线程,耙执行run爸方法,ru霸n方法先通白过runn般ing判断盎是否执行读稗操作,如果胺runni班ng为tr埃ue,进行疤对设备读操凹作,判断M挨ainHa佰ndler般Threa版d处理线程瓣是否创建,皑未创建则创叭建并将读出霸的数据传给伴MainH伴andle俺rThre袄ad,并启安动线程,循捌环执行。敖q。吧图4.4 癌MainR办eadTh败read皑 RUN流鞍程图岸2把 版.胺 Main凹Handl凹erThr傲ead罢类奥当Main安ReadT芭hread

34、叭线程将读取半的数据传到芭MainH坝andle扮rThre颁ad后,先办对数据进行斑有效性认证皑,如果数据斑有误,使用摆handl颁er传递发跋送给Sma奥rtHom板eActi胺vity即巴主界面UI拜线程八,进行处理霸;如果数据阿无误,判断坝数据类型并斑使用han佰dler传百递,发送给罢Smart白HomeA跋ctivi岸ty进行处扮理。鞍r。疤图4.5 暗MainH疤andle芭rThre敖ad班 RUN流澳程图颁3伴 背.芭 Node瓣Write癌Threa肮d捌类扒只负责执行班设备控制的奥命令,使用疤线程可以使拜程序多次独胺立线程执行版,不被影响扒。哎2。板图4.6 胺NodeW

35、唉riteT稗hread颁 RUN流霸程图巴UI类详细艾描述肮1昂 版.傲 半Smart稗HomeA昂ctivi癌ty奥类扒onCre按ate背a) 初始版化节点列表扒nodeL板ist背。芭b) 设置隘从界面标题坝,澳setTi袄tle斑。百c) 设置扳视图,版setCo啊ntent阿View版。埃d) 获取熬主界面控件邦的引用,澳findV鞍iewBy捌Id扒。肮e) 设置芭GridV邦iew和使用的适配器哀BaseA蔼dapte哀r跋。版2。笆f) 设置傲选项被单击扮的监听器,案setOn班ItemC邦lickL碍isten坝er搬。办Q。般g)般 设置线程碍的 Han跋dler,唉重写

36、拜handl肮eMess按age邦方法。翱M。阿h) 打开埃程序读线程哎。i) 注册澳返回广播接叭收器。百onDes傲troy按a)氨唉卸载广播接拔收器,unreg氨ister坝Recei敖ver岸。唉b)背澳关闭读线程埃,昂mainR隘eadTh柏read.败stop罢。按c)坝矮关闭主界面颁Activ叭ity,哎this.昂finis岸h坝。矮updat斑aLayO瓣ut俺a)爸邦设置所有节爱点的看门狗扮减一,哎allNo把deSet跋Watch翱Dog背。摆U。绊b)癌搬判断是否有拔节点看门狗背死亡,百findN靶odeDo肮gDie稗。如果存在办,删除No癌de节点链奥表,碍delBy

37、昂DevNu熬m哀,并判断是班否进入该节板点从界面,氨如果进入则翱发送广播使矮其退出。最熬后,向该死翱亡设备发送笆确认命令拔ISEXIT败,如果未死霸亡,重新发矮送添加节点奥NewNo半de的数据扳。巴U。吧c)背更新适配器奥notif拔yData俺SetCh稗anged挨。氨(4)暗把BackR盎eceiv耙er安 广播接受瓣器扳a)罢从节点列表摆删除从界面艾返回的节点哀的原对象,敖nodeL靶ist.d皑elByD皑evNum鞍()傲D。熬b)案邦向节点列表耙插入从界面皑返回的新节奥点对象,岸nodeL百ist.i啊nsert阿Node(埃)挨g。案c)袄哎关闭从界面碍Activ把ity

38、,叭finis氨hActi俺vity(搬)袄。皑9。笆2坝 绊.靶 Node吧InfoA摆ctivi捌ty班类稗onCre拔ate伴a)氨伴创建从节点捌对象Nod半eInfo爱。氨b)啊佰设置拌视图懊,靶setCo爱ntent隘View唉。败c)罢稗获取从界面叭控件的引用袄,安findV半iewBy颁Id疤。盎d)芭瓣通过把Inten摆t澳对象,获取背从主界面传矮来的nod扳eInfo稗对象并赋给从界面对象疤。安p。版e)班扮设置从邦界面疤标题,靶setTitle盎。岸f)袄岸将主界面隘获取肮的node柏Info对蔼象反馈到界挨面,肮setTe百xt败。拌p。伴g)爸白注册广播佰接收器把h)挨

39、熬设置返回键案监听器笆i)颁耙设置风扇办监听器笆,设置Le安d监听器,败设置蜂鸣器哀监听器,设蔼置数码管监爱听器背A。盎(2)版版onDes扮troy艾卸载广播接案收器,啊unreg稗ister芭Recei胺ver搬。凹数据库详细八描述白1 . 盎RfidR霸ecord靶DBHel隘per笆类巴继承坝SQLit耙eOpen摆Helpe扮r隘类,重写o颁nCrea把te方法。按a。表新建版使用敖SQLit板eData傲base笆对象的败execS盎QL白方法去添加败表。命令如把下:般6。拌creat罢e tab隘le if把 not exist白s rfi挨dTabl瓣e (id把 INTE办G

40、ER p把rima版ry ke耙y aut巴oincr巴ement斑, de坝vId v颁archa昂r, rf埃Id va靶rchar颁)耙H。增加捌使用胺SQLit佰eData斑base啊对象的靶execS氨QL芭方法去增加疤数据。命令傲如下:半z。氨inser啊t int唉o rfi般dTabl哀e(dev挨Id, r版fId) 搬value啊s (?,袄?)唉f。删除邦使用白SQLit败eData版base佰对象的捌execS扳QL佰方法去删除败数据。命令矮如下:佰M。扮delet斑e fro疤m rfi鞍dTabl懊e whe翱re rf稗Id =坝 罢?办d。艾2 . 数跋据库表设

41、计按表4.9 瓣rfidT氨able版数据库表字段名类型属性描述idINTEGERprimary key autoincrementID主键devIdVARCHARNull设备号rfIdVARCHARNullRFID号办框架详细描搬述摆拌 MyUa跋rtSer凹vice八类癌1 .加载斑库,疤Syste版m挨.load疤Libra稗ry(u捌art_r摆untim傲e)爸e。八2 .重写霸构造函数,霸调用本地 罢_ini癌t方法,对爱设备进行初凹始化。澳B。3. 通过艾调用本地方盎法实现ja安va方法伴A8-数据笆传递架构模版块层次接口表 数据传递(串口操作)应用层UartDataUpdate

42、New MyUartServiceUartSendCmdframework层_uart_send_cmd_uart_data_update_initJNI层Uart_writeUart_initUart_readHal层Uart_write_halUart_read_drvUart_device_openUart_read_halUart_write_drv驱动WriteOpenRead瓣图4.6.瓣1 接口层俺次图盎图4.6.安2 结构图HAL层宏绊表4.10办 HAL层哎宏定义翱表名称内容功能UART_HARDWARE_MODULE_IDuart定义hal 的模块idSTART0 xAA数

43、据包的开始符NEW0 x01新节点加入发的包INFO0 x02采集的信息包RFID0 x04刷卡时发的包全局变量啊表4.11奥 邦HAL爸层全局变量敖表名称类型功能fdint操作设备的文件描述符结构体敖表4.12挨 HAL层阿结构体佰表struct uart_module_t成员名类型功能commonstruct hw_module_t记录本stub的基本信息和入口struct uart_control_device_t成员名类型功能commonstruct hw_device_t记录本stub操作设备时需要包括的接口uart_read_hal函数指针指向实际读串口的函数uart_write_

44、hal函数指针指向实际写串口的函数4、流程图拔图4.7 拜HAL层结稗构图JNI层宏扮表4.13案 JNI层柏宏定义唉表名称内容功能UART_HARDWARE_MODULE_IDuart定义HAL 的模块ID全局变量袄表4.14白 JNI层哎全局变量百表名称类型功能sUartDeviceuart_control_device_t *保存通过调用stub中的open接口后得到的devices handlesUartModuleuart_module_t*保存通过调用Android HAL标准函数hw_get_module,传入UART_HARDWARE_MODULE_ID后得到的UART stu

45、b的句柄流程图氨JNI层主傲要实现了J袄ava与c摆/c+之澳间的过渡,盎不涉及复杂办的逻辑,只矮根据规则为肮上层函数调版用相应的下绊层接口,参颁见整体流程奥。八d。白F背ramew拜ork层坝表4.15皑 肮Frame扒work笆层类俺表public class MyUartService方法功能System.loadLibrary装载编译好的JNI层的共享库public MyUartService构造函数,打开并初始化串口public String UartDataUpdate读取当前串口信息数据包public int UartSendCmd向串口传送命令数据包整体流程拜下续:ha癌l层爱

46、图4.8 盎整体流程图坝关键代码分安析昂NodeC坝md.ja盎va碍stati扳c MyU斑artSe版r阿vice 袄myUar扳tService =肮 new 伴MyUar艾tServ八ice()鞍;佰 /新建班对象,初始懊化 皑 鞍 八 捌 氨 肮 办 板 爱 熬 挨 瓣 摆 哀 把 柏 疤 阿 般 半 懊 疤 翱S。百Strin斑g s =八 myUa碍rtSer蔼vice.唉UartD案ataUp凹date(霸); /皑更新采集数摆据 斑 百 疤 阿 扳 皑 艾 澳 隘 班 爱 矮 昂 胺 肮 爱 袄 哎 摆 翱 安 版 般 白 爸8。耙myUar罢tServ澳ice.U碍artS

47、e胺ndCmd爸(1, L颁ED_ON哎); /白/点亮1号斑设备的灯奥 般 把 罢 板 背 坝 般 敖 班 白 唉 挨 版 盎B。按MyUar版tServ挨ice.j傲ava懊packa癌ge cn白.com.皑smart澳home.胺uart;扮 笆 挨 澳 板 班 哀 摆 罢 埃 奥 唉 办 跋 颁 哀 翱 把 爱 碍 胺 瓣 唉 百 绊 八 熬 爱 班 霸 哀 拔 阿 扳 霸 把 颁 般 八 岸 暗 扳 捌 靶 扒 败 岸 芭 翱 懊 爱 拌impor胺t and跋roid.斑util.皑Log;版 皑 版 芭 般 澳 挨 八 吧 隘 把 背 把 蔼 隘 胺 碍 耙 拔 碍 白 罢 啊

48、 版 鞍 爸 捌 澳 颁 八 叭 岸 白 肮 扮 凹 败 拜 霸 叭 安 奥publi暗c cla盎ss My邦UartS颁ervic爱e 熬 安 坝 隘 岸 按 板 扒 白 唉 暗 盎 背 翱 靶 斑 隘 哎 耙 扮 吧 办 邦熬/*瓣 摆 罢 埃 凹 跋 班 俺 搬 半 奥 耙 邦 碍 捌 俺 罢 案 肮 摆 皑 搬 胺 蔼 扮 矮 疤 氨 埃 胺 袄 癌 耙 班邦 * lo奥ad na搬tive 扒servi芭ce.柏 啊 澳 癌 版 佰 隘 扮 唉 叭 疤 翱 背 蔼 邦 凹 矮 板 俺 挨 靶 岸 罢矮 */巴 爱 澳 懊 拔 矮 跋 绊 瓣 扳 板 瓣 板 捌 吧 案 白 懊 办

49、肮 霸 坝 阿 把 把 百 埃 拜 摆 扮 拔 捌 颁 跋芭stati班c 班唉百 疤 盎 捌 蔼 蔼 挨 笆 翱 熬 扳 哀 岸 佰 拔 爱 埃 败 般 叭 奥 安百昂Syste肮m.loa笆dLibr耙ary(鞍uart_靶runti癌me);败 /装载靶库隘胺案扒 巴 板 办 八 霸 笆 唉 板 碍 拔 挨5。邦岸鞍白昂 蔼 敖 百 埃 背 拔 岸 癌 背 败 板败俺 癌 爱 八 跋 拔 办 埃 奥 百 蔼 矮 奥鞍摆 败 挨 奥 坝 澳 败 熬 笆 叭 阿 拜百伴 把 扳 笆 扳 八 翱 板 碍 颁 暗 笆 罢澳publi皑c MyU氨artSe皑rvice凹() 扳芭昂 搬 坝 凹

50、绊 昂 哀 绊澳跋 爱 安 捌 拌 唉 暗 瓣 啊 耙 肮 败 凹 癌 靶 拜 捌版坝_init班(); /靶/注册本地颁方法,打开芭串口并初始俺化胺捌澳 俺 皑 败 皑 靶 板 捌 奥 俺 稗 绊 按扮靶爱颁 熬 傲 按 安 俺 扒 皑 背 碍办澳 吧 俺 坝 爱 百 瓣 胺 叭 案 埃 案 绊 奥 按坝碍 柏 耙 白 笆 斑 稗 按 搬 唉 翱 般搬癌 拔 澳 矮 岸 敖 叭 班 搬 肮 把 拔熬/*搬傲把 巴 盎 板 袄 奥 熬 八八埃 爸 皑 阿 澳 般 板 皑 爸 袄 拌 蔼 隘 半 巴 爱 埃皑 * ua摆rt na跋tive 熬metho安ds. 肮板氨 斑 碍 皑 霸 颁 柏拜

51、搬 背 氨 胺 碍 奥 氨 澳 岸 鞍 摆 鞍 按 碍 霸 耙 叭扮 */袄绊板 捌 拌 瓣 笆 癌 罢 搬拔矮 拔 俺 啊 碍 皑 岸 般 绊 拌 稗 胺 隘 按 癌 癌 搬皑publi佰c Str坝ing U氨artDa坝taUpd哎ate()般 扳拌班 背 笆 搬 邦 隘 哎 袄 蔼 佰 白 般4。爸胺稗Strin碍g s =袄 _uar隘t_dat耙a_upd挨ate()敖;跋啊捌 阿 熬 盎 昂 稗 氨 隘 吧 哎 斑r。埃半盎retur澳n s;靶v跋百暗 搬 懊 斑 耙 鞍 扒 鞍 邦版扮 蔼 爸 伴 埃 傲 碍 稗 败 俺 傲 唉 癌 坝 肮 碍罢/更新百采集的数据扳肮鞍 八

52、哎 皑 胺 邦 懊 肮佰瓣 白 爸 背 哎 板 把 跋 哀 熬 艾 哀 扮 白 袄 叭 傲败绊 伴 艾 板 罢 阿 靶 扳 熬 瓣 啊 耙袄扳 扳 班 澳 胺 奥 捌 扳 昂 把挨publi捌c int扮 Uart艾SendC把md(in笆t n, 佰int c扒) 傲按背 跋 挨 案 奥 懊 爸 盎 斑 白 碍 盎O。疤胺半_uart板_send扳_cmd(案n, c)耙; 蔼隘耙 凹 般 斑 扮 摆 鞍邦碍 叭 啊 肮 案 绊 阿 按 笆 瓣 隘 案 白 俺 扒 般 袄百耙retur巴n 0; 隘扳唉 扮 霸 哎 摆 盎 胺 瓣蔼 吧 懊 鞍 芭 俺 败 唉 矮 癌 蔼 懊 背 癌 肮 板

53、 巴办 /发耙送命令控制伴M0板安 罢搬般 绊 霸 办 扳 隘 蔼柏 碍 癌 皑 百 拜 把 唉 八 爱 翱 百 芭 败 爸 哀 瓣百priva澳te st澳atic 扮nativ澳e boo澳lean 扒_init扳();伴 /声明稗jni库可疤以提供的方凹法邦摆安 翱 般 佰 班 邦 澳 斑 艾 敖 熬 吧b。搬priva芭te st蔼atic 芭nat板ive S俺tring懊 _uar巴t_data_upd澳ate()昂;摆疤熬 邦 败 盎 按 哎 蔼 伴 暗 碍 挨 罢S。哎扒priva啊te st拌atic 拌nativ啊e int蔼 _uar拜t_sen胺d_cmd疤(int 搬

54、n, in班t c);啊 摆爸皑 扒 拔 跋 败 昂 八 哀 百 伴 叭 唉 癌 捌b。罢uart_癌stub暗inclu百de半uart鞍.h版struc扳t uar蔼t_mod扒ule_t把 百阿把 哎 背 百 八 芭 霸 昂 澳艾拔 凹 哀 懊 板 拔 傲 啊 案 暗 颁 颁 隘 绊 败 st瓣ruct 伴hw_mo爸dule_搬t com芭mon; 艾疤敖 岸 按 疤 绊 爱 八 摆 懊 熬 肮 胺;八/HAL柏 规定不能巴直接使用h般w_mod按ule_t蔼结构,因此邦需要做这么绊一个继承。跋 搬 哎 把2。瓣澳敖 暗 安 皑 熬 胺 把 板 伴 百 蔼 拜 碍struc班t uar

55、唉t_con佰trol_疤device_t 蔼 瓣傲败 扒 班 吧 搬 氨 翱 拔 柏 埃 氨 艾 瓣/自定义耙的一个针对隘Uart控疤制的结构,伴包含hw_邦devic啊e_t和支笆持的API坝操作癌氨八 靶 昂 跋 绊 俺 芭 肮 哎 拜 癌 盎y。百 st邦ruct 按hw_de爱vice_稗t com疤mon; 捌叭扳 氨 安 扮捌瓣 板 背 瓣 暗 霸 胺 癌 搬 稗 霸 胺 笆 爸 癌 暗 熬 鞍 癌 懊 百 /*敖 attr俺ibute八s */肮澳扮 昂 班 伴 板 背 皑 癌 办 昂 隘 凹 巴爸啊 般 艾 柏 绊 瓣 皑班傲 癌 拜 矮 坝 拜 巴 扮 巴 澳 百 盎 拔

56、背 捌 /*安 supp挨ortin斑g con安trol 安APIs 疤go he蔼re */唉 稗 佰 啊霸爸 鞍 唉 隘 按 邦 吧 拜4。斑 in胺t (*u埃art_r坝ead_h隘al)(s隘truct哀 uart艾_cont败rol_d瓣evice白_t *d办ev, c袄har *班buf, 挨int c俺ount)八; 斑 柏 盎 拔 碍 拔 罢 胺 把 氨 霸y。般奥int (叭*uart拌_writ八e_hal斑)(str绊uct u肮art_c肮ontro皑l_dev埃ice_t吧 *dev笆, con绊st ch敖ar *c肮md);蔼 扮 凹 坝 俺 稗q。败;蔼

57、罢 霸 碍 捌 巴班版 八 埃 皑 懊 蔼 叭 佰 案 敖 般 颁#defi败ne UA案RT_HA爱RDWAR邦E_MOD叭ULE_I版D ua半rt 隘/定义一耙个MODU艾LE_ID挨,HAL层岸可以根据这傲个ID找到办我们这个H敖AL st班ub 矮 癌 袄 俺 斑 颁霸扮 隘 懊 懊 澳e。奥cn_co爱m_傲smart袄home背_uart拜_MyUa稗rtSer版vice.艾cpp搬K。蔼#defi阿ne LO白G_TAG爱 MyU稗artSe皑rvice般颁 奥 胺 俺 傲 熬邦碍 翱 澳 伴 白#incl拔ude 矮utils澳/Log.罢h般 昂 爱 癌 哎 罢笆敖 艾 隘

58、 办 斑 摆 岸 按#incl耙ude 案 蔼 懊 白 澳 摆瓣拔 矮 摆 哎 搬 哎 笆 伴#incl佰ude 翱 凹 瓣 艾 八 摆伴板 皑 扮 摆 吧 碍 绊 扒#incl耙ude 袄 斑 败 疤 澳 邦班哎 唉 哎 埃 挨 爸 懊 斑#incl傲ude 百 绊 捌 般 捌 隘岸敖 疤 瓣 斑 矮 版 皑 拔#incl跋ude 般 绊 唉 坝 皑 啊疤翱 挨 熬 按 暗 奥 办 皑#incl凹ude 百./.安/uart半_stub拔/incl笆ude/u拔art.h吧吧 靶 扮 哎 耙 懊哀傲 瓣 柏 鞍 凹 罢 哀C。巴拌搬摆拔八碍爸斑板矮巴搬笆捌鞍柏罢版跋 岸stati搬c uar

59、碍t_con霸tr伴ol_de按vice_氨t *sU阿artDe柏vice 巴= 0;盎 坝 艾 艾 傲 啊俺搬 癌 唉 瓣 斑 跋 扳8。班stati疤c uar背t_mod捌ule_t皑* sUa奥rtMod熬ule=0罢;胺 罢 敖 敖 俺 艾跋胺 把 拔 埃 爱 熬 斑JNINa敖tiveM扒ethod半是 jni蔼层注册的方凹法,Fra拔mewor疤k层可以使吧用这些方法稗 罢 瓣 *_init 拔、吧uart_疤read般、靶uart_盎write艾 百是在Framewor碍k中调用的搬方法名称,胺函数的类型爸及返回值如皑下: 坝 败 皑 肮捌斑 熬 哎 八 肮 白 拜 吧 熬K

60、。凹*()翱Z坝无参数 返跋回值为bo背ol型 搬 叭 芭 埃 半氨拌 俺 癌 案 拔 拜 * 懊()Lja半va/la岸ng/St俺ring;埃 无参数 肮返回值为S邦tring凹型 氨 搬 盎 敖 疤拜哎 鞍 跋 俺 罢 疤 斑d。背* 埃(II)I熬 参数为把2个int摆型 返回值按为int型哎 癌 袄 昂 唉 板阿 柏 袄 笆 哀 阿 按岸拔唉挨奥隘氨柏半凹拜俺颁伴笆扳板肮 敖 蔼 敖 巴stati颁c con版st JN隘INati皑veMet隘hod g拔Metho爸ds 斑= 爸 安 埃 霸 巴 耙氨稗 安 背 扳 搬 拔 碍z。敖办_in俺it, 靶()Z胺, (vo啊id*)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论