欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于Android的温室环境无线监控系统的设计与实现第5章下.docx

    • 资源ID:7952973       资源大小:191.49KB        全文页数:15页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Android的温室环境无线监控系统的设计与实现第5章下.docx

    1、基于Android的温室环境无线监控系统的设计与实现第5章下(4) 数据显示与绘制曲线在Android系统下,Android的UI操作不是线程安全的,当多个线程同时操作UI时,会导致线程安全问题,因此Android界面的UI操作都是只能在主线程中执行。监控终端的数据显示和曲线的绘制在主线程进行,但是在Android机制中,如果一条消息处理超过一定时间,Android就会抛出无响应的消息,为了避免数据处理时间过长和使监控终端开发简单化,在数据显示和曲线绘制部分采用Handler消息传递机制。Handler主要是实现在新启线程中发送消息,在主线程中接收消息和处理消息50,如图5.10是通过Hand

    2、ler进行数据显示和绘制的执行过程图。图5.10 Handler执行过程图如图5.10所示数据处理线程通过sendMessage()方法把Message对象发送到MessageQueue消息队列当中,Looper对象从MessageQueue队列读取Message对象,然后把消息对象送给Handler处理,每个线程只能有一个Looper对象。在主线程中,温室环境数据通过Handler来接收数据处理线程发来的信息,通过Message获取Bundle对象,从而获取对应的有效数据,最后对温室数据进行显示和绘制曲线。 myMessageHandler = new Handler() Override

    3、public void handleMessage(Message msg) Bundle b = msg.getData(); envirfo =(Envirfo) b.get(envirfo); datadisplay(envirfo); curvedrawing(envirfo); super.handleMessage(msg); ; 数据的曲线绘制功能是采用Android系统上制作图表的框架AChartEngine。AchartEngine框架使用简单,如图5.11所示是封装的图表类Curve的成员方法和属性。图5.11 曲线类的方法和属性如图5.11所示,在Curve类中定义了多个

    4、属性和方法,renderer描述的是图表的样式,如曲线的颜色、标题等样式;dataset描述的图表统计数据;draw方法是绘制曲线方法,根据传入的数据对象进行曲线绘制。3. 配置温室环境监控信息监控终端可以对温室环境监控信息进行配置,其中配置的温室环境监控信息包括温室环境范围修改信息、温室设备状态修改信息、温室监控模式修改信息。监控终端对温室环境监控信息进行修改之后,向远程服务端发送请求,修改远程服务端数据库中的数据。监控终端对温室环境监控信息修改后,先把修改信息存储到缓存中,然后由数据上传线程优先把修改信息发送到远程服务端。4. 数据信息的上传上传的数据分为两大类,分别是温室环境参数数据和配

    5、置的温室环境监控信息,上传数据的线程需要对上面两种数据进行分时上传,因此在上传时需要对这两种数据设置上传的优先级。通过分析知道,配置的温室环境监控信息是最重要的,同时考虑到温室环境监控信息修改频率比较低,因此这两种数据上传的优先级最高的是配置的温室环境监控信息,其次是温室环境因子信息。配置的温室环境监控信息中的三种数据按温室环境范围修改信息、温室设备状态修改信息、温室监控模式修改信息来上传。如图5.12是数据上传线程的流程图。图5.12 数据上传流程图从图5.12中可以看出,当缓存中同时有温室环境因子信息和温室环境监控修改信息时,优先上传温室环境监控修改信息,在数据上传线程中的关键代码如下所示

    6、:if(AlterData.equipmentsize()=0&AlterData.houseparasize()=0& AlterData.housemodesize()=0) if(ReceiveData.size() != 0) state = HttpClientUtil.postRequest(receiveurl, ReceiveData.getData(); else if(AlterData.houseparasize() !=0) state = HttpClientUtil.postRequest(receiveurl, AlterData.gethouseparaData

    7、(); if(AlterData.equipmentsize() !=0) state = HttpClientUtil.postRequest(receiveurl, AlterData.getequipmentData(); if(AlterData.housemodesize() !=0) state = HttpClientUtil.postRequest(receiveurl, AlterData.gethousemodeData(); 为了能够准确的知道数据是否正确的上传,在代码中添加了校验符state,当数据正确上传后,返回对应上传成功的整数,然后移除缓存中刚上传的数据,当返回-

    8、1时,表示没有上传成功,数据需要继续上传。5. 设备控制功能监控终端具有控制温室设备的功能,温室环境调节设备控制器就是串口继电器,通过控制继电器来控制温室设备。监控终端通过串口发送开关指令到ZigBee协调器,然后再传输到温室环境调节设备控制器,该控制器使用16路串口继电器便于系统的维护和升级。当数据处理线程发现温室环境处于紧急状态时,触发设备控制事件,对串口继电器进行操作,并返回操作状态。对串口继电器操作,有多种组合方式,本文使用“组开”和“组关”模式,如表5.5所示是串口继电器发送帧格式说明。表5.5 串口继电器发送帧格式说明帧首设备类命令参数0参数1参数2校验和0x000x5A0x05(

    9、组开)校验和0x000x5A0x06(组关)校验和如表5.5所示,指令发送到串口继电器的帧格式,其命令列的0x05代表一次能使几个继电器吸合,0x06一次能使几个继电器断开,具体哪一个由参数0-2决定,无效的参数建议设置成0x00。例如当要吸合串口继电器中的Y15、Y13、Y11、Y9、Y6、Y5、 Y4、Y3,其他关闭,则参数0的指令为“01111000”,参数1的指令为“10101010”,参数2为“00000000”。参数0-2的数据在监控终端登录后获取的温室信息,其指令存储在远程服务端设备表中,存储方式统一,如设备表控制为1xxxxxxx:xxxxxxxx:xxxxxxxx表示打开Y7

    10、,其他状态不变。当监控终端接收到远程服务端的控制命令或现场控制命令后,对命令进行解析,然后发送命令到设备控制器,继电器完成操作后,会立即返回设备状态,让监控终端能够检验操作是否成功。6. 信息的接收与处理监控终端通过短信接收的信息包括三种,分别为温室环境范围修改信息、温室设备状态修改信息、温室监控模式修改信息。其流程图如图5.13所示。图5.13 接收控制信息处理流程在接收到信息时,先要对信息进行分析,如果是温室环境范围修改信息就通知终端修改环境参数范围;如果是设备状态修改信息,查看是控制哪个设备,然后通过串口发送命令到协调器调节温室环境调节设备控制器;如果是监控模式修改信息就通知终端修改监控

    11、模式。在对接收短信进行监听时,需要在AndroidManifest.xml文件中添加监听权限和注册广播,其代码如下所示。 如上面代码,注册了SMSBroadcastReceiver,当系统接收到短信后就会立即触发onReceive方法,其分析短信的关键代码如下: Bundle bundle = intent.getExtras();Object messages = (Object) bundle.get(pdus); SmsMessage smsMessage = new SmsMessagemessages.length; for (int n = 0; n messages.length

    12、; n+) smsMessagen = SmsMessage.createFromPdu(byte) messagesn); 5.3 远程服务端软件设计本节将对远程服务端功能模块进行设计,对数据进行持久化设计与实现,对远程服务端各个基本功能进行详细设计,并编程实现。5.3.1 远程服务端功能模块设计根据第三章远程服务端的框架设计和开发方案分析,远程服务端采用MVC分层模式,图5.14是其远程服务端基本功能图。图5.14 远程服务端的基本功能图如图5.14所示,为系统远程服务端的基本功能图,根据功能将其分为系统管理模块、接收数据与存储模块、查询模块。在查询功能模块中又包括实时数据查询、曲线绘制、

    13、设备/传感器的查询、设备的工作状态、温室作物的信息以及历史数据查询;系统管理功能模块中包括监控终端信息管理、温室信息管理、设备/传感器信息管理、环境参数信息管理以及用户信息管理;数据接收与存储模块包括温室环境数据和配置的温室环境监控信息的接收与存储。5.3.2 数据库设计与数据持久化实现在对各个功能模块进行设计之前,需要对远程服务端的数据库进行设计和创建,并对使用Hibernate工具持久化进行详细介绍,为实现远程服务端的功能做好准备。1. 数据库的设计数据库是温室环境无线监控系统关键部分,温室监控系统的温室环境数据、温室设备信息、作物信息、传感器信息、温室信息、温室环境参数范围信息等都需要存

    14、储,以帮助远程服务端对温室的管理。利用数据库可以实现对温室设备状态、传感器信息的统一管理,温室管理人员可以很方便的对温室进行管理,保证温室作物的生长。以下是对系统的远程服务端数据库表的定义。(1) 温室信息表:温室信息表包括自动标识、温室名称、温室中监控终端的号码、温室监控模式、温室一些说明,温室信息表的结构如表5.6所示。表5 6 温室信息表字段名字段类型描述HOUSE_IDINT自动标签HOUSE_NAMEVARCHAR温室名称HOUSE_NUMBERVARCHAR终端号码HOUSE_AUTOTINYINT监控模式HOUSE_COMMENTVARCHAR温室表述(2) 温室环境参数范围设置

    15、表:温室环境参数范围表包括自动标识、温室ID、温室的温度范围、湿度范围、光照强度范围、CO2范围。这些数据能够帮助监控终端查看温室的环境因子数据是否异常,其表的结构如表5.7所示。表5.7 环境参数范围设置表字段名字段类型描述HOUSE_PARA_RANGE_IDINT自动标签HOUSE_IDINT温室IDTEMPERATURE_MAXDOUBLE温度最大值TEMPERATURE_MINDOUBLE温度最小值HUMIDIY_MAXDOUBLE湿度最大值HUMIDIY_MINDOUBLE湿度最小值CARBONDIOXIDE_MAXDOUBLECO2最大值CARBONDIOXIDE_MINDOUB

    16、LECO2最小值LIGHTINTENSITY_MAXDOUBLE光照强度最大值LIGHTINTENSITY_MINDOUBLE光照强度最小值(3) 区域表:为了更精确的控制温室环境,对温室进行分区域,温室分为5部分,即A、B、C、D、E。其表结构如表5.8所示。表5.8 区域表字段名字段类型描述AREA_IDINT自动标签AREA_NAMEVARCHAR区域(4) 温室设备表:温室设备表包括自动标签、设备序列号、设备名称、设备类型、设备工作状态、设备对应的温室ID、区域ID和设备控制指令。温室设备表主要帮助温室监控系统控制温室的环境,通过调节设备工作状态来调节环境,其表的结构如表5.9所示。表

    17、5.9 温室设备表字段名字段类型描述EQUT_IDINT自动标签EQUT_CODEVARCHAR设备序列号EQUT_NAMEVARCHAR设备名称EQUI_TYPEVARCHAR设备类型EQUT_STATUSTINYINT设备工作状态HOUSE_IDINT温室IDAREA_IDINT区域IDEQUT_INSTRUCTIONVARCHAR设备控制指令(5) 温室传感器信息表:传感器信息表包括自动标签、传感器序列号、温室ID、传感器名称、传感器类型、传感器区域ID、传感器说明。该表记录温室内传感器信息,管理员可以管理这些数据,其表结构如表5.10所示。表5.10 温室传感器信息表字段名字段类型描述

    18、SENSOR_IDINT自动标签SENSOR_CODEVARCHAR传感器序列号HOUSE_IDINT温室IDSENSOR_NAMEVARCHAR传感器名称SENSOR_TYPEVARCHAR传感器类型AREA_IDINT传感器区域IDSENSOR_COMMENTVARCHAR传感器说明(6) 温室环境参数信息表:温室环境参数信息表包括自动标签、传感器ID、温室ID、环境参数值、数据的时间。该表就是存储监控终端发送来的数据信息,其表的结构如表5.11所示。表5.11 温室环境参数信息表字段名字段类型描述INFO_IDINT自动标签SENSOR_IDINT传感器IDHOUSE_IDINT温室ID

    19、INFO_VALUEDOUBLE环境参数值INFO_DATADATATIME时间(7) 作物信息表:作物信息表包括自动标签、温室ID、农作物名称、农作物类型、农作物栽种时间、农作物收成时间等信息,其表结构如表5.12所示。表5.12 作物信息表字段名字段类型描述CROP_IDINT自动标签HOUSE_IDINT温室IDCROP_NAMEVARCHAR农作物名称CROP_TYPEVARCHAR农作物类型CROP_PLAN_TIMEDATA农作物栽种时间CROP_HAVE_TIMEDATA农作物收成时间CROP_HAVE_OPERATERVARCHAR农作物收成人CROP_HAVE_WEIGHTV

    20、ARCHAR农作物收成重量CROP_COMMENTVARCHAR农作物说明CROP_STATUEVARCHAR农作物的状态(8) 管理人员登录表:管理人员登录表包括自动标签、用户名、密码、级别。该表主要记录管理人员的相关信息,其表结构如表5.13所示。表5.13 管理人员登录表字段名字段类型描述USER_IDINT自动标签USER_NAMEVARCHAR用户名USER_PASSWORDVARCHAR密码USER_GRADEVARCHAR级别(9) 监控终端信息表:监控终端信息表包括自动标签、温室ID、终端登录名、登录密码。该表主要记录远程监控终端的信息,其表结构如表5.14所示。表5.14 监

    21、控终端信息表字段名字段类型描述AUSER_IDINT自动标签HOUSE_IDINT温室IDAUSER_NAMEVARCHAR终端登录名AUSER_PASSWORDVARCHAR登录密码2. 数据持久化实现通过第三章对远程服务端的方案分析,系统的远程服务端使用Hibernate对数据库数据进行持久化,Hibernate持久化框架图如图5.15所示。图5.15 Hibernate持久化框架如图5.15所示,Hibernate持久化框架演示了Hibernate如何访问关系数据库。Hibernate从配置文件中读取和数据库相关的信息,通过Hibernate的API对数据库进行相关操作。在对数据库进行持

    22、久化时,首先需要对其进行配置,其配置流程如下:(1) 在MyEclipse中,先使用MyEclipse database Explorer来连接温室监控系统的数据库(house),配置连接驱动、URL等设置,连接成功。(2) 使用MyEclipse中的Hibernate Capabilities功能,远程服务端采用Struts2、Hibernate、Spring整合开发,因此需要在Spring配置文件配置数据源,定义数据源bean,并使用COP0数据源实现,其配置代码如下: (3) 在MyEclipse database Explorer窗口连接数据库,通过数据库中的表导出实体类和hbm.xm

    23、l配置文件。通过Hibernate对数据进行访问时,必须先获取SessionFactory对象,设计直接以配置文件方式对SessionFactory对象进行管理,因此在Spring容器中也要统一配置SessionFactoryBean,其代码如下所示: com/house/domain/Auser.hbm.xmlcom/house/domain/Crops.hbm.xmlcom/house/domain/Envirfo.hbm.xml. 5.3.3 远程服务端基本功能实现1. 接收数据与存储模块在本章第一节对监控终端与远程服务端的框架进行了整合,并详细分析其数据传输格式。接收数据与存储模块主要

    24、实现接收监控终端发来的数据,并对数据进行识别和存储。监控终端首先要登录,其远程服务端响应监控终端的登录请求在Servlet中实现,其关键代码如下:String user = request.getParameter(user); String pass = request.getParameter(pass); / 获取系统的业务逻辑组件AuctionManager auctionManager = (AuctionManager)getCtx().getBean(mgr); int userId = auctionManager.validLogin(user , pass); respon

    25、se.setContentType(text/html; charset=GBK); if (userId 0) request.getSession(true).setAttribute(userId , userId); try JSONObject jsonObj = new JSONObject().put(userId , userId); / 输出响应 response.getWriter().println(jsonObj.toString(); catch (JSONException ex) ex.printStackTrace();当监控终端登录成功后,通过HousePar

    26、ametersServlet请求获取温室监控所需数据。监控终端上传的数据有温室环境因子信息和温室环境监控修改信息,远程服务端对不同请求分别通过ReceiveDataServlet、AlterDataEquipmentServlet 、AlterDataHoueseParaServlet 、AlterDataHouseModeServlet四个类来实现,完成数据库的操作。2. 查询模块系统查询模块实现的主要功能包括设备状态、实时数据、历史数据、温室信息、温室农作物信息、设备/传感器信息等,其查询模块的流程图如图5.16所示。图5.16 查询模块处理流程图用户请求后,请求先直接转到Spring事务处理层,然后通过调用对应的业务逻辑类,再通过DAO类对数据库进行操作并最终显示到JSP页面上。(1) 温室实时数据查询:远程服务端的实时数据查询使用了Ajax技术,通过异


    注意事项

    本文(基于Android的温室环境无线监控系统的设计与实现第5章下.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开