ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:261.19KB ,
资源ID:1538540      下载积分:8 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wnwk.com/docdown/1538540.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于NFC的智能家居环境监测系统设计和实现 计算机专业.docx)为本站会员(g****t)主动上传,蜗牛文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蜗牛文库(发送邮件至admin@wnwk.com或直接QQ联系客服),我们立即给予删除!

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

1、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)

2、;测量结果:Record(mno,sensor_id,record).4.5.4 逻辑设计阶段在概念设计完成后需要进行逻辑设计,即完成概念内容到符合数据库管理系统的逻辑结构,数据组织和数据处理是这一阶段的两个要点,通过这一阶段可以理清实体与实体、实体与属性之间的关系,这对建立关系型数据库来说是不可或缺的条件。上述E-R图中描述的关系模型种实体与属性的关系为:主板标签:属性有(标签编号, 标签名称, 生产厂家);传感器:属性有(传感器编号, 传感器名称, 传感器量程);测量结果:属性有(标签编号, 传感器编号, 测量数值).这三个实体之间的联系如下:一个主板标签有且仅有一个唯一编号,一个主板可配

3、备多个传感器,一种传感器可供多个主板使用,因此,主板与传感器之间具有多对多的关系;一个主板标签可以有多个传感器的测量结果,一种传感器的测量结果可以是多个主板标签,因此主板标签和传感器测量结果是多对多的关系;一个传感器对应一个测量结果,一个测量结果对应一个传感器,因此传感器与传感器测量结果具有一对一的联系。4.5.5 物理设计阶段物理设计阶段是将逻辑数据模型应用为物理结构的过程,要保证数据库在存储数据时有较好的存储结构和存取方法,同时还有注重存取时的时间效率和空间效率。在查询表格时,为数据表建立索引可提高查询速率,本系统中存在较多的查询操作和较少的插入操作,非常适合在数据表中建立索引以提高查询效

4、率,本数据库中建立索引如下: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)

5、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

6、 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通信和生活中拨打电话的场景类似,打电话之前需要拨通电话号码,对方听到电话铃声后拿起电话,此时通话连接就建立起来,等到电话结束,挂断电话连接也随之

7、结束。Socket通信过程需要在创建前配置好IP地址和监听端口号,本机测试时使用的IP地址为192.168.1.106,端口号为8087,这里需要注意端口号尽量选择空闲端口以免与其它软件发生冲突导致接收不到数据。配置好IP地址和端口号之后,调用socket()函数创建一个socket进程,然后将IP地址和端口号绑定到这个socket会话进程上,对目标端口号进行监听listen(),accept()方法会进行阻塞知道接收一个socket连接,此时就可以调用read()函数读取接收到的数据。最后关闭连接,完成一次socket通信的会话过程,其程序设计流程图如下图所示:图4.13 Socket通信程

8、序流程图Fig 4.13 Program flow diagram of socket communication程序中socket通信的前面配置部分是固定模式语句,只要按照操作步骤调取相应方法即可,因此本文不做具体介绍。建立起Socket通讯后便可通过read()方法获取到上传来的数据,程序需要对其进行解析以还原本身的传感器数据,这才是本程序的重点。因为在主办发送数据环节将数据打包时按照高位在前,低位在后的顺序排列,并且小数向前进一位相当于扩大十倍,所以解析时高位*256+低位,带小数位除10还原原始数据,最后关闭socket通信,具体的数据解析代码如下:/配置本机IP地址和端口号$ip =

9、 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=($data

10、111*256+$data112)+($data113*256+$data114)/10;$data23=$data115/10;$data24=$data116;print_r($data2);socket_close($msgsock);4.6.2 增删改查程序设计数据库建立后,由服务器程序来完成对数据库各表的增删改查操作,这部分的软件开发工作是基于php语言,thinkPHP框架编写。在使用时,首先配置好框架需要的数据库基本信息配置,包括数据库类型,数据库名称密码等,配置好使用参数后,即可测试使用,具体配置文件config.php内容如下:配置值 /mysql全局定义 DB_TYPE =

11、 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、新增数据表信息初始建立数据库系统时,要录入主板标签、传感器等表格

12、的名称、编号等基本信息。程序首先获取用户输入的数据,然后组成目标数组,使得数据表字段与数据内容一一对应,再调用thinkPHP框架中add()或addAll()方法即可完成对数据库中各数据表的增加信息操作,也可以使用SQL语句在数据库端直接添加数据,具体的SQL语句举例:在sensor表中新增一条传感器数据的值为(温度传感器,100):INSERT INTO sensor VALUES(温度传感器,100)PHP程序添加传感器数据add_sensor_data()程序如下: if (IS_POST) $data = array( sensor_id = $_POSTsensor_id, sen

13、sor_name = $_POSTsensor_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=$_POSTids; $user = M(sensor);/ 按获取的传感器id删除整条传感器数据记录 $flag = $user-where(sensor_id=$ids)-dele

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2