电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

基于NFC的智能家居环境监测系统设计和实现 计算机专业

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

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

基于NFC的智能家居环境监测系统设计和实现 计算机专业

4.5.3 概念设计分析概念设计主要是讲需求分析得到的结果抽象为信息结构的概念模型,根据设计需求把系统分为若干对象和对应的关系,再将所有实体和实体的属性模块化,进而组成一个整体,通过概念设计分析,数据库的模型清晰明了,对后期维护和修改有很大帮助。根据设计需求,传感器数据库系统的E-R图如下所示:图4.12 传感器数据库E-R图Fig 4.12 E-R diagram of sensor databaseE-R图中各个实体的对应结构为:主板标签:MainBoard(mno,mname,mcompany);传感器:Sensor(sensor_id,sensor_name,sensor_range);测量结果:Record(mno,sensor_id,record).4.5.4 逻辑设计阶段在概念设计完成后需要进行逻辑设计,即完成概念内容到符合数据库管理系统的逻辑结构,数据组织和数据处理是这一阶段的两个要点,通过这一阶段可以理清实体与实体、实体与属性之间的关系,这对建立关系型数据库来说是不可或缺的条件。上述E-R图中描述的关系模型种实体与属性的关系为:主板标签:属性有(标签编号, 标签名称, 生产厂家);传感器:属性有(传感器编号, 传感器名称, 传感器量程);测量结果:属性有(标签编号, 传感器编号, 测量数值).这三个实体之间的联系如下:一个主板标签有且仅有一个唯一编号,一个主板可配备多个传感器,一种传感器可供多个主板使用,因此,主板与传感器之间具有多对多的关系;一个主板标签可以有多个传感器的测量结果,一种传感器的测量结果可以是多个主板标签,因此主板标签和传感器测量结果是多对多的关系;一个传感器对应一个测量结果,一个测量结果对应一个传感器,因此传感器与传感器测量结果具有一对一的联系。4.5.5 物理设计阶段物理设计阶段是将逻辑数据模型应用为物理结构的过程,要保证数据库在存储数据时有较好的存储结构和存取方法,同时还有注重存取时的时间效率和空间效率。在查询表格时,为数据表建立索引可提高查询速率,本系统中存在较多的查询操作和较少的插入操作,非常适合在数据表中建立索引以提高查询效率,本数据库中建立索引如下:1、 主板标签表的主键mno和传感器表的主键sensor_id存在且唯一,查询主板数据和传感器数据时中经常以此为查询条件,故分别在该属性上建立唯一性索引;2、 测量结果表中的属性mno和sensor_id分别是主板标签表和传感器表中的外键,也是此表中的联合主键,查询时这两个属性通常成对出现,故在这两个属性上建立复合索引;4.5.6 建立数据表使用SQL语句建立设计出的数据表,主要代码如下:(1)主板标签信息表:CREATE TABLE mainboard ( mno CHAR(10) NOT NULL AUTO INCREMENT, mname CHAR (20) NULL, mcompany CHAR (10) NULL, PRIMARY KEY (mno) )(2)传感器信息表:CREATE TABLE sensor ( sensor_id CHAR(10) NOT NULL AUTO INCREMENT, sensor_name CHAR (20) NULL, sensor_range CHAR (10) NULL, PRIMARY KEY (sensor_id) ) (3)测量结果信息表:CREATE TABLE record ( record_id INT(10) NOT NULL AUTO INCREMENT,mno CHAR(10) NOT NULL, sensor_id CHAR (10) NOT NULL, record CHAR (10) NULL, PRIMARY KEY (mno,sensor_id),FOREIGN KEY (mno) references mainboard (mno),FOREIGN KEY (sensor_id) references sensor (sensor_id), ) 4.6 服务器程序设计4.6.1 服务器socket通信程序设计Socket通信和生活中拨打电话的场景类似,打电话之前需要拨通电话号码,对方听到电话铃声后拿起电话,此时通话连接就建立起来,等到电话结束,挂断电话连接也随之结束。Socket通信过程需要在创建前配置好IP地址和监听端口号,本机测试时使用的IP地址为192.168.1.106,端口号为8087,这里需要注意端口号尽量选择空闲端口以免与其它软件发生冲突导致接收不到数据。配置好IP地址和端口号之后,调用socket()函数创建一个socket进程,然后将IP地址和端口号绑定到这个socket会话进程上,对目标端口号进行监听listen(),accept()方法会进行阻塞知道接收一个socket连接,此时就可以调用read()函数读取接收到的数据。最后关闭连接,完成一次socket通信的会话过程,其程序设计流程图如下图所示:图4.13 Socket通信程序流程图Fig 4.13 Program flow diagram of socket communication程序中socket通信的前面配置部分是固定模式语句,只要按照操作步骤调取相应方法即可,因此本文不做具体介绍。建立起Socket通讯后便可通过read()方法获取到上传来的数据,程序需要对其进行解析以还原本身的传感器数据,这才是本程序的重点。因为在主办发送数据环节将数据打包时按照高位在前,低位在后的顺序排列,并且小数向前进一位相当于扩大十倍,所以解析时高位*256+低位,带小数位除10还原原始数据,最后关闭socket通信,具体的数据解析代码如下:/配置本机IP地址和端口号$ip = '192.168.1.106'$port = 8087;/发送到客户端$buf = socket_read($msgsock,100);$talkback = "$buf"$data=str_split(bin2hex($talkback);$str=sizeof($data);for($i=0;$i<$str/2;$i+) $data1$i=hexdec($data$i*2.$data$i*2+1);$data20=$data12*256+$data13; $data21=($data16*256+$data17)+($data18*256+$data19)/10; $data22=($data111*256+$data112)+($data113*256+$data114)/10;$data23=$data115/10;$data24=$data116;print_r($data2);socket_close($msgsock);4.6.2 增删改查程序设计数据库建立后,由服务器程序来完成对数据库各表的增删改查操作,这部分的软件开发工作是基于php语言,thinkPHP框架编写。在使用时,首先配置好框架需要的数据库基本信息配置,包括数据库类型,数据库名称密码等,配置好使用参数后,即可测试使用,具体配置文件config.php内容如下:<?phpreturn array(/'配置项'=>'配置值' /mysql全局定义 'DB_TYPE' => 'mysql', / 数据库类型 'DB_HOST' => 'localhost', / 服务器地址 'DB_NAME' => 'bui', / 数据库名 'DB_USER' => 'multisensor', / 用户名 'DB_PWD' => '123456', / 密码 'DB_PORT' => '3306', / 端口 'DB_PREFIX' => '', / 数据库表前缀/ 'SHOW_PAGE_TRACE' => true,);增删改查的服务器程序设计如下图所示:图4.14 服务器程序流程图Fig 4.14 Program flow diagram of server module1、新增数据表信息初始建立数据库系统时,要录入主板标签、传感器等表格的名称、编号等基本信息。程序首先获取用户输入的数据,然后组成目标数组,使得数据表字段与数据内容一一对应,再调用thinkPHP框架中add()或addAll()方法即可完成对数据库中各数据表的增加信息操作,也可以使用SQL语句在数据库端直接添加数据,具体的SQL语句举例:在sensor表中新增一条传感器数据的值为(温度传感器,100):INSERT INTO sensor VALUES(温度传感器,100)PHP程序添加传感器数据add_sensor_data()程序如下: if (IS_POST) $data = array( 'sensor_id' => $_POST'sensor_id', 'sensor_name' => $_POST'sensor_name', 'sensor_range' => $_POSTsensor_range', ); $user = M('sensor'); $flag = $user->add($data); if(!$flag) $this->ajaxReturn(0); $this->error("新建传感器信息失败!"); else $this->ajaxReturn(1); echo "新建传感器信息成功,ID = $flag" 2、删除数据表信息当数据表中的数据不再需要时,要对垃圾信息进行删除操作,保留仍具有价值的数据,清除不必要占用空间的数据,这里调用thinkPHP框架中where()->delete()方法即可完成对数据表中信息的删除操作,也可以使用SQL语句在数据库端直接更新数据,具体的SQL语句举例:在sensor表中删除传感器id为1的数据:DELETE FROM sensor WHERE sensor_id = 1;PHP程序删除传感器数据delete_sensor_data()程序如下:if (IS_POST) $ids=$_POST'ids' $user = M('sensor');/ 按获取的传感器id删除整条传感器数据记录 $flag = $user->where("sensor_id=$ids")->dele

注意事项

本文(基于NFC的智能家居环境监测系统设计和实现 计算机专业)为本站会员(hs****ma)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.