实验三野外数据采集

实验三  全站仪数字测图外业数据采集指导书

  

一、实验目的与要求

1.掌握用GTS-102N全站仪进行数字测图外业数据采集的作业方法。

2.会使用数字测图系统软件进行数据传输。(如CASS7.0)。

二、实验内容

1.全站仪地面数字测图外业数据采集。

2.全站仪数字化测图的数据传输。

三、实验步骤简要

数字化测图根据所使用设备的不同,可采用两种方式实现:草图法和电子平板法。电子平板法由于笔记本电脑价格较贵,电池连续使用短,数字测图成本高,固实际中多采用草图法。

1.草图法数字测图的流程:外业使用全站仪测量碎部点三维坐标的同时,领图员绘制碎部点构成的地物形状和类型并记录下碎部点点号(必须与全站仪自动记录的点号一致)。

内业将全站仪或电子手簿记录的碎部点三维坐标,通过CASS传输到计算机、转换成CASS坐标格式文件并展点,根据野外绘制的草图在CASS中绘制地物。如图1所示。

                           图1草图法数字测图的流程

2.全站仪野外数据采集步骤

①置仪:在控制点上安置全站仪,检查中心连接螺旋是否旋紧,对中、整平、量取仪器高、开机。

②创建文件:在全站仪Menu中,选择“数据采集”进入“选择一个文件”,输入一个文件名后确定,即完成文件创建工作,此时仪器将自动生成两个同名文件,一个用来保存采集到的测量数据,一个用来保存采集到的坐标数据。

③输入测站点:输入一个文件名,回车后即进入数据采集之输入数据窗口,按提示输入测站点点号及标识符、坐标、仪高,后视点点号及标识符、坐标、镜高,仪器瞄准后视点,进行定向。

④测量碎部点坐标:仪器定向后,即可进入“测量”状态,输入所测碎部点点号、编码、镜高后,精确瞄准竖立在碎部点上的反光镜,按“坐标”键,仪器即测量出棱镜点的坐标,并将测量结果保存到前面输入的坐标文件中,同时将碎部点点号自动加1返回测量状态。再输入编码、镜高,瞄准第2个碎部点上的反光镜,按“坐标”键,仪器又测量出第2个棱镜点的坐标,并将测量结果保存到前面的坐标文件中。按此方法,可以测量并保存其后所测碎部点的三维坐标。

⑤临时测站点的测量:    在数据采集过程中,有些碎部点用已有的控制点无法测到,这时需临时增加一个测站点,临时测设点的测量是根据前述的碎部点测量中的(侧视)菜单进行,只是在测量之前要输入临时测站点的测站名而已,方法不变。其所得到的坐标数据同样被保存在文件中。

3.下传碎部点坐标:完成外业数据采集后,使用通讯电缆将全站仪与计算机的COM口连接好,启动通讯软件,设置好与全站仪一致的通讯参数后,执行下拉菜单“通讯/下传数据”命令;在全站仪上的内存管理菜单中,选择“数据传输”选项,并根据提示顺序选择“发送数据”、“坐标数据”和选择文件,然后在全站仪上选择确认发送,再在通讯软件上的提示对话框上单击“确定”,即可将采集到的碎部点坐标数据发送到通讯软件的文本区。

4.格式转换:将保存的数据文件转换为成图软件(如CASS)格式的坐标文件格式。执行下拉菜单“数据/读全站仪数据”命令,在“全站仪内存数据转换”对话框中的“全站仪内存文件”文本框中,输入需要转换的数据文件名和路径,在“CASS坐标文件”文本框中输入转换后保存的数据文件名和路径。这两个数据文件名和路径均可以单击“选择文件”,在弹出的标准文件对话框中输入。单击“转换”,即完成数据文件格式转换。

5.展绘碎部点、成图:执行下拉菜单“绘图处理/定显示区”确定绘图区域;执行下拉菜单“绘图处理/展野外测点点位”,即在绘图区得到展绘好的碎部点点位,结合野外绘制的草图绘制地物;再执行下拉菜单“绘图处理/展高程点”。经过对所测地形图进行屏幕显示,在人机交互方式下进行绘图处理、图形编辑、修改、整饰,最后形成数字地图的图形文件。通过自动绘图仪绘制地形图。

四、仪器及工具

全站仪1套、棱镜及杆、框1套、计算机1台。

五、注意事项

1.  控制点数据由指导教师统一提供。

2.  在作业前应做好准备工作,全站仪的电池、备用电池均应充足电。

3. 测图单元的划分,尽量以自然分界为界,如河流、道路等等以便于地形图的施测, 也减少了接边的问题。  

3.  采用数据编码时,数据编码要规范、合理。

4.  能够测量到的点尽量实测,尽量避免用钢尺量取。因为用全站仪所测量的速度远非皮尺量取所能比的,而且精度也会高些。  。

5.  外业进行数据采集时,一定要注意实地的地物地貌的变化,尽可能地详细记录,不要把疑问点带回到内业处理。

六、上交资料

每人上交一份含有合格观测记录的实验报告。


实验三全站仪数字测图外业数据采集实验报告

实验时间:         班级:       作业小组:      实验人员姓名:

一、实验目的

二、实验内容

三、实验记录与成果

1、  数字地形测量记录表(作附件)

2、草图(作附件)

四、实验体会或收获

数字地形测量记录表

测站:     测站高程:         仪器高:          定向点:       测量小组:     

 

第二篇:野外数据采集与远程传输系统设计

东北师范大学

硕士学位论文

野外数据采集与远程传输系统设计

姓名:杨乐

申请学位级别:硕士

专业:电路与系统

指导教师:王连明

20090501

摘要

传统的野外数据采集需要人员到现场采集,采用这种方式一般信息反馈较慢。在一些地形复杂、气候恶劣或人们不能时刻停留的地方,现场信息采集十分困难,同时采集人员的生命安全难以得到保障。随着无线通信技术与网络的发展,越来越多的电子设备安装了无线通讯和网络功能。通用分组无线业务(GPRS)技术将互联网等宽带数据网络与无线通信网络连接在一起,GPRS的应用范围很广,可以用于互联网开发、移动性管理以及无线监控等方面。

本文针对GPRS在野外数据采集与传输系统的应用,通过无线传输的方式解决了野外数据传输的问题。在远程节点部分用AVR单片机作为主控芯片。当传感器采集到相应的数据后传送给AVR单片机,单片机通过串口控制GPRS芯片MC55将数据发送到网络或手机中,在数据中心处建立面向连接(TCP)、面向无连接(UDP)服务器,通过套接字(Socket)接收传送的数据,并存入数据库,同时动态的生成曲线图。

本文在第一章对GPRS的原理及应用做了介绍,在第二章介绍了本设计中用到的AVR(ATMEGAl6)单片机。在第三章介绍了数据采集部分用到的两个传感器:数字温湿度传感器(SHTIO)和灰尘传感器(DSM501)。在第四章详细的描述了远程节点的软硬件设计及解决方案,在第五章对数据中心的数据接收和处理方法进行了详细的介绍。最后一章对整个系统的性能进行了测试,并给出结果。关键词:通用分组无线业务;套接字;面向连接;面向无连接

Abstract

Traditionalmethodinfielddatacollectionneedpeoplegotothefield,whichcausetheslowinformationfeedback.Itbecomesharderinsomeplaceswithcomplexterrainorbadweather.Notonlydatacollectionisverydifficult,butalsothesafetyofcollectionstaffCallhardlybeguaranteed.Withthedevelopmentofwirelesscommunicationstechnologyandnetwork,moreandmoreelectronicdevicesareequippedwithwirelessandnetworkfunctions.GeneralPacketRadioService(GPRS)technologywhichCanlinktheInteractandwirelesscommtmicationsnetworkcanbeusedinmanyareas,suchasInternetdevelopment,mobilitymanagementandwirelessmonitoring.

ThispaperaimstosolvethefielddatatransmissionproblemsbyusingGPRSusedinfielddatacollectionandtransmissionsystem.AVRmicrocontrollcrischosentocontroltheremotenode.Afterthesensorsfinishthedatacollection,AVRmicrocontrollercontroltheGPRSmodule(MC55)throughtheserialporttosendthedatatothenetworkortothemobilephone.TheDataCenterestablishesTCPandUDPserver,receivesthedatathroughtheSocket,andthenstoresinthedatabase.Dynamiccurves躺generatedintheDataCentreatthesametime.

TheprincipleandapplicationofGPRSisintroducedinchapter1.AVR(ATMEGA16)microcontrollerisin仃oducedinchapter2.Theusageofdigitaltemperatureandhumiditysensor(SHT10)andthedustsensor(DSM501)aregiveninchapter3.Thesol,rareandhardwaredesignofdatacollectionnodeisdescribedinchapter4.Themethodsforreceivingandprocessingdataindatacenterarepresentedinthechapter5.Theperformanceandtestresultsoftheentiresystemareshowninthelastchapter.

Keywords:GPRS;SOCKET;TCP;UDPII

独创性声明

本人郑重声明:所提交的学位论文是本人在导师指导下独立进行研究工作所取得的成果。据我所知,除了特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果。对本人的研究做出重要贡献的个人和集体,均已在文中作了明确的说明。本声明的法律结果由本人承担。

学位论文作者签名:二逸生)日期:

学位论文使用授权书

本学位论文作者完全了解东北师范大学有关保留、使用学位论文的规定,即:东北师范大学有权保留并向国家有关部门或机构送交学位论文的复印件和电子版,允许论文被查阅和借阅。本人授权东北师范大学可以采用影印、缩印或其它复制手段保存、汇编本学位论文。同意将本学位论文收录到《中国优秀博硕士学位论文全文数据库》(中国学术期刊(光盘版)电子杂志社)、《中国学位论文全文数据库》(中国科学技术信息研究所)等数据库中,并以电子出版物形式出版发行和提供信息服务。

(保密的学位论文在解密后适用本授权书)

学位论文作者签名:二至班=、

Et‘期:半.f指导教师签名:日期:

学位论文作者毕业后去向:

工作单位:

通讯地址:电话:——邮编:——

东北师范大学硕士学位论文

引言

论文选题的背景、意义及主要研究内容

随着野外数据采集系统的广泛应用和新技术的发展,野外数据采集系统的功能和结构有了一定的变化,新的数据采集系统和传统的数据采集系统相比较有以下发展【1J:

1.采集对象多元化、复杂化

在采集数量方面,随着接入数据采集系统的设备种类越来越多,数据采集需要处理的数据量越来越大。在采集数据种类方面,随着数据采集系统的不断发展,目前采集的数据对象不再局限于传统连续模拟数字量或离散数据等低码率的数据对象,而发展为多媒体数据采集,包括图像、视频、影音信号的采集等。

2.采集处理的分布化

在采集处理方面,由于目前计算机网络和Internet网络的不断发展,能充分发挥各个处理单元优势的分布式处理逐渐成为数据采集系统的发展方向。

3.采集过程的自动化

目前采集处理过程的自动化已渗透到数据采集系统的各个部分。采集过程自动化主要包括数据采集设备“即插即用",数据发布的自动化,消息发布机制等。

0.1论文选题的意义

随着我国社会经济的发展,现代监控技术也越来越多的运用到了生态环境监测中。它具有向自动化、智能化、网络化、低功耗、小型化方向发展的趋势,采用自动化监控可以节约大量的人力资源,克服人力测量的效能低,精度不足等缺点【2】【3】【4】。目前用于监控系统的通信方式也是多种多样,主要有有线通信方式和无线通信方式,由于生态环境的分散性和广域性,采用有线或者人工的方式进行监控都将花费大量的人力,物力,因此无线通信技术越来越受到人们的关注。基于GPRS的无线监控系统就是目前比较流行的无线监控管理系绀5】【6】。

在野外数据的采集与传输系统中,温度,湿度,空气质量都是比较重要的监控指标,例如野生动植物自然保护区中温湿度及粉尘含量的监测等。只有很及时的掌握环境的变化,才能更好的保护野生动植物。各种生物只有在适宜的温湿度和良好的空气环境中才能生存,于是对以上数据的采集有极大的现实意义。数据采集后,通过GPRS网络可以及时地传输到监控中心,从而实现整个系统实时高效的运行【7】。

目前国内有一部分企业在从事基于GPRS的远程数据采集如:深圳市有方科技有限公司,产品主要应用于GPRS/CDMA网络监控【8】、电力抄表、电网负荷控制、变压器监

东北9币范大学硕士学位论文

测、路灯监控、无线视频、交通监管,油井远程通讯、金融终端的无线通讯等,涉及电力、石油、水利、环保、气象、水务、交通运输、煤矿、金融、市政等许多行业。

远程无线数据采集系统基于GPRS技术实现远程数据通信,GPRS业务具有接入迅速、永远在线、流量计费等特点,在远程突发性数据实时传输中有不可比拟的优势;既具有有线方式的效率高、实时性好、成本低的优点,同时安装方便、可维护性好、易实现网络化管理。利用现有的GPRS网络资源,发挥网络覆盖率高、传输特性好等优势,为现有数据采集系统提供一种便捷的无线数据传输方式,这具有很高的实际应用价值

【9】【10】

0.26PRS无线野外远程数据采集系统特点

由于野外作业点分散,且环境恶劣,数据采集一直是令野外工作人员头疼的事情,利用GPRS无线网络可以很好的实现野外数据的自动采集与传输,真正做到无人值守。GPRS具有速度快、分布范围广、使用费用低的特点,其传输速度理论上最高可达171.2kb/s,实际平均速度可达30kb/s[11】。与有线传输方式相比,采用GPRS无线通信方式则显得非常灵活,它具有组网灵活、扩展容易、运行费用低、维护简单、性价比高等优点【12】【13】【141。

中国移动GPRS系统可提供广域的无线口连接。在移动通信公司的GPRS业务平台上构建信息采集传输系统,实现野外数据采集点的无线数据传输据可充分利用现有网络,缩短建设周期,降低建设成本的优点,而且设备安装方便、维护简单。GPRS无线野外作业远程数据采集系统具备如下特点【l】:

1.可靠性高:GPRS采用面向连接的TCP协议通信,避免了数据包丢失的现象,保证数据可靠传输。服务中心可以与多个监测点同时进行数据传输,互不干扰【161。

2.实时性强:GPRS具有实时在线的特性,数据传输延时小,并支持多点同时传输,因此多个监测点之间快速的进行双向通信,很好的满足系统对数据采集和传输实时性的要求。目前GPRS实际数据传输速率在30kb/s左右,完全能满足系统数据传输速率(>10kb/s)的需求【111。

3.监控范围广:有线通讯的局限性太大,在遇到一些特殊的应用环境,比如遇到山地、湖泊、林区等特殊的地理环境或是移动物体等布线比较困难的应用环境的时候,将对有线网络的布线工程有着极强的制约力,而用无线数传模块建立专用无线数据传输方式将不受这些限制,通过无线数传模块建立专用无线数据传输方式将比有线通讯有更好的、更广泛的适应性,几乎不受地理环境限制。GPRS网络已经实现全球范围内覆盖

【15】【161,并且接入地点无限制,能满足山区、乡镇和跨地区的接入需求【171。

4.系统建设成本低:有线通信方式的建立必须架设电缆,或挖掘电缆沟,因此需要大量的人力和物力;而用无线数传电台建立专用无线数据传输方式则无需架设电缆或挖掘电缆沟,只需要在每个终端连接无线数传电台和架设适当高度的天线就可以了。相比之下用无线数传模块建立专用无线数据传输方式,节省了人力物力,投资是相当节省的。由于采用GPRS公网平台,无需建设网络,同时也免去了网络维护费用【18】【19】【201。2

东北师范大学硕士学位论文

5.系统运营成本低:采用GPRS公网通信,全国范围内均按统一费率计费,省去昂贵的漫游费用,GPRS网络可按数据实际通信流量计费,(1.3分/千字节),也可以按包月不限流量收费,从而实现了系统的低成本通信【211。

6.系统的传输容量,扩容性能好:GPRS技术能很好的满足传输突发性数据的需求,由于系统采用成熟的TCP/IP通信构架,具备良好的扩展性能,一个监控中心可轻松支持几千个现场采集点的通信接入【16】。

7.GPRS传输功耗小,适合野外供电环境:虽然与远在千里的数据中心进行双向通信,GPRS数据传输设备在工作时只需与附近的移动基站通信即可,其整体功耗与一台普通GSM手机相当,平均功耗仅为200毫瓦左右,比传统数据传输电台小的多。因此GPRS传输方式非常适合在野外使用太阳能供电或蓄电池供电的场合下使用。

0.3论文研究的内容

本论文主要采用GPRS模块实现了野外数据采集与远程传输系统。设计方案以AVR单片机(ATMEGAl6)、温湿度传感器、灰尘传感器和GPRS模块MC55为基础,在远程节点实现了对温度、湿度和灰尘的数据采样,通过主控芯片ATMEGAl6发送给MC55,MC55则通过GPRS网络传送到指定IP地址的数据中心或手机上。数据中心接收到数据后,存入到ACCESS数据库相应的数据表中,并对数据进行处理,形成各项数据随时间的变化曲线。同时,数据中心可控制MC55分别以TCP、UDP、短信3种方式发送数据。3

东北师范大学硕士学位论文

第一章GPRS简介

GPRS作为一种无线通讯技术正发挥着重要的作用,GPRS是通用分组无线业务(GeneralPacketRadioService)的简称,与GSMCSD业务不同的是,GPRS业务以数据流量计费,而GSMCSD业务则以时间计费,GPRS这一计费方式更适应数据通信。此外,GPRS业务的速度相对于GSMCSD业务也有很大的提高,GPRS可提供高达l15kb/s的传输速率(最高值为171.2kb/s),下一代GPRS业务的速度可以达到384kb/s。GPRS一个较大的优势是能够充分利用现有的GSM网,因此可以由运营商在全球范围内推出此项业务【1¨。

GPRS是在GSM基础上发展起来的一种属于2.5G的移动通信系统。不同于原来GSM所采用的电路交换数据传送方式,GPRS采取了分组交换技术,因此在数据业务的承载和支持上具有非常明显的优判91。

1.1GPRS的特点:

1.高速数据传输

速度10倍于GSM,还可以稳定地传送大容量的高质量音频与视频文件【22】【23】【24】。2.永远在线

建立新的连接几乎无需任何时间(即无需为每次数据的访问建立呼叫连接),因而随时都可与网络保持联系。

3.仅按数据流量计费

根据传输的数据量(如:网上下载信息时)来计费,而不是按上网时间计费也就是说,只要不进行数据传输,即使一直“在线",也无需付费。做个“打电话"的比方,在使用GSM+WAP手机上网时,就好比电话接通便开始计费:而使用GPRS+WAP上网则要合理得多,就像电话接通并不收费,只有对话时才计算费用。总之,它真正体现了少用少付费的原则【211。

1.2GPRS网络连接实现

GPRS模块在进行数据传输之前,必须先连接上目标服务器,目标服务器只需要简单接入Internet,并具备公网IP地址即可。同时,因为GPRS终端本身由网络提供商动态地分配IP地址,在未进入连接待机状态时,其本身是不具备IP地址的。在连接中,模块的IP地址为移动骨干网内局域网IP,无法被公网服务器解析,动态分配的制度使获取此IP地址毫无意义。因此在服务器与终端尚未建立连接前,目标服务器难以(可将短信转换为命令内容)对终端设备及控制器进行控制。必须先用控制器对GPRS模块进行相

东北师范大学硕士学位论文

应初始化,并由GPRS模块主动向服务器发送数据,建立C/S结构的Socket方式的TCP/IP链接。当GPRS模块(CIlent)和服务器端(Server)建立连接后,GPRS模块此时已具备了在互联网网络上双向传输数据的功能.1q。

微控制器控制GPRS模块发送数据的过程如下:先由微控制器申请数据发送,得到模块的确认后,把数据以透明的方式发给GPRS模块[1Il【14][z5]。模块按照TCP/IP协议转换,把数据打成IP数据报。GPRS通信模块遵循PPP(PPP:PointtoPointProtocol,点对点协议),因而又将IP数据报按照PPP帧的帧格式封装成PPP帧【2q㈣。无线通信模块将数据报通过无线链路传送到SGSN(ServingGPRSSupportNode,服务GPRS支持节点),SGSN进行相应的协议转换,按照GPRS特有的GTP(GPNSTunnellingProtocol,GPRS隧道协议)将其封装成GTP包,然后通过GPRS骨干网传送到相应的GGSN(GatewayGPRSSupportNode,网关GPRS支持节点)。GGSN也进行相应的协议转换,再根据外部数据网的协议格式进行新的封装,并且根据其目的地址选择路出进行传送,从而撮终传送到目标服务器㈣㈣㈣。同样的道理,来自Internet标识有模块地址的IP包.由GGSN接收,再转发到SGSN,继而传送到GPRS模块。

SGSN和GGSN在图11中都属于GPRSnetwork的部分。SGSN的主要作用是记录移动台(GPRS模块)的当前位置信息,并且在移动台和GGSN之间完成移动分组数据的发送和接收。GGSN主要是起网关作用,它可以和多种不同的数据网络连接,如ISDN、PSPDN和LAN等恻…。

图11GPRS数据传输选径

如图1.1所示,数据终端通过GPRS模块将数据传送到附近的基站,再由基站将数据传送至GPRSnetwork部分,经过协议转换之后传送至INTERNET上指定IP地址的服务器上。

东北师范大学硕士学位论文

第二章AVR单片机

2.1AVR单片机简介

ATMEL公司是世界上著名的生产高性能、低功耗、非易失性存储器和各种数字模拟IC芯片的半导体制造公司。在微控制器方面,ATMEL公司有基于8051内核、AVR内核和ARMy内核的三大系列单片机产品【3¨。

8051结构的单片机采用复杂指令系统CISC(ComplexInstrumentSetComputer)体系。由于CISC结构存在指令系统不等长、指令数多、CPU利用效率低和执行速度慢等缺陷,已不能满足和适应设计中高档电子产品和嵌入式系统应用的需要。ATMEL公司发挥其Flash存储器技术的特长,于1997年研发和推出了全新配置、采用精简指令集RISC(ReducedInstructionSetCPU)结构的新型单片机,简称AVR单片机。

AVR单片机采用了大型快速存取寄存器组、快速单周期指令系统以及单级流水线等先进技术,使得AVR单片机具有高达iMips/MHz的高速运行处理能力。AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和lAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEPROM可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部RAM[32J。

AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使得I/O口资源灵活、功能强大、可充分利用。

AVR单片机片内具备多种独立的时钟分频器,分别供URAT、12C、SPI使用。其中与8/16位定时器配合的具有多达10位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)"更是令人耳目一新。

增强型的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS一51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。6

东北师范大学硕士学位论文

面向字节的高速硬件串行接口TWI、SPI。TWI与12C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。SPl支持主/从机等4种组合的多机通信。

AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD、多个复位源(自动上电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。

AVR单片机具有多种省电休眠模式,且可宽电压运行(5—2.7V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。

AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、中断系统、具输入捕获和比较匹配输出等多样化功能的定时器/计数器、具替换功能的I/O端口等)于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC"过渡的发展方向。

2.2AVR单片机主要特点

AVR单片机吸收了PIC及8051等单片机的优点,同时在内部结构上还做了一些重大改进,其主要的优点如下:

1.程序存储器价格低廉、可擦写1万次以上、指令长度单元为16位(字)的FlashROM(即程序存储器宽度为16位,按8位字节计算时应乘2);而数据存储器为8位。因此AVR还是属于8位单片机。

2.采用CMOS技术和RISC架构,实现高速(50ns)、低功耗(uA)、具有SLEEP(休眠)功能。AVR的一条指令执行速度可达50ns(20删z),而耗电则在1uA_2.5mA之间。AVR采用Harvard结构,以及一级流水线的预取指令功能,即对程序的读取和数据的操作使用不同的数据总线,因此,当执行某一指令时,下一指令被预先从程序存储器中取出,这使得指令可以在每一个时钟周期内被执行【311。

3.高度保密。可多次烧写的Flash且具有多重密码保护锁定(LOCK)功能,因此可低价快速完成产品商品化,且可多次更改程序(产品升级),方便了系统调试,而且不必浪费IC或电路板,大大提高了产品质量及竞争力。

4.工业级产品。具有大电流10至20mA(输出电流)或40mA(吸电流)的特点,可直接驱动LED、SSR或继电器。有看门狗定时器(WDT)安全保护,可防止程序走飞,提高产品的抗干扰能力。

5.超功能精简指令。具有32个通用工作寄存器(相当于8051中的32个累加器),克服了单一累加器数据处理造成的瓶颈现象。片内含有128至4K字节SRAM,可灵活使用指令运算,适合使用功能很强的C语言编程,易学、易写、易移植。

6.程序写入器件时,可以使用并行方式写入(用编程器写入),也可使用串行在线下载(ISP)、在应用下载(IAP)方法下载写入。不必将单片机芯片从系统板上拆下拿到万用编程器上烧录,而可直接在电路板上进行程序的修改、烧录等操作,方便产品7

东北师范大学硕士学位论文

升级,尤其是对于使用SMD表贴封装器件,更利于产品微型化。

7.通用数字i/on的输入输出特性与PIC的眦/Low输出及三态高阻抗HI-Z输入类同,同时可设定类同与8051结构有上拉电阻的输入端功能,便于作为各种应用特性所需(多功能I/On),AVR的I/O口是真正的i/on,能正确反映I/OD的输入输出的真实情况。

8.有多通道的10位A/D及实时时钟RTC。许多AVR芯片内部集成了8路10位A/D接口,如mega8、megal6、mega8535等。

2.3AYR单片机选型

在AVR系列单片机中,ATmegal6是一款中档功能的AVR芯片,它的引脚数为40,在片内集成了1K字节的SRAM、16K字节的Flash、512个字节的EEPOM,2个8位、1个16位共3个超强功能的定时器/计数器,以及USART、SPI、多路10位ADC、WDT、RTC、ISP、IAP、TWI(12C)、片内高精度RC振荡器等多功能的接口和特性,较全面的体现了AVR的特点,不仅适合对AVR了解和使用的入门起步学习,同时也满足一般的普通应用,在产品中得到了大量的使用【3¨。本文正是采用ATmegal6作为主控芯片。8

东北师范大学硕士学位论文

第三章数字温湿度传感器与灰尘传感器

3.1数字温湿度传感器SHTl0

SHTIO是由瑞士Sensirion公司推出的SHTxx系列单芯片,数字温湿度传感器之

一。SHTxx系列产品是一款高度集成的温湿度传感器芯片,提供全标定的数字输出。它采用专利的CMOSens@技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14位的A/D转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、极高的性价比等优点。每个传感器芯片都在极为精确的湿度腔室中进行标定,以镜面冷凝式湿度计为参照。校准系数以程序形式储存在OTP内存中,在标定的过程中使用。两线制的串行接口与内部的电压调整,使外围系统集成变得快速而简单。微小的体积、极低的功耗,使其成为各类应用的首选【331。

SHTl0的引脚排列和说明如图3.1和表3.2所示。

表3.2SHTlO引脚说明

Pin

4名称GND注释地删弱SCKVDD

NO串{J-数据,双向串{j=时l乎.输入供电2.4.5.5V剩糸弓l踯i青勿连结

图3.1SHTIO引脚图

3.1.1主要参数

相对湿度测量范围

绝对RH精确度

温度测量范围:伊一100%RH。:±4.5%RH。:一4伊一123。C。

温度精确度

3.1.2测量时序:±0.5"C(25℃时)。

SHTIO的供电电压为2.4-5.5V。传感器上电后,要等待1lms以越过“休眠’’状态。9

东北师范大学硕士学位论文

在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个lOOnF的电容,用以去耦、滤波。

SHTIO的串行接口类似与12C,但是它不与12C接口兼容。SCK用于微处理器与SHTIO之间的通讯同步,相当于12C中的时钟信号。DATA三态门用于数据的读取。DATA在SCK时钟下降沿后改变状态,并仅在SCK时钟上升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定,为避免信号冲突,微处理器应驱动DATA在低电平。需要一个外部的上拉电阻(例如lOkQ)将信号提拉至高电平。上拉电阻通常已包含在微处理器的i/o电路中。

测量一开始,微处理器需要向SHTIO发送启动转换命令,在发送命令之前有个“启动传输”时序。它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变为低电平,随后是在SCK时钟高电平时DATA翻转为高电平,如图3.3所示:

DATA

SCK

图3.3一启动传输”时序

后续命令包含三个地址位(目前只支持“000")和五个命令位。SHTIO会以下述方式表示已正确地接收到指令:在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位),在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)。SHTIO命令集如表3.4所示。

表3.4SHTIO命令集

代码

0000x

00011

00101

00111

00110

0101X一1110x

11110龠令f晚‘爿温度测盛温度测詹谤状态,舒仔器写状态寄仃器J:玩留软复位,钽位接口、滴空状态寄存

器.,即清空为默认值

卜。次命令曲锋{等争少11ms

发布一组测量命令(‘00000101’表示测量相对湿度RB,‘00000011’表示测量温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320ms,分别对应8/12/14bit测量。确切的时间随内部晶振速度,最多有±30%变化。SHTIO通过下拉DATA至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK时钟前,必须等待这个“数据各妥"信号来读出数据。接着传输2个字节的测量数据和1个字节的CRC奇偶校验。微控制器需要通过下拉DATA为低电平,以确认每个字节。所有的数据从MSB开始,右值有效。用CRC数据的确认位,表明通讯结束。如果不使用CRC-8校验,控制器可以在测量值LSB后,通过保持确认位“ACK"为高电平来中止通讯。在测量和通讯结束后,SHTl0自动转入休眠模式。10

东北师范大学硕士学位论文

3.1.4状态寄存器

SHTIO的某些高级功能可以通过状态寄存器实现。状态寄存器的各位如表3.5所示:

表3.5SHTIO状态寄存器位

B托类型说明默认值

7}啦{芗f0

6Rl乜谚小足(低电琢娩测)×龙默认值.

~0对哀Vdd,2.47此位仪覆测凝

‘1’×’t虑Vdd‘2.47绌糸届览镢

5艘留O

4}‘!I争f0

3仪影i滟4试.夺倥嘲

2觥0删细}复杠0哭

1小“、OTP打1我0血:栈

OR脚‘1‘=8bIlRH,12brtT分辫率012bilRH

~0=12bitRHI14bRT分辨睾14bitT

由表可以看出SHTlO的测量分辨率分别为温度14bit,湿度12bit,也可以把寄存器的第O位置1而使分辨率分别降至12bit和8bit。将第2位置1,可以加热元件,使SHTIO的温度提高大约50C。通过比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。在高湿(>95%RH)环境中,加热传感器可预防结露,同时缩短响应时间,提高精度。

3.1.5数据处理

从SHTIO读取过来的温度和湿度值,都是以整数的形式表示的。必须经过算法处理才能得到准确的实际值。

1.温度处理

由能隙材料PTAT(正比于绝对温度)研发的温度传感器具有极好的线性。可用如下公式将数字输出转换为温度值:

Temperature=dl+d2XSOT(SOT为读取到的温度值)

表3.6温度转换系数

VDDd'【℃1d’f下】S铆d2【℃】dz['F】

5V—400040.0014bit0.010.018

4V一3975.39.5012bit0.040.072

3.5V一39.66—39.35

3V一3960—3928

2.5V一39.55—39.23

2.湿度处理

为T偿湿度传感器的非线性以获取准确数据,可以用以下的公式修正读数。

RHIl鹏ar=01+睨×SORH+c3×SORH2(SO刚为读取到的湿度值)

东北师范大学硕士学位论文

表3.7湿度转换系数

由于实际温度与测试参考温度25。C的显著不同,所以应考虑湿度传感器的温度修正

系数:

RHtrue=(T℃-25)x(tl+t2xSORH)+RHlinear

表3.8温度补偿系数

SORH

12bit●

-8bit

●_

t'o.o10.01

t2

0.000080.00128

--

由此我们已经取得了比较准确的温度、湿度值,由于湿度与温度经由同?块芯片

测量,SHTIO可以同时实现高质量的露点测量。露点可以由温度和湿度值计算出,这些计算过程都是在控制器中完成的。

3.2灰尘传感器DSM501

灰尘传感器DSM501,是韩国SYHITECH公司的专利产品。其采用与粒子计算器相同

原理为基础,检测出单位体积粒子的绝对个数,可灵敏检测直径1微米以上的粒子,如

烟草产生的烟气,花粉,房屋粉尘,有利于空气质量检测。它尺寸小,重量轻,易安装

使用。内置加热器,可实现自动吸入空气。PWM脉宽调制输出,与微处理器接口非常简

单嗍。

DSM501的引脚排列和说明如图3.9和表3.10所示。

表3.10DSM501引脚说明

脚位

毒1群2

输m输:lj

控制脚(详见说明)

●1

参5

襻3

电源萨(+5.ov)

毋5

图3.9DSM连接器

电源地(GND)

3.2.1引脚功能描述

1.输出脚#2Vout2,此脚为普通输出脚位,灵敏度已预设定,最小粒子检出能力1

lImo

2.输出脚#4Youtl,此脚为可调输出脚位,灵敏度可通过控制脚来调整,默认为Vout2的2.5倍,即最小粒子检出能力为2.5u

12

m。

东北师范大学硕士学位论文

3.控制脚#1,通过在此脚与GND之间加一个电阻可调整routl的最小粒子检出水平,

调整电阻值可调整Voutl的灵敏度。

3.2.2

数据测量

DSM501采用PWM脉宽调制输出,输出波形如图3.1l所示。

=]口口[][

图3.11

DSM501输出波形PWM

低脉冲率:RT=LT,UTx100%,由图可以看出,DSM501输出为低脉冲有效。特性曲线如图3.12所示。

●●

IlI

.笛

Il

III

./

/‘

锯突佑

.彳’

::

∥I

.名‘。

.∥。

:/I

厂—]I一1l—昏一咖l

1..........一

III

25

懒(K

7.5铂

12515

pcs)

图3.12DSM501特性曲线

由图3.12可以看出,对于获得的一个低脉冲率数值,只能推算出灰尘的大致范围。根据“max"曲线能算出灰尘的下限值,而根据“mix"曲线能算出灰尘的上限值。

13

查些堕垄查兰堕主兰焦笙皇

第四章远程节点系统

41系统总体描述

系统由三部分组成,分别为:远程节点系统(现场采集点)、GPRS网络、数据处理中心。

首先由传感器采集到相关的数据信息,传送给主控芯片ATMEGAl6,ATMEGM6通过AT指令控制MC55(GPRS模块)发送数据到GPRS网络,通过网关SGSN、GGSN后数据传送到]NTERXET上.数据中心接收到数据后,处理并存储起来。系统结构框图如图41。

罔4l系统总体结构

如阻所示,数据采集器在现场采集点采集到相应的数据后通过GPRS骨干网S(;SN和GGSN后传送到Internet上或A刚专线上。公网接入方案的数据中心接收Internet上的数据,专网接八方案的数据中心接收APN专线上的数据。

42远程节点硬件结构与实现

4.2.1系统硬件结构

系统硬件由单片机ATMEGAl6、GPRS模块Mc55、实时时钟芯片PCF8563、数字温湿14

东北师范大学硕士学位论文

度传感器SHTIO、灰尘传感器DSM501以及为RS232电平转换的MAX232芯片和为了程序状态显示的LED组成。系统结构框图如图4.2所示。

灰尘传感器I.。I定时器1

.(DSM501)l’’I输入捕捉PAO“PA3-I—ILEDLLu

ATMEGAl6单片机

GPRs模块L,l(MC55)I一串口PC5

PC4L。I温湿度传感I—。一l器(SHTIO)

l?r-HJ中断I

7I(PD3)PCIPCOJPI。U,ll(PCF8563)

图4.2远程节点结构

单片机通过串口以RS232协议与MC55开发板通信,波特率为9600bit/s。单片机先通过AT指令完成MC55的初始化和入网,等待数据传输。当接收到数据传输命令或者定时时间到的时候,单片机完成时间、温湿度、灰尘量的读取并存入内部数据存储器,设置标志位并在主程序中启动发送。设置4个LED的目的是显示程序运行状态。在本系统中默认以TCP的方式发送数据,远程节点与数据中心建立连接之后可通过指令控制远程节点以UDP或短信息的形式发送数据。

4.2.2MC55无线传输模块介绍

无线传输模块MC55是由SIEMENS公司生产的,当今市场上尺寸最小的、工业级、三频段模块,适用于欧洲和亚洲的频段。biC55是带有GSM/GPRS全套语音和数据功能的先进无线模块,其内嵌TCP/IP协议栈,可以最大程度的缩短GPRS产品的研发周期。MC55以AT命令方式实现数据传输,每次传输都会有结果状态返回,用户不需要在数据传输模式和AT命令控制模式之间切换。MC55可以支持TCP,UDP,HTTP,FTP,SMTP,POP3等多种服务。MC55提供两个全双工串口,可以实现两个TCP通道的同时传输,GPRS与短信或语音状态自动切换。MC55应用范围非常广,可应用于无线抄表、无线监控、GPS车载终端、无线公话、无线POS机、无线PDA等等。

无线模块MC55支持GPRSClass10,是新~代的双频GSM/GPRS无线模块,它具有

Channel(PBCCH),其双信道传输模式极大的改的永久在线和高传输率特性,使语音、数据、SMS和传真信息的高速传输成为可能。MC55同时还支持PacketBroadcastControl

善了GPRS的传输性能。通过ZIF接口(特殊电缆连接口)可以轻松建立模块和应用设

东北师范大学硕士学位论文

备间的联系。

模块具体参数如下:

●支持EGSM900/Gsm800双频

●支持GRPSClass8/ClassB

●支持GSMphase2/2+

●输出功率:EGSM900时,2w/GSMl800,1W

●输入电压:33-48V

●功耗:休眠状态,3OmA:空闲状态,10OmA;发射状态,300mA(平均),2OA

(峰值)

●控制:AT指令直接控制

●重量:16E

●体积:54.5*36*6B5mm

?环境温度:25。C/+55。C

●数据速率:CSD状态F最大速率144kbps.GPRS状态下行最大速率856kbps●接口:40pin

MC55外形如图43所示:

图43MC55芯片

芯片MC55内部结构如图44所示,其中专用供电集成电路(PowerSupplyASIC)为芯片提供稳定的电力支持,基带控制器(BasebandControllet)工作于26姗z,控制数据编码和解码等工作,射频部件(RFsection)负责数据的发送.系统的配置信息和用户自定义数据存放在Flash和SRAM中。芯片Mc55的通用接口RXD和TXD用于与其他设备(如微处理器)变换数据㈣。

东北师范大学硕士学位论文

图44芯片MC55内部结构

MC55开发板如图4.5所示,开发板土要使用芯片有:MC55、RS3232和稳压芯片LMlll7。其中LMlll7主要负责为MC55供电,RS3232负责与上位机通信。板上还预留数字和模拟语音接口和第二组UART接口,微处理器通过UART使用AT指令控制MC55。

图4.5MC55开发板

42.3Mc55AT指令介绍

MC55内嵌TCP/IP协议栈,所以用户可以很方便地使用AT指令使模块连接入

Internet。这样的优点是用户可以不用TCP/IP和PPP协议对数据进行封装,从而大大缩短了应用系统的开发周期【3q【Ⅻ。下面将具体介绍每一条指夸:

东北师范大学硕士学位论文

1.AT‘SICSInternetConnectionSetupProfile

AT^SICS指令用来创建或者编辑Internet连接设置。每一个连接设置对应于一个连接编号(<conProfileId>,Intemetconnectionprofileidentifier)。在MC55指令中可以创建0到5个连接设置。每一个连接设置可以应用于多个服务项目。

AT^SICS读命令,可以显示当前每一个连接的参数设置。而写命令可以设置对应于每一个连接编号的所有参数。首先需要设置的就是Internet连接参数(<conParmTag>,Interactconnectionparameter.)中的Internet连接类型(“conType”,TypeofInternetconnection.)。Internet连接类型很重要,只有设置了连接类型,MC55才能决定关于特定连接类型的其他Interact连接参数的实用性和默认值。MC55支持两种连接类型CSD(Circuit.switcheddatacall,电路交换数据传送方式)GPRSO,在这里我们选择GPRSO。

选择了连接类型为GPRSO后,Internet连接参数设置中还有一个参数必须设置,APN(AccessPointName,接入点名称)。在这里我们设置为中国移动梦网,接入点为CMNET。Internet连接参数中的参数’user’和”passwd”默认值为空。

Internet连接参数设置的格式为:

AT^SICS=<conProfileld>,<conParmTag>,<conParmValue>

Interact连接参数查询的格式为:

AT^SICS?

其中模块返回的参数和参数顺序和设置时的格式一样。

在这部分我们需要作的设置实例如下:

AT^SICS-0,conType,GPRSO(enter)

Ok//SelectconnectiontypeGPRS0

AT^SICS--O,apn,CMNET(enter)

Ok//接入网络中国移动梦网

其中“Ok"为MC55返回的信息,表示设置成功。在实际操作中回车“enter’’也是必不可少的。

2.AT‘SISSInternetServiceSetupProfile

AT“SISS指令用于设置Internet服务中的必须参数。每一个服务项目设置对应于一个服务项目编号(<srvProfileld>,Interactserviceprofileidentifier)。在MC55指令中可以创建0到9,共10个服务项目。每个服务项目必须绑定一个Internet连接设置。

AT‘SISS读指令可以查询当前所有的Internet服务项目及其参数。而写命令可以设置对应于每一个服务项目编号的所有参数。首先需要设置的就是Internet服务参数(<srvParmTag>,Interactservice

TypeofInteractprofileparameter)中的Internet服务类型(”srvType”,service)。只有设置了服务类型,MC55才能决定关于特定服务类型的其他Internet服务参数的实用性和默认值。MC55支持的服务类型有’Socket’,’FTP’,”HTTP”,’SbffP’,”POP3’。在这里我们选择面向Socket的服务器连接。

选择了服务类型为Socket后,Internet服务参数设置中还有一些参数必须设置,”conId”(Intemetconnectionprofiletobeused)和”address”。”cordd¨,也就是上面所说的18

东北师范大学硕士学位论文

每个服务项目都必须绑定一个Internet连接设置。”address”就是对方或者是自身的网络标号地址。MC55可以配置为,面向TCP的Socket客户端(Client),面向TCP的Socket服务器(Server)和面向UDP的客户端。

当为面向TCP的SocketServer时,’address”值为:

’’socktcp://iistener:’localtcpPort’’’?

当为面向TCP的SocketClient时,”address”值为:

”socktcp:H’host’:’remotetcpPort’”?

当为面向UDP的SocketClient时,”address”值为:

’’sockudp://’host’:’remoteudpPort’’’?

当MC55为面向TCP的SocketServer时,不用赋IP地址,当连接上GPRS网络后,可以用指令查询得到的IP地址。例如笔者在一次实验连接中得到的IP地址为

”10.51.244.190:65534”,这个IP地址为移动内网的IP地址,对公网是不可见的,但是移动内网的另一块GPRS模块可以和它申请连接,对于内网来讲这个IP地址是可见的。

当MC55配置为面向TCP的SocketServer时,必须为其预留至少两个服务项目。一个服务项目用于端口监听,监听TCP,SocketClient的连接请求。当一个连接请求到来的时候,第二个服务项目会被自动配置。当监听到一个连接请求,并自动分配了一个服务项目后,MC55会返回URC信息,告诉控制器,有连接请求和服务项目的标号。控制器在响应的时候可以发送命令,决定是接受连接还是拒绝连接。

Internet服务项目参数设置的格式为:

AT^SISS=<srvProfileld>,<srvParmTag>,<srvParmValue>

Internet服务项目参数读取的格式为:

AT^SISS?

其中模块返回的参数和参数顺序和设置时的格式一样。

在以上连接设置实例都已执行的条件下,这部分我们需要作的设置如下:

实例l:配置为面向TCP的Socket

AT^SISS=4,srvType,socket(enter)

oKServer。//SelectservicetypeSocket.

AT^SISS:A,conld,0(enter)||Selectconnection

oKprofile0.

AT^SISS=4,address,"socktcp:Hlistener:65534”(enter)

oK

当连接上网络后可查询到系统分配的IP地址为:“10.51.244.190:65534"。

实例2:配置为面向TCP的SocketClient。

Socket.AT^SISS=l,srvType,socket(enter)//Selectservicetype

oK

AT^SISS=1,conld,0(enter)

oK//Selectconnectionprofile0.

19

东北师范大学硕士学位论文

AT^SISS=1,address,¨socktcp://202.198.137.69:60000”(enter)

OK

其中“address”的值为公网目标服务器的地址和Socket服务器软件监听的端口号。如果要连接移动内网中另一块已经启动监听的GPRS模块,其地址为

“10.51.244.190:65534",则可以赋该IP值。

AT^SISS=l,address,"socktcp://10.51.244.190:65534"(enter)

oK

实例3:配置为面向UDP的SocketClient

AT^SISS=2,srvType,socket(enter)

oK//SelectservicetypeSocket

AT^SISS=2,conld,0(enter)

OK//Selectconnectionprofile0

AT^SISS--2,address,¨sockudp://202.198.137.69:50000”(enter)

oK

3.AT“SIS0InternetServiceOpen

ATASISO写指令,可以把已经分配好的服务项目连接上Internet。如果服务连接成功,则模块会返回URC信息,告诉控制器,可以申请数据读或者数据写。如果模块返回数据已经读完或者发送的数据已经成功发出,则可以关闭该服务。如果在连接和使用服务的过程中发生了错误,模块会返回错误信息。不管是服务成功执行,还是在连接过程中发生了错误,在服务结束的时候都应该用Internet服务关闭指令关闭已开启的服务。

AT^SISO读指令,可以查询当前所有服务项目的连接状态,每一行对应一个服务项目。只要用at^siss指令正确赋值的服务项目,都可以用读指令查询。读指令可以在服务操作中或者关闭服务后进行查询,当为后一情况的时候,模块返回的是每个服务项目的最后状态,这个状态会在服务项目再次启用的时候得到更新。

ATASISO写指令的格式为:

AT^SISO=<srvProfileld>//“srvProfileld"为要开启的服务项目编号。

ATASISO读指令的格式为:

AT^SISO?

模块返回的信息为:

^SISO:<srvProfileld>,<srvParmTag>value¨srvType”【’<srvState>,

<socketState≯,<rxCount>,<txCount>,<locAddr>,<remAddr>】

(1)<srvProfileId>为服务项目编号。

(2)<srvParmTag>value’srvType’在这里显示的是服务类型,如’Socket’。

(3)<srvState>(Internet

连接状态信息。

当值为空“"时,表示该服务项目没有被利用。20servicestateidentifier),表示的是当前服务项目的

东北师范大学硕士学位论文

当值为“2"时,表示该服务项目已分配,但是没有连接Internet。

当值为“3"时,表示该服务项目在连接网络的过程中,还没有连接上。

当值为“4’’时,

当值为“5”时,表示该服务项目已经和服务器建立连接,可以进行数据收发。表示该服务项目已经关闭。

state(4)<socketState>,Socket

当值为“1"时,Socketidentifier,表示的是当前的Socket状态。TCP/UDPconnectionactive.notassigned,i.e.no

as

as

as当值为“2"时,Socketassigned当值为“3"时,SocketassignedCLIENT.LISTENER.SERVER.当值为“4”时,Socketassigned

(5)<rxCount>,表示最近一次连接服务接收到的字节数。

(6)<txCount>,表示最近一次连接服务发送的字节数。

(7)<locAddr>,表示本地IP地址和端口。

(8)<remAddr>,表示对方的IP地址和端口或者时DNS的名称和TCP端口。

在连接的过程中,模块会返回很多的URC(UnsolicitedResult.Code)信息,这些信息对了解当前的Internetn及务连接状态非常有用,只有知道了这些信息,控制器才知道下一步应该采取什么样的操作。

URC信息的格式为:

^SIS:<srvProfileld>,<urcCause>[,【<urclnfoId>l[,<urclnfoText>]】

(1)<srvProfdeld>,

(2)<urcCause>,

(3)<urclnfold>,

(4)<urclnfoText>,为服务项目编号。URCcauseidentifier.Informationidentifierrelatedto<ttrcCause>.Informationtextrelatedto<urcCause>.

当在开启一个Internet服务或者在操作的过程中出现了状态变化,如连接失败,有数据读取,或者连接成功可以发送数据等,URC信息都会出现。URC信息还会提示一个来自TCPSocketClient的连接请求,或者是拒绝了该请求等等信息。

4.AT‘SISCInternetServiceClose

AT^SISC写命令用来关闭已经开启的InternetH艮务项目。

AT^SISC写格式为:

AT^SISC=<srvProfileld>

在开发文档上还有一个参数为关闭模式(<closeMode>),在实际的测试中加了该参数工作并不正常。

5.AT‘SISRInternetServiceReadData

当一个Internet服务项目连接上服务器或者客户端,有数据到来或者数据发送完毕的时候,模块会返回URC信息”^SISR:<srvProfileld>,<urcCauseld>’,表示当前的数据接收状态。

当<urcCauseld>=O,表示没有数据可以读取。

当<urcCauseld>=l,表示有新的数据到来,可以申请读取。21

东北师范大学硕士学位论文

当<urcCauseId>=2,表示数据传输已经完毕,可以关闭服务。

读取数据的格式为:

AT^SISR=<srvProf'deld>,<reqReadLength>

模块返回的信息为:

^SISR:<srvProffield>,<cnfReadLength>“数据信息”

<reqReadLength>为申请的数据长度,<cnfReadLength>为模块确认返回的数据长度,该长度小于或等于申请的长度,当为0时表示没有数据可读。可申请的数据长度最大为1500个字节,返回的数据长度以实际的为准,当实际的数长度大于申请的长度时,一次不能把数据全部读出,可以分多次读取。

6.AT‘SISWInternetServiceWriteData

当一个Internet服务项目连接上服务器或者客户端,MC55可以发送数据的时候,模块会返回URC信息”^SISW:<srvProfileld>,<urcCauseld>’,表示当前的数据发送状态。

当<urcCauseId>=0,表示不能发送数据。

当<urcCauseld>=l,表示可以申请新的数据发送。

当<urcCauseld>=2,表示数据传输已经完毕,可以关闭服务。

申请发送数据的格式为:

AT^SlSW=<srvProfdeld>,<reqWriteLength>

模块返回的信息为:

^SISW:<毽rvProffield>,<cnfWriteLength>

<reqWriteLength>为申请发送数据长度,<cnfWriteLength>为模块确认可以发送的数据长度,该长度小于或等于申请的长度,当为0时表示不能发送数据。可申请的发送数据长度最大为1500个字节,实际能发送的数据长度以模块确认的长度为准。

7.GPRS指令总结

要使MC55连接上网络的第一步就是用AT‘SICS指令创建Internet连接设置,设置了Internet服务最基本的参数,如连接类型和网络接入点。总共可以创建6个连接设置,彼此以连接设置编号相区别。第二步,就是在已经创建的连接设置的基础上,用AT‘SISS指令创建服务项目。总共可以创建10个服务项目,彼此以服务项目编号相区别。服务项目主要设置了服务的类型,和绑定一个连接设置。如果配置了面向TCP的SocketServer时,一定要预留一个项目用于响应SocketClient的连接请求。当连接设置和服务项目设置都已完成,就可以用AT‘SISO写指令开始Internet连接,开启希望的服务项目。当连接成功后模块会返回连接成功的信息,并告诉控制器可以进行数据传输。面向UDP的SocketClient连接时,模块会很快返回连接成功信息,如果是面向TCP的SocketClient连接时,连接时间和当时的GPRS网络情况和目的主机的网速有很大的关系,一般在5秒左右能连接上,有时要1分多钟,甚至更长或连接失败。在连接的过程中,目标主机的SocketServer软件必须已启动端口监听,以响应连接请求,否则模块会返回连接超时的错误。MC55的TCP/IP协议栈一次只能支持一个服务项目,当运行多个项目的时候会导致项目数据拥塞,而致使连接中断。当成功连接上后,就可22

东北师范大学硕士学位论文

以用AT‘SISR和AT‘SISW指令进行针对目标服务项目的读写操作,以完成数据传输。当完成数据传输或者连接失败就可以用ATlSISC指令关闭服务项目了。

8.SMS(ShortMessageService)

MC55也支持短消息服务。系统可以把采集到的数据以短信的形式发送到用户手机,因为手机移动性好,应用普便,所以把数据用短信发出也具有很好的实用性。

(1)短消息收发的实现模式

目前,发送短消息常用模式有:BLOCK模式、TEXT模式和PDU模式。BLOCK模式现在用的很少了。使用TEXT模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信——确切地讲,从技术上来说是可以用于发送中文短消息的,但是国内的手机基本上不支持。而PDU模式不仅支持中文短信,也能发送英文短信,且被所有手机支持,可以使用任何字符集,它也是手机默认的编码方式。笔者在开发中选用的正是PDU模式。

用PDU模式收发短消息可以使用三种编码方式:7-bit编码、8-bit编码和UCS2编码。7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;8-bit编码通常用于发送数据消息,如图片或铃声等;UCS2编码用于发送Unicode字符。由于笔者在系统中要实现中文短消息的发送,所以选择用UCS2。PDU串的用户信息(TP—UD)段,最大容量是140字节,所以在这三种编码方式下,可以发送的短消息的最大字符数分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。需要注意的是,PDU串的用户信息长度(TP-UDL),在各种编码方式下意义有所不同。7-bit编码时,指原始短消息的字符个数,而不是编码后的字节数。8一bit编码时,就是字节数。UCS2编码时,也是字节数,等于原始短消息的字符数的两倍。

(2)PDU模式下短信发送实例

在这里我们向目标手机“+8613504304922"发送内容为“温度:-25.6C’’的一条短信。其中有两个汉字“温度’’,一个ASCII码“:",一个ASCII码“一一表示负号,三个数字“256",一个小数点“.",一个字符“C’’表示摄氏度,总共9个字符。

第一步:将短信息格式设为PDU模式:AT+CMGF=O(enter)。

第二步:设置短消息服务中心地址:AT+CSCA=一+8613800431500一(enter)。其中的号码为长春市移动公司短消息服务中心号码。

第三步:申请发送:AT删Gs,33(enter)(33=15+18)。当得到模块回复的输入提示符“>"后,输入下面的字符串:

“0011000D91683l05344029F2000801126E295EA6003A002D00320035002E00360043"。最后在键盘上输入“ctrl+Z"(ASCII码值OxlA),短消息就可以发出。

以上的第一步和第二步,只需要输入一次即可,可以重复执行第三步申请多次短信发送。下面将解析上面的一串字符。先以功能单位隔开。“00

00

?11000D91683105344029F20801126E295EA6003A002D00320035002E00360043’’。“00一SMSC(短信息服务中心)地址的长度。这里使用的是SIM卡设置的SMSC地址,23

东北师范大学硕士学位论文

而且在此前已经用指令设置了SMSC地址,所以在这里就不再输入。如果不用SIM卡设置的SMSC地址或者在此以前没有对SMSC赋值则需再次输入“0891683108401305F0”,“08"为SMSC地址信息的长度(字节数),“91"为SMSC地址格式(TON/NPI)用国际格式号码,在前面加‘+’。“683108401305F0’’为短信息中心号码,真实地址为“8613800431500F"(为了凑足14位,在末尾补F),不难发现只需将前者奇偶位对调,即可得到后者。

?“11”基本参数(TP—MTI/VFP)。“1l"为短信发送,“04"表示短信接收,“31’’

表示要求对方回复。

?

?“00"消息基准值(TP-MR)。“0D"目标地址数字个数,共13个十进制数。“91"目标地址格式(TON/NPI)用国际格式号码,在前面加‘+’。“683105344029F2"目标地址(TP-DA)。真实值“8613504304922",补‘F’凑成

偶数个。

?“00’’协议标识(TP—PID)。“00"是普通GSM类型,点到点方式。“08’’用户信息编码方式(TP-DCS)。“00":表示7-bit编码,“08":表示UCS2编

码,“04":表示8一bit编码。

“01"短信有效期(TP—VP)。具体时间值如表4.6所示:

表4.6短消息有效时间表●

VP值

O~143

144~167短消息有效时间长度(VP+I)X5分钟12时+(VP一143)X30

168~196

197~2551天X(VP一166)1周X(VP-192)

以上部分都是短信息发送的控制部分,都是比较固定的值。实际为30个字节,对与MC55来说记作15字节。后面的部分都是短消息信息部分。

?

?“12"用户信息长度(TP-UDL)。用十六进制数表示,表示信息为18字节。“6E295EA6003A002D00320035002E00360043’’。其中“6E29一为“温"的

Unicode码。“5EA6’’为“度”的Unicode码。后面分别对应的是“:-25.6C"的Unicode码。汉字的Unicode码可以通过软件进行查询,而可显示的ASCII码的Unicode码为该ASCII码的十六进制值在前面补两个“O",例如“:"的ASCII码值为58,十六进制形式为3A,补“0"后就是“003A"。

至此已经实现了短信息的中英文混发,一条短信最多只能发70个字符。如果以UCS2的方式发ASCII码最多只能发70个字符,与7-bit编码的160个字符相比差了很多,但是UCS2方式下的70个字符已经足够信息表示。

东北师范大学硕士学位论文

4.2.4实时时钟芯片PCF8563

PCF8563是PHILIPS公司推出的~款工业级内含12C总线接口功能的,具有极低功耗的多功能CMOS实时时钟/日历芯片。PCF8563的报警功能,定时器功能,可编程时钟

输出功能以及中断输出功能,能完成各种复杂的定时服务,甚至可为单片机提供看门狗

功能。内部时钟电路,内部振荡电路,内部低电压检测电路(1.0V)以及两线制12C总线通讯方式,不但使外围电路及其简洁,而且也增加了芯片的可靠性。同时每次读写数据后,内嵌的字地址寄存器会自动产生增量。当然作为时钟芯片PCF8563解决了2000年问题,因而PCF8563是一款性价比极高的时钟芯片,它已被广泛用于电表、水表、气表、

电话、传真机、便携式仪器以及电池供电的仪器仪表等产品领域【38】。

PCF8563的管脚排列及描述如图4.7及表4.8所示。

表4.8

PCF8563管脚描述

oSCIOSCo

lNTVSS

PCF8563P

876

ll

符号

VDD

管脚号

l2345678

OSCI

CLKOUT

振荡器输入振荡器输出

中断输出(低电平有效)地

串行数据I/O串行时钟输入时钟输出(开漏)正电源

PCF8563T

PCF8563TS

SCL

OSCO

/ⅣT

VssSDA

_‘1

5ISDA

图4.7PCF管脚

SCLCLKOUTVDD

1.PCF8563内部寄存器

PCF8563共有16个可寻址的8位并行寄存器,但不是所有位都有用。前两个寄存器(内存地址00H,01H)用于控制寄存器和状态寄存器,内存地址02H"--08H用于时钟计数器(秒~年计数器),地址09H"-'0CH用于报警寄存器(定义报警条件),地址0DH控镱J]CLKOUT管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。各寄存器的位描述如表4.9和表4.10

所示:

东北师范大学硕士学位论文表4.9BCD格式寄存器概况

地址

寄存器名称

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

B;itl

Bit0

02H03H04H05H06H07H08H09H

秒分钟小时日星期月/世纪年分钟报警小时报警日报警星期报警

VL

00-59BCD码格式数00~59BCD码格式数00~59BCD码格式数01~31BCD码格式数

O“

C01—12

BCD码格式数

00~99

BCD码格式数

AEAEAEAE

oo ̄5900 ̄230l~31

0BH0CH

BCD码格式数

BCD码格式数

BCD码格式数

0~6

表4.10二进制格式寄存器概况

地址

00H

寄存器名称

Bit7TESTO

Bit6O

Bit5STOP

Bit4O

Bit3TESTC

Bit2O

13}itl0

Bit0O

控N/状态寄存

器1

01H

控制/状态寄存器2

OOTI厂rP

TF

AⅢTⅢ

0DH0EH

CLKOUT寄存器定时器控制寄存器

FETE

FDlTDl

FD0TDO

0FH

定时器倒计数数值寄存器

定时器倒计数数值(二进制)

2.PCF8563功能描述

PCF8563除了有16个8位寄存器,还有一个可自动增量的地址寄存器,一个内置32.768KHz的振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC提供源时钟)一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个

400KHz

12C总线接口。当一个RTC寄存器被读时,所有计数器的内容被锁存,因此在传

送条件下可以禁止对时钟/日历芯片的错读。

(1)CLKOUT输出

管脚CLKOUT可以输出可编程的方波。CLKOUT频率寄存器(地址0DH,参见表3.3)决定方波的频率。当FDl、F02=00B时输出平率为32.768KHz(缺省值);01B时1024

Hz,

东北师范大学硕士学位论文

10B时32Hz;11B时1Hz。FE位用于控SYCLKOOT输出是否有效,FE=1时CLKOUT输出有效,FE:o时CLKOUT输出被禁止,并设成高阻抗。

(2)定时器

8位的倒计数器(地址OFH)由定时器控制寄存器(地址0EH,参见表3.3)控制,定时器控制寄存器用于设定定时器的输入时钟频率(4096,64,1,或1/60Hz),以及设定定时器有效或无效。定时器从软件设置的8位二进制数倒计数,每次倒计数结束,定时器设置标志位TF(控N/状态寄存器2,Bit2),定时器标志位TF只可以用软件清除,TF用于产生一个中断(/ⅨT),每个倒计数周期产生一个脉冲作为中断信号。当读定时器时,返回当前倒计数的数值。

(3)报警功能模式

内部寄存器(地址09H~OCH)用于报警寄存器。一个或多个报警寄存器MSB

(AE=AlarmEnable报警使能位)清0时,相应的报警条件有效。只有相应的报警条件和当前的时间值全都相等的时候,才设置报警标志位AF(控制/状态寄存器2,Bit3)。AF用于产生一个中断(/INT),AF只可以用软件清除。这样当只有分报警位有效的时候能产生最短的报警周期为1小时。

(4)中断控制

由上面可以看出定时器中断和报警中断都是由/INT引脚输出,在没有中断时/INT为高电平,当有中断输出的时候,/INT降为低电平。为了实现中断控制,控制/状态寄存器2发挥了作用。

各位的作用如下:

?“AlE,TIE"标志位AIE和TIE决定一个中断的请求有效或无效,AIE=0报警中断

无效,AIE=I报警中断有效,Tm=o定时器中断无效,TIE=I定时器中断有效。当中断发生时,标志位置位,只有相应使能位开/INT才有效。中断是当AIE=TIE=I时AF,TF的逻辑或。

●“AF,"IF”当报警发生时AF被置逻辑1,在定时器倒计数结束时TF被置逻辑l。它

们在被软件重写前一直保持原有值。若定时器和报警中断都请求时,中断源由AF和TF决定。若要使清除一个标志位而防止另一标志位被重写,应运用逻辑指令AND。意思就是说在中断产生后,CPU读取了控N/状态寄存器2的值,查询了是哪个中断标志置位后,要清除该位,则向该位写0,保持另一位的状态,则写1。

“TI厂rP—TUTP=0:

TI/TP=I:?当TF有效时INT有效(gTIE=1)。1NT脉冲有效,周期与定时器的状态有关。

若AF和AlE都有效时则INT一直有效。

由上可见,中断产生后,相应的中断标志置位,只要中断使能位开,都能使/INT有效(产生低电平)。TI/TP只用来控制和定时器有关中断产生,当为0时正常定时器中断,当为1时可产生固定的脉冲中断。主机响应了中断后,必须查询中断标志,之后应该清除标志位,使/INT恢复高电平,如果是定时器中断还应该重新赋定时器初值。27

东北师范大学硕士学位论文

425远程节点电路

罔411远程节点电路

图中ATMEGAl6和MC55丌发板通信是通过RS232接口实现的,PCF8563带扳载纽扣电池用于保持实时时钟功能。

42.6远程节点实物图4【2远程节点实物

东北师范大学硕士学位论文

上图为远程节点实物图,传感器和主控芯片之问通过导线相连,主控芯片和GPRS模块通过串口相连。

4.3远程节点软件流程

本系统的软件设计,主要是用C语言对单片机编程,驱动单片机完成所有的功能操作。程序结构流程图如图4.12所示。

连接成功

图4.12远程节点软件流程

由主程序可以看出CPU复位后先进行各外部连接器件总线的初始化操作,然后完成有关短消息的设置,最后设置外部时钟芯片,启动定时器,开中断,进入主程序循环。外部时钟芯片定时器每30秒产生一次中断,单片机在外部中断1中响应该中断。外部中断1中完成各传感器对数据的采集和单片机对数据的读取,并设置标志位,使主程序启动数据发送。外部中断1是整个程序的关键,使整个程序有条不紊的运行。4.3.1Codevision简介

C语言变成工具是为AtmelAVR系列微控制器而设计的一款C编CodeVisionAVR

译工具,可以在WIN2000、XP、Vista操作系统下运行。

安装该软件后,双击桌面图标启动CodeVisionAVR开发环境,如图4.13所示:

东北师范大学硕士学位论文

图413CodeVisionAVR界面

启用CodeVislon创建一个新的工程时,程序会弹出个设置向导的对话框,如图414所示:

囝墨田■■■■●●■■—_l隧簸到l

兰!兰蓦引匡虱墅I|

图414向导对话框

点击“YES”可以利用向导来完成部分内容的初始化,这为我们的开发工作大大节省了时间。在芯片型号中我们可以选择与开发对应的芯片型号,本文中所用为“ATmegal6”,晶振为73728删z,阔时,j丕可以选择对I/O口的操作,对定时器jI中断、串口的操作,山于本设计中用到12C总线,还可以选择对12c总线的操作。设置完成之后点击菜单“Fi】e”,选择“Generate,saveandexit”选项,如图415、416所示:

东北师范大学硕士学位论文

t11?蝉p

usARTJillHdpIAr岫c呻岫rd*1^Dc

I1w_eIsHbT_

。璧崮蒜一IE!。麓:1篙

。掣J^Trr曲“5,■

Clo“:173”800I笠12Wieo正l自“¨。■…_目s州最&itj”…,幽"H2

r口HcB∞d‰P’q”TⅢlAp■㈨-I

图4.15CodeVision向导图416CodeVision向导生成程序

这样就生成了对应的我们需要的程序。

4.32定时器l输入捕捉中断

定时器l的主要作用是测外部输入到ICPl引脚的低电平脉宽,为测试灰尘服务。设置下降沿触发定时器l开始计数,上升沿停止计数。因为灰尘测试的时间段为30秒,所以外部定时器设置为30秒中断一次。在外部中断1开启定时器1,30秒后关闭定时器,这时候的pWII】一N值就是我们需要的值,读取后,计算完灰尘值,然后使pwmN清零,为下次测量做准备。

43.3外部中断1程序外部中断l服务程序框图如图4.17所示

东北师范大学硕士学位论文

ep+=l

图4.17外部中断1程序流程

外部定时器和内部定时器一样,每次中断都必须赋初值,使其重新计数,而且应使中断标志位复位,使/INT恢复高电平。定义了一个全局宏N,用于设置发送的周期。周期为(N+1)/2分钟。计数器step用于程序控制。

中断每次进来的时候,会判断step的状态,当为(N.1)时,开定时器l,则定时器l在step=N区间测定灰尘传感器引脚脉冲宽度。再次进入中断时step=N,关闭定时器,计算出灰尘值,分别调用SHTl0和PCF8563的项层函数,把采集到的数据存入全局变量中,并将step归O,设置标志位。当中断程序返回后,在主程序中发送数据。当中断进入时,如果step为其他值,只做基本的step=step+1操作。

//ExternalInterruptlserviceroutine

interrupt[EXT_INTl】voidext_intl_isr(void)

//Placeyourcodehere

Set_control();

if(st删-1))Set_timer();

//Timer(s)/Counter(s)Interrupt(s)initialization

TIMSK=0x01;

step+=1;

elseif(step--一N)//这里的N是设计的发送数据时间控制(N+1)/2分钟

32{

东北师范大学硕士学位论文

TIMSK=0x00;//关闭定时器l

step---0;

//计算灰尘的量

RT=pulse_clock/30000;

huirain:RT/0.02;//除以30S

hui—max=(RT+O.00833)/0.013;

//输入捕获清零

pulseclock=0;

fallingedge=0;

rising,edge=O;

//读取现在的时间

Read_clock(gettime);

//读取温湿度值

SHTl00;

read_flag=l;//放置标志位时间到,数据已经准备好,应该发送数据了

else

tep+=1;

//主函数中的程序

//ExternalInterrupt(s)initialization

∥NTl:On

//INT1Mode:FallingEdge

GICRI=0x80;

MCUCR=0x08;

MCUCSR=0x00;

GIFR=Ox80;

//Globalenableinterrupts

#asm(”sei”)//开中断

4.3.4RS232串口驱动程序

AVR单片机和GPRS模块通信的基础就是串口通信,所以串口驱动程序就显得尤为重要,串口驱动程序如下:

||Us氏骶initialization33

东北师范大学硕士学位论文

//CommunicationParameters:8Data,lStop,NoParity

||Us赋【Receiver:Off

//USARTTransmitter:On

{|Us赋IMode:Asynchronous

||Us臌【BaudRate:9600

UCSRA=0x00;

UCSRB=0x08;

UB嗍F;

voidplltsUCSRC=0x86;UBRRH=Ox00;//在主程序中需首先设定串口端口,波特率,停止位和校验位,本设计所用串口为AVR单片机的PDO、PDl脚,波特率为9600,8位数据传送,一个停止位,无校验位。//向串口发送一个字符串:enter(unsignedchar奉pt0

while(}ptr)

{putchar(幸卅);

putchar(OxOD);

putchar(0x0A);//结尾发送回车换行)

voidputsnoenter(unsignedchar?ptr)

while(宰ptr)

putchar(幸p心卜+);

系统函数putchar();是最底层的函数,它直接向串口发送一个字符。函数put的过程中经常要用到回车,所以在put…ssnoenter(unsignedchar?ptr)他的目的是向串口发送一个字符串,由于在MC55通讯

noenter(unsignedchar*ptr)函数中集成了

发送回车的功能,这样有利于增强程序的可读性。

我们把要发送的命令,直接在程序中存为字符串,在编程的时候直接调用这两个函数就可以发送给GPRS模块。采集到的数据也可以转换为每一位的ASCII码,直接发送。

东北师范大学硕士学位论文

第五章数据中心系统实现

5.1VISUALC++中的网络编程

数据中心系统软件是以VisualC++6.0为工具开发的。VisualC++是一种可视化、面向对象和采用事件驱动方式的程序开发工具,是程序开发人员的首选利器,在众多可视化程序开发工具中,其功能强大首屈一指,用VisualC++编译出的代码执行速度快、效率高【391。

5.1.1Socket简介

为了能够方便的开发网络应用软件,由美国伯克利大学在UNIX上推出了一种应用程序访问通信协议的操作系统调用套接字(Socket)。Socket的出现,使程序员们可以很方便的访问TCP/IP,从而开发各种网络应用的程序。随着UNIX的应用推广,套接字在编写网络软件中得到了极大的普及。后来,套接字又被引进了Windows等操作系统,成为开发网络应用程序的非常有效快捷的工具。

套接字存在于通信区域中。通信区域也叫地址簇,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一区域的套接字交换数据。WindowsSockets只支持一个通信区域:网际域(AF-INEl')。

在Intel、Sun、SDI、Informix、Novell等公司的大力支持下,Windowssocket(以下简称WinSock)已经成为Windows网络编程的标准。

WinSock编程分为同步(Sync)和异步(Async)方式。同步方式指的是发送方不等接收方响应,便接着发下一个数据包的通信方式。同步方式逻辑清晰,编程专注于应用,在抢先式的多任务操作系统中(WinNT、Win2000),采用多线程方式效率基本达到异步方式的水平。而异步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式p9J。

阻塞套接字是指执行此套接字的网络调用直到成功才返回,否则一直阻塞在此网络调用上,比如调用recv()函数读取网络缓冲区中的数据,如果没有数据到达,将一直挂在recv()这个函数调用上,直到读到一些数据,此函数调用才返回;而非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。c/s(客户/服务器)结构的软件就是异步非阻塞模式的。35

东北师范大学硕士学位论文

Windows提供了一系列的API来支持Sockets,主要包括两类,

型的函数,另

展函数。类是Berkeley类类是已经认可的作为蚍ndowsSockets2的一部分的Windows特殊的扩

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序m可以用它们来开发TCP/IP网络上的应用程序。

512CSocket类的使用

Vlsual对于Microsoitc十十束|兑,因为V1suslc干+的MFC类库提供了两个Socket

Socket类:CAsyncSocket类,封装了wlndowsSocketAPI;CSocket类,从CAsync

类派生的高级抽象,替编程者执行了对底层函数的操作,简化了Socket编程,降低了编程难度,支持同步操作。

CSocket类提供了一个高级的Socket支持,它运用了MFC的序列化来提供和传输SockeL对象。我们一般采用CSocket类相芙成员函数进行客户端和服务器端的编程。52数据中心软件实现

5.2.1数据中心软件总结构

数据中心软件结构框图如图51所示

!∽件U一每一久陟~

图51数据中心软件结构彩§一

如上图所示,存数据中心上搭载TCP、UDP服务器程序,通过Socket接收远程节点发送到JNTERNET上的数据。数据中心接收到数据后自动存入指定的ACCESS数扼厍表格中保存,服务器可根据ACCESS数据库中的数据画出温度、湿度、露点和灰尘的曲线型。5.2.2TCP服务器

1客户机/服务器模式

在TCP/IP网络中两个进程问的相互作用的主机模式是客户机/服务器模式

36

东北师范大学硕士学位论文

(C1ient/Servermodel)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:

首先服务器方要先启动,并根据请示提供相应服务:(过程如下)

(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。(2)等待客户请求到达该端口。

(3)接收到重复服务请求,处理该请求并发送应答信号。

(4)返回第二步,等待另一客户请求。

(5)关闭服务器。

客户方:

(1)打开一通信通道,并连接到服务器所在主机的特定端口。

(2)向服务器发送服务请求报文,等待并接收应答;继续提出请求。

(3)请求结束后关闭通信通道并终止。

2.基本套接字

为了更好说明套接字编程原理,给出几个基本的套接字。

(1)创建套接字——socket()

●功能:使用前创建一个新的套接字

?格式:SOCKETPASCALFARsocket(int

●参数:af:通信发生的区域af,inttype,intprocot01);

?type:要建立的套接字类型

●procotol:使用的特定协议(2)指定本地地址_bind()

格式:int

namelen).●?功能:将套接字地址与所创建的套接字号联系起来。PASCALFARbind(SOCKETs,conststructsockaddrFAR?name。int

◆参数:S:是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。●其它:没有错误,bind0返回0,否则SOCKET

●址结构说明:

structsockaddr—.inERROR

shortsinfamily;//AF_INET

Ushortsinport;//16位端口号,网络字节顺序

addr;//32位P地址,网络字节顺序structinaddrsin

charsinzero[8];//保留

(3)建立套接字连接——connect()和accept0

?功能:共同完成连接工作

●格式:intPASCALFARconnect(SOCKET

37s,conststructsockaddrFAR宰彻me。int

东北师范大学硕士学位论文

namelen);

SOCKETPASCALFARaccept(SOCKETs,structsockaddrFAR?name.intFAR?addrlen);//参数:同上

(4)监听连接——listen()

●功能:用于面向连接服务器,表明它愿意接收连接。●格式:hatPASCALFARlisten(SOCKETS,intbacklog);(5)数据传输一send0与recv()

●功能:数据的发送与接收

?格式:intPASCALFARsend(SOCKETs,constcharFAR?bueintlen,intflags);

hatPASCALFARrecv(SOCKETs,constcharFAR?buf,intlen,hatflags);

?参数:buf:指向存有传输数据的缓冲区的指针。(6)多路复用——select()

●功能:用来检测一个或多个套接字状态。

●格式:int

fd—setPASCALFARselect(intnfds,fdsetFAR?readfds,fdsetFAR?writefds,FAR?exceptfds,conststructtimevalFAR宰timeout);●参数:readfds:指向要做读检测的指针

writefds:指向要做写检测的指针

exceptfds:指向要检测是否出错的指针

(7)关闭套接字—closesocket()

●功能:关闭套接字

?timeout:最大等待时间格式:BOOLPASCALFARclosesocket(SOCKETs);3.典型流程图建立面向连接的套接字(TCP)的流程如图5.2所示:

东北师范大学硕士学位论文

服务器方客户方

Socket()建立套接字ffSocket()建立套接字

Bind0地址绑定

Listen0监听端口

Accept0接受客户方的

连接Connect0与服务器相连

Receive0/send0,接

收和发送数据send()/Receive(),接收和发送数据

Closesocket()关闭套}

接字lIClosesocket()关闭套I接字

图5.2建立面向连接的套接字(TCP)的流程

5.2.3UDP服务器

DatagramUDP协议是英文UserProtocol的缩写,即用户数据报协议,主要用来支

持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。

与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

面向无连接(UDP)的套接字的流程如图5.3所示:39

东北师范大学硕士学位论文

服务器方客户方

Socket()建立套接字llSocket()建立套接字

Bind0地址绑定

Receive0/send0,接

收和发送数据

Closesocketsend0/Receive0,接收和发送数据Closesocket0关闭套I

接字J0关闭套接字

图5.3面向无连接(UDP)的套接字的流程

如图所示,在服务器方与TCP方式相比,UDP方式少了Listen()和Accept()两个步骤,因此UDP方式不能保证数据的准确接收,同时,由于少了这两个步骤,UDP方式的传输速度要比TCP快得多。

5.3数据库及数据处理功能实现

vC中常用的数据库连接技术有五种,它们分别是:ODBCAPI、MFCODBC、DAO、OLEDB、ADO。从访问速度来看,传统的ODBC速度较慢。OLEDB和ADO都是基于COM技术,使用该技术可以直接访问数据库的驱动程序,速度大大提高。从可扩展性来看,通过OLEDB和ActiveX技术,可以利用vc提供的各种组件,控件和第三方提供的组建。从而实现应用程序组件化。从访问不同数据源来看,传统ODB只能访问关系数据库,VC中提供OLDDB技术可以解决该问题【删。

5.3.1几种数据库访问技术概述

1.ODBCAPI

提供一个通用接口,为ORACLE和SQLSERVER都提供了驱动程序。用户可以使用SQL语句对数据库进行直接的底层功能操作。使用时应包含以下头文件。“SQL.H"。“SQLEXT.H",。SQLTYPES.H"。

使用步骤如下:

第一步:分配ODBC环境,初始化一些内部结构。完成该步,需要分配一个SQLHENV类型的变量在ODBC环境中做句柄使用。

第二步:为将要使用的每一个数据源分配一个连接句柄,有函数SQLALLocHandle(>完成。

第三步:使用SOLConnect()把连接句柄与数据库连接,可以先通过

柏SQLSetConnectAttr()设置连接属性。

东北师范大学硕士学位论文

第四步:进行SQL语句操作。操作完就可以断开与数据库的连接。

第五步:释放ODBC环境。

特点:功能强大,提供异步操作,事务处理等高级功能。目前所有关系数据库都提供了ODBC的驱动程序,使用很广泛。

缺点:很难访问对象数据库和非关系数据库。

2.MFCODBC类

ODBC为简化使用ODBCAPI,vC提供了MFCODBC类,封装了ODBCAPI。主要MFC

类如下:

CDatabase类:一个CDatabase对象表示一个到数据源的连接,通过它可以操作数据源。一般不需要直接使用CDatabase对象,因为CDecordSet对象可以实现大多数功能,但在进行事务处理时,CDatabase就起到关键作用。

CRecordSet类:一个CRecordSet对象代表一个从数据源选择的一组记录的集合一记录集。记录集有两种形式:snapshot和dynaset。前者表示是静态视图。后者表示记录集与其它用户对数据库的更新保持同步。一

CRecordView类:是在空间中显示数据库记录的视图。这种视图是直接连到一个CRecordSet对象的格式视图。他从一个对话框模版资源创建。并将CRecordSet对象的字段显示在对话框模版的控件里。对象利用DDX和RFX机制。使格式上的控件和记录集的字段之间数据移动自动化。

CDBException类:由Cexception类派生,以3个继承的变量反映对数据库操作时的异常。

MnRetCode:ODBC返回码。

M—strError:字符串,描述造成抛出异常的错误原因。

M_strStateNativeOrigin:字符串,描述以ODBC错误码表示的异常错误。

3.MFCDAO

MFCDAO是微软提供的用于访问MicrosoftJet数据库文件(半.Mdb)的工具。当只需访问Access数据库时用该技术很方便。‘

4.OLEDB

与ODBC技术类似,OLEDB属于数据库访问技术中的底层接口。直接使用OLEDB需要大量代码,VC中提供了ATL模版,OLEDB框架定义了应用的3个基本类:

数据提供程序DataProvider:拥有自己的数据并以表格形式显示数据的应用程序。

使用者Consumers:使用OLEDB接口对存储在数据提供程序中对数据进行控制的应用程序。

服务提供程序ServiceProvider:是数据提供程序和使用者的组合。使用OLEDB编程时,用户使用组件对象开发程序,这些组件包括:

?枚举器:用于列出可用的数据源;

?数据源:代表单独的数据和服务提供程序,用于创建对话;4l

东北师范大学硕士学位论文

对话用于创建事务和命令;

事务

命令

错误用于将多个操作归并为单一事务处理;用于向数据源发送文本命令(SQL),返回行集;用于获得错误信息。

5.ADO概述

ADO是Microsoft为最新和最强大的数据访问范例OLEDB而设计的,是一个便于使用的应用程序层接口。ADO使您能够编写应用程序以通过OLEDB提供者访问和操作数据库服务器中的数据。ADO最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。ADO在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。之所以称为ADO,是用了一个比较熟悉的暗喻,OLE自动化接口。

OLEDB是一组“组件对象模型"(COM)接口,是新的数据库底层接口,它封装了ODBC

Access)策略的技术基础。OLEDB为任何数据源提供了高性能的访的功能,并以统一的方式访问存储在不同信息源中的数据。OLEDB是MicrosoftUDA(UniversalData

问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。也就是说,OLEDB并不局限于ISAM、Jet甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。在实际应用中,这种多样性意味着可以访问驻留在Excel电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如MicrosoftExchange中的数据。但是,OLEDB应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。您需要API应该是一座连接应用程序和OLEDB的桥梁,这就是ActiveXDataObjects(ADO)。笔者在开发中正是使用了ADO技术来完成应用程序与数据库之间的连接。

5.3.2在vc中使用ADO

1.引入ADO库文件

使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下所示:

用#import引入ADO库文件

#import‘'c:\programfiles\common丘les\syst钮此d0、I璐ado15.dll"no_namespaces

rename(”EOF”adoEOF”)

这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。现在不需添加另外的头文件,就可以使用ADO接口了。

2.初始化OLE/COM库环境

必须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/CoM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/CoM库环境。

BOOLCMyAdoTestApp::InitlnstanceO

42{

东北师范大学硕士学位论文

if(!AfxOlelnit0)//这就是初始化COM库

AfxMessageBox(“OLE初始化出错!’’);

retUlTIFALSE;

3.ADO接口简介

ADO库包含三个基本接口:_ConnectionPtr接口、一CommandPtr接口和

一RecordsetPtr接口。

_ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SOL语句,如一个存储过程。使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。对于要返回记录的操作通常用一RecordserPtr来实现。而用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用RecordserPtr时不需要。

_CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SOL语句。在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果你只执行一次或几次数据访问操作,后者是比较好的选择。但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_ConmandPtr接口执行存储过程和SQL语句。

_RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给一RecordsetPtr的

connection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局__ConnectionPtr接口,然后使用RecordsetPtr执行存储过程和SQL语句。

4.使用_ConnectionPtr接口

_ConnectionPtr主要是一个连接接口,取得与数据库的连接。它的连接字符串可以是自己直接写,也可以指向一个0DBC

5.使用_CommandPtr接口DSN。

一CommandPtr接口返回一个Recordset对象,并且提供了更多的记录集控制功能,以下代码示例了使用_ConmandPtr接口的方法:

代码:使用_CommandPtr接口获取数据

6.关于数据类型转换由于COM对象是跨平台的,它使用了一种通用的方法来处理各种类型的数据,因此Cstring类和COM对象是不兼容的,我们需要一组API来转换COM对象和C++类型的数据。_vatiant—t和_bstr—t就是这样两种对象。它们提供了通用的方法转换COM对象和C++类型的数据。43

东北师范大学硕士学位论文

5.3.3Mschart简介

图表由于其直观明了的特性,在实际应用中十分广泛。我们常常希望数据能通过图表来显示其特性。例如在vC++和C++Builder编程中,我们可以很方便地实现数据图表。MsChart(6.0)是Windows系统中Visualstudio自带的一个ACTIVEX控件,它功能强大,应用广泛,具有以下特点:

●支持随机数据和随机数组,动态显示;

?支持所有主要的图表类型:

?支持三维显示。

MsChart具有45个属性,9个方法,49事件,可灵活编程,可实现各类表的显示。在VisualC++中使用MsChart控件编程:

1.首先插入MsChart控件

在工程中加入mschart,选择菜单一>Project一>AddToProject->ComponentsandControls一>RegisteredActiveXControls一>MicrosoftChartControl,version6.0(OLEDB)

2.在用到控件的地方加上相应的头文件,如“mschart.h’’,还有其他比较常用的头文件:

#include”VcPlot.h¨

#include”VcAxis.h”

#include”VcValueScale.h”

#include”VcCmegoryScale.h”

#include”VcDataGrid.h¨

#include”VcAxisTitle.h”

3.create控件对象

CMSChartre_Chart;

re_Chart.Creme(”mschart",WS_CHILDIWS-ⅥSIBLE,rc,this,10);//this为窗口指针。4.设置控件的属性

//设置标题

re_Chart.SetTitleText(Title);//Title为CString类型

∥设置栈模式

re_Chart.SetStacking(FALSE);

//设置行数及列数

mChart.SetRowCount(iRowCount);//iRowCount和iColumnCount为int型

mChart.SetColumnCount(iColummCount);

//设置控件的数据,int型的iRow,iColumn可看成是数据所在的行和列,Data即是所要设的数值型数据。

re_Chart.GetDataGrid0.SetData(iRow,iColmnn,Data,0);44

东北师范大学硕士学位论文

//设置图例

m_Chart.SetShowLegend(TRUE);//显示图例

m_Chart.SetColumn(iColumn);

re_Chart.SetColumnLabel(slegend);//slegend为CString型

//设置x轴下方显示的标记

re_Chart.SetRow(iRow);

m_Chart.SetRowLabel(sLabel);//sLabel为CString型

//设置X轴及Y轴的标题。xTitle和yTitle为CString型

m_Chart.GetPlot0.GetAxis(0.Var).GetAxisTitle0.SetText(xTitle);//x轴

re_Chart.GetPlot(1.GetAxis(1,'car).GetAxisTitle0.SetText(yTitle);//y轴

//设置控件类型

m_Chart.SetChartType(3);//3:曲线型;

//设置背景颜色

re_Chart.GetBackdrop0.GetFill0.SetStyle(1);

m_Chart.GetBackdrop0.GetFill0.GetBrush0.GetFillColor0.Set(255,255,255);//设置X轴的其他属性

m_Chart.GetPlot0.GetAxis(0,var).GetCategoryScale0.SetAuto(FALSE);//不自动标注X轴刻度

re_Chart.GetPlot0.GetAxis(0.var).GetCategoryScale0.SetDivisionsPerLabel(1);//每刻度一个标注

re_Chart.GetPlot0.GetAxis(0,vat).GetCategoryScale0.SetDivisionsPerTick(1);//每刻度一个刻度线

//自动标注Y轴

re_Chart.GetPlot0.GetAxis(1,Vat).GetValueScale0.SetAuto(TRUE);

m_Chart.GetPlot0.GetAxis(1,var).GetValueScale0.SetMaximum(100);//y轴最大刻度为100

m_Chart.GetPlot0.GetAxis(1,var).GetValueScale0.SetMinimum(0);//y轴最小刻度为0re_Chart.GetPlot0.GetAxis(1,vat).GetValueScale0.SetMajorDivision(5);//将y轴刻度5等分

re_Chart.GetPlot0.GetAxis(1,vat).GetValueScale0.SetMinorDivision(1);//每刻度一个刻度线

re_Chart.GetPlot0.GetAxis(1,vat).GetAxisTitle0.SetText(¨YourTitle¨);//Y轴名称

通过这些函数,我们可以将ACCESS数据库中的数据导入到数组中,并在x、Y轴上绘制曲线图。45

东北师范大学硕士学位论文

第六章系统测试及讨论

61数据的网络传输

TCP、UDP服务器6.1.1

整个系统己经实现数据发送到目标服务器,可以以TCP和UI)P的形式发送还可以以短信的形式发到用户手机。其中目标服务器用软件接收,如下图所示.惑产盈—??_E墨雹互墨_-—嘲戳蠢&④一

图61服务器TCP接收

东北师范大学硕士学位论文

『面—j

l厂————~团团

图62服务器UDP接收

如图所示服务器TCPSere的IP地址为,“202.198

UDPSever13756”,其监听的端口为60000.IP地址和TCPSever一样,其端口为50000。在主窗口中显示的示接收到的数据,下面将对其中的一条数据做详细的解析。

数据:Temp:282CHumi:219%Dpoint:04.5CDust:0046.35006327KpcsTime:ll:23:26—09/05/26-Tuesday”。

?“Temp:282c”-表示采集到的温度值为28.2度。起始为一空格,在冒号后面还有

一空格,如果温度值为负,则显示负号…,该字符串共12字符。

?“Bumi:21.9%”,表示采集到的相对湿度值为21.9%,格式和温度相同,该字符串

也是12个字符。

“Dpoint:04.5C”,表示采集到的露点值为04.5度.格式和温度相同,该字符串长度为14个字符。

0063.27Kpcs.”,表示采集到的灰尘值在46.35到63.27之间,单

Tuesday”,表示的是远程系统采集数据的时划,这个●?“Dust:004635位为“Kpcs”,该字符串为26个字符。?“Time:ll:23:26—09/05/26

时间由实时时钟芯片PCF8563提供。该字符串为34个字符。

以上字符串总共为98个字符.远程采集系统中控制器向MC55申请发送的数据长度也是98个,必须严格计算字符数,只有申请的和实际发送的数据个数相同,MC55才能启动数据传输。

东北师范大学硕士学位论文

图63存入数据库中的数据

上图所示为存入ACCESS数据库“GPRS”数据表中的数据,从图中可以看出远程节点通过GPRS网络传输的数据被分门别类的存入到数据表中。这样不但保存了数据,同时

也为曲线图的绘制奠定了基础。6.1.3曲线圈

通过存入对ACCESS中数据的读取,可以很方便的绘制出温度、湿度、露点、厌尘随时间变化的盐线图,如图6.4所示:

■隧群型

曲线图

100

80

10080

60

强60燕40

200

寸n∞

4020

生ol_

刳一

n皂

一韫度C一程度%一露点C

nI.

ol-

姓Kpcs

西f

时阃

图6.4数据随时间变化的曲线

上图为温度、湿度、露点、灰尘随时间变化的曲线图,横坐标代表时间,纵坐标代表温度、湿度、露点、灰尘的值。

6.2数据短信传输

下面是NOKIA7610手机收到的一条MC55发的短信。

东北师范大学硕士学位论文

图65数据的手机接收

当温度值和露点值为负时,对应数字前面的位置会显示负号。

63实验结论及改进设想

本文提出了基于CPRS的野外数据采集与传输方案,井完成了相关软硬件的设训与调试。

本文所做的丰要工作为;

1详细的阐述了GPRS的原理,介绍了GPRS的应只j领域。

2在仔细的研究AVR单爿机、SHTl0温湿度传感器、DSM501灰尘传感器、PCF8563

时钟芯”及MC55模块的功能结构之后,编写软件设计了数据采集系统。

3通过AT指令控制MC55模块连接Internet【叫绍并传送数据。

4运用Visual(:+t编写软件安装到目标服务器接收远程节点发送的数据。

整套系统可用于采集野外的温度、湿度、露点和扶尘,通过GPRS网络传送到指定的服务器或通过短信息的方式将数据直接发送到用户的手机中。每隔两分钟发送一次数据,实时性较高,对于野外温湿度及扶尘的监控具确较好的现实意义。

山于作者水平有限,州时又由丁叫问的限制,率系统在很多细节方面i丕存在不足之处。主要可在以F方面进行改进:

l基于GPRS的野外数据采集系统是一整套设讨思想,本文中用到的传感嚣为温湿度和灰尘,更换传感嚣之后可采集其他数据。

2山于时司有限,整套系统基于各自的开发扳,在后续的升级过程巾可将所彳1器什放到一块PCB板上。

东北师范大学硕士学位论文

3.同时随着通信系统的进步和发展,以后将对这一系统升级和更新,采用更为先进和完善的3G网络进行数据传输是将来的努力方向。

笔者相信随着系统的进一步完善和发展,最终能够把一套完整的监控系统应用于国民经济的众多领域。

东北师范大学硕士学位论文

参考文献

[1]蒋建虎.基于GPRS和GPS的野外移动环境监测技术研究[D][硕士学位论文].南京:南京航空航天大学,2006.

[2]万海鹏.基于GPRS的环境监控系统的研究与实现[D]:[硕士学位论文].天津:天津大学,2005.[3]刘慧韬.基于GPRS的环境监测网络系统研究与实现[D]:[硕士学位论文].武汉:华中科技大学,2006.

[4]何金辉.基于GPRS的环境监测系统设计[D][硕士学位论文].武汉:华中科技大学,2006.

[5]秦勇.基于GPRS的无线数据采集在环境自动检测中的应用[D]:[硕士学位论文].北京:中国地质大学,2006.

[6]董继武.基于GPRS的环境监测数据传输系统的研究[D]:[硕士学位论文].天津:天津大学,2003.08.

[7]陶玉福,刘庆华.基于GPRS的环境温度监测系统[J].应用天地,2007,26(6):59—61.

[8]刘甲,刘建军,范强.一种基于GPR。S_CDHAIX无线传输技术的煤矿安全监控系统[J].安防科技,2007,2:63-65.

[9]薛庆吉,周国运.基于GSl4_GPRS网络远程无线控制系统应用研究[J].福建电脑报,2008第三期.[10]赵敏.基于GPRS网络的无线通信系统的研究和实现[D]:[硕士学位论文].太原理工大学,2008.[11]许俊杰.GPRS网络数据传输速率影响因素的研究[D]:[硕士学位论文].天津:天津大学,2004.[12]王真真.基于GPRS嵌入式数据传输系统的研究与开发[D]:[硕士学位论文].杭州:浙江大学,2008.

[13]李树析.基于GPRS的无线报警系统[D]:[硕士学位论文].武汉:武汉理工大学,2006.

[14]马彪.基于GPRS的嵌入式数据采集系统的设计及研究[D]:[硕士学位论文].大连:大连理工大学,2006.

[15]虞明雷,姜嫒嫒.基于GPRS的无线数据传输系统[J].机电工程,2007,24[5]:34-36.

[16]宋国振.基于GPRs和Internet的分布式数据监测系统[D]:[硕士学位论文].大连:大连理工大学,2005.

[17]赵雄.基于GPRS网络的远程数据传输[D][硕士学位论文].厦门:厦门大学,2007.

[18]张寅.基于GPRS的远程无限监控系统[D]:[硕士学位论文].秦皇岛:燕山大学电气工程学院,2006.

[19]燕丽红.基于GPRS技术的远程数据传输系统的研究[D]:[硕士学位论文].西安:西安科技大学,2006.51

东北师范大学硕士学位论文

[20]王磊,冯占军.基于GPRS网络的嵌入式无线数据采集系统设计[J].测控技术,2007,26[9]:17一19.[21]郑澜.移动通信GPRS计费浅析[J].通信世界,2001[不完整].

[22]房恩封.基于GPRS的嵌入式图像监控系统的原理和实现[D]:[硕士学位论文].哈尔滨:哈尔滨工程大学,2005.

[23]陈晓庆.基于GPRS技术的远端无线图像采集系统的研制[D]:[硕士学位论文].沈阳:东北大学,2005.

[24]陈能干,裘姝平.基于GPRS的远程视频监控系统设计[J].视频技术应用及工程,2007,31[1]:76—78.

[25]张正平,夏斌,刘桥.基于单片机的GPRS无线数据采集与传输系统的设计[J].四川理工学院学报,2007,20[5]:18—22.

[26]LuyingZhou,PatS.YChan,R.RadhakrislmaPillai.EffectofTCP/LLCprotocolinteractioninGPRSnetworks[1].ComputerConununications,2002,25:501-506.

[27]BrahimGhribi,LuigiLogrippo.UnderstandingGPRS:theGSMpacketradonservice[J].ComputerNetworks,2000,34:763?779.

[28]朱会东,黄艳.基于GPRS的无线图像监控系统的设计与实现[J].河南科学,2007,25[2]:278-281.

[29]刘峰.电力系统基于GPRS的无限集抄系统研究与应用[D]:[硕士学位论文].济南:山东大学,2008.

[30]曲登攀.GPRS移动通信系统优化与研究[D]:[硕士学位论文].郑州:郑州大学,2006.

[31]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.

[32]尤佳宁.用AVR控制实现数据采集系统[D][硕士学位论文].上海:华东师范大学理工学院化学系,2006.

[33]SensirionCompany.SHTlx/SHT7xdatasheetIs],2007.08.

[34]SYHITECII.DSM501datasheet[S],2006.、

[35]SimensCompany.MC55_HardwareInterfaceDescription[S],2005.

[36]SimensCompany.MC55ATCommandSet[S],2004.

[37]SimensCompany.MC55一Internet—AT—Command[S],2005.

[38]Philips.PCF8563datasheet[S],2002.

[39]周筝,康晓林.VisualC++6.0实用教程[M].电子工业出版社,2007.1-6.

[40]韦朴,陈泰生.VisualC++通用范例开发金典[M].电子工业出版社,2008.365-372.52

东北师范大学硕士学位论文

致谢

本论文从最初准备到最后完成,得到了我的导师王连明老师的悉心指导。王老师学习上对学生严格要求,生活上和蔼可亲,关怀备至,他的严谨的治学态度和教学风范对我产生了很大影响。感谢三年来老师对我生活上和学习上无微不至的关怀。

在程序调试的过程中遇见很多的困难,感谢张欢欢同学和谢静同学给予的帮助。同时也感谢我的家人和朋友,感谢他们对我一如既往的支持和关心。53

野外数据采集与远程传输系统设计

野外数据采集与远程传输系统设计

作者:

学位授予单位:杨乐东北师范大学

本文链接:http://d..cn/Thesis_Y1466825.aspx

授权使用:凤元杰(wfjxxy),授权号:224c4532-abb2-4509-a69b-9e5800e9f168

下载时间:20xx年12月26日

相关推荐