毕业设计(论文)-基于ARM的GPRS通信系统设计与实现.doc_第1页
毕业设计(论文)-基于ARM的GPRS通信系统设计与实现.doc_第2页
毕业设计(论文)-基于ARM的GPRS通信系统设计与实现.doc_第3页
毕业设计(论文)-基于ARM的GPRS通信系统设计与实现.doc_第4页
毕业设计(论文)-基于ARM的GPRS通信系统设计与实现.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

北京林业大学本科毕业论文(设计)基于arm的gprs通信系统设计与实现信息自动化04-2 指导教师 摘要本文介绍了基于s3c2410的gprs通信系统的设计与实现,包括硬件模块程序设计以及系统软件设计。硬件模块程序包括adc、键盘、lcd、uart、gprs等各功能模块控制程序的设计;系统软件包括数据采集子系统、数据中心子系统软件系统的设计,其中详细介绍了系统的数据流图分析、程序结构设计过程。本文还简单介绍了gprs传输控制协议、sms编解码过程。最后还简单介绍了本系统的系统测试方法、测试过程以及测试结果。关键词:s3c2410,gprs,smsthe design & implementation of gprs communication system depend on arminformation automates 04-2 wu xiao-hongsupervisor kan jiang-mingabstractthis article mainly introduces the design and implement of the gprs communication system depend on s3c2410, including the design of program on each module, the system software design. the each modules program include adc, key-board, lcd, uart,gprs, and so on. the system software includes software-system of the data acquisition subsystem and the data central subsystem. this article also simply introduce the gprs transmission control protocol, the procedure of encode & decode of sms and so no. finally, the article also simply introduced this systems system test method, the test procedure as well as the test result.key words:s3c2410, gprs, sms目录1 前言11.1系统开发平台简介11.1.1 embest edukit-iii开发板11.1.2 vision3集成开发环境11.2 系统网络结构与规程简介11.2.1 gprs网络结构21.2.2 gprs协议栈21.3系统数据包编解码技术简单说明21.3.1 ppp数据帧的编码与解码31.3.2 sms数据包编码与解码42 硬件平台简单说明62.1 硬件系统结构图62.2 系统电路原理图63 各模块程序设计73.1异步串口通信控制程序73.2 lcd显示控制程序73.3 键盘控制程序83.4 adc数据采集控制程序94 系统软件设计94.1系统数据流图分析94.1.1 数据采集子系统数据流图分析104.1.2 数据中心子系统数据流图分析114.2系统程序结构设计124.2.1 数据采集子系统程序结构设计124.2.2 数据中心子系统程序结构设计145 系统测试165.1数据采集子系统系统测试165.2 数据中心子系统系统测试176 结论19致谢20参考文献21附录:文中出现的部分英文缩写说明22231 前言随着网络应用的迅速普及,消费电子、计算机、通信一体化趋势日趋明显,嵌入式系统已成为研究与应用的热点。gprs技术基于tdma方式的gsm系统实现,是在gsm网路技术上发展起来的系统,它充分利用了gsm系统的无线结构,通过进一步在gsm网络中增加数据设备提供高速数据应用,从而保证采用gsm系统实现从2g到2.5g的平滑过渡,实现从电路方式业务到话音/分组方式业务的转变。1.1系统开发平台简介1.1.1 embest edukit-iii开发板embest edukit-iii是深圳英蓓特公司开发的一款全功能arm开发板,兼容arm7、arm9、xscale、 和dsp,覆盖了高底端嵌入式教学,在标准配置下提供两套cpu子板:s3c44b0x和s3c2410x。cpu子板都可以自由插拔,使一套实验系统变为多套。s3c2410是一种先进的嵌入式处理器,采用arm920t内核,频率可达200mhz。基于arm9的教学实验系统(采用s3c2410x芯片)可以实现高端arm嵌入式教学,主要包括扩展接口实验、linux操作系统实验和wince操作系统实验。embest edukit-iii采用独特的模块划分,资源丰富,包括lcd及触摸屏、5*4键盘、串口、以太网口、usb口、音频输出、flash和sdram等等,并提供gprs、dsp扩展模块以及数据外部扩展焊接板1。1.1.2 vision3集成开发环境vision3是一个基于窗口的软件开发平台,它集成了功能强大的编辑器、工程管理器以及make工具。vision3集成的工具包括c编译器、宏汇编器、链接/定位器和十六进制文件生成器,有编译和调试两种工作模式,两种模式下设计人员都可以查看并修改原文件。编译模式用于维护工程文件和生成应用程序;调试模式下,则可以用功能强大的cpu和外设仿真器来测试程序,也可以使用调试器经keil ulink usb-jtag适配器(或其他agdi驱动器)来连接目标系统测试应用程序,ulink2仿真器能用于下载应用程序到目标系统的flash rom中。1.2 系统网络结构与规程简介本系统采用gprs网络结构与规程。gprs(general packet radio service,通用分组无线业务)是在现有gsm系统上发展起来的一种新的承载业务,允许用户在端到端分组传输模式下发送和接收数据而不需要利用电路交换的模式,比较适合与突发的、频繁的、数据量小的数据传输。作为承载网络,gprs系统本身采用ip网络结构,并对用户分配独立地址(如ip),并将用户作为独立的数据用户,从而实现了从网络到移动用户的端到端的数据应用。1.2.1 gprs网络结构gprs网络结构基于gsm系统实现,话音部分人采用原先的基本处理单元,而对于数据本分则新增了一些数据处理单元和接口。gprs系统中新增的数据单元包括一下几个部分(参见图1.1)3。图1.1gprs网络单元fig.1.1network unit of gprs(1)pcu(packet control unit):分组处理单元,它是bsc(base station controller,基站控制器)的一部分,可以独立设置或者与bsc合并设置,它与bsc之间的接口不开放。(2)sgsn(service gprs support node):gprs服务支持节点。功能和作用与msc(mobile switching center,移动交换中心)具有相同点,进行分组移动用户的状态管理,计费管理等并负责到hlr(home location register,小区位置存储器)的用户数据信息的传送。(3)ggsn(gateway gprs support node):gprs网管支持节点。负责和外部数据网络的接口,进行数据包的转发,具有路由器的部分功能。1.2.2 gprs协议栈gprs协议规程体现了无线和网络相结合的特征。其中既包含类似局域网技术中的逻辑链路控制llc子层和媒体接入控制mac子层,又包含rlc和bssgp等新引入的特定规程。由gprs系统的端到端之间的应用协议结构可知,gprs网络是存在于应用层之下的承载网络,它用以承载ip或x.25等数据业务,由于gprs本身采用ip数据网络结构,所以基于gprs网络的ip应用规程结构可理解为两层ip结构,即应用级的ip协议以及采用ip协议的gprs本身。gprs传输面协议层如图1.2所示3。1.3系统数据包编解码技术简单说明本系统 gprs模块数据收发方式有两种,一种基于gprs网络以分组交换的方式进行数据传输,其链路协议采用ppp(point to point protocol,点到点)协议,数据包的编解码针对ppp数据帧;一种基于gsm网络的sms(short message service,短消息服务业务)以短消息的方式进行数据传输,数据包的编解码针对串口发送和接收到的sms数据包。图1.2gprs传输面协议层fig1.2transmission layer protocol on gprs1.3.1 ppp数据帧的编码与解码ppp数据帧每一帧都以一字节0x7e标志位开始,紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。接下来是协议字段:当它的值是0x0021时,表示信息字段是一个ip数据包;值是0xc021时,表示信息字段是链路控制数据;值是0x8021时,表示字段是网络控制数据。帧校验序列是一个循环冗余校验码,以检测数据帧中的错误。数据帧以标志位0x7e结束。ppp数据帧的格式如表1.1所示。表1.1ppp数据帧格式table1.1the style of ppp data frame标志地址控制协议域信息域校验标志7eff037e1b1b1b2b缺省1500b2b1b注:第二行中数字全为16进制表示,第三行b表示占的字节数。由于标志字符的值是0x7e,因此当该字符出现在信息字段中时,ppp需要对他进行转义。在异步链路中,特殊字符0x7d用作转义字符,当它出现在ppp数据帧中时,那么紧接着的字符的第六位要取其补码,具体过程如下: (1)当遇到字符0x7d时,需连续传送两个字符0x7d和0x5d,以实现标志字符的转义。(2)当遇到转义字符0x7d时,需连续传送连个字符:0x7d和0x5d,以实现转义字符的转义。(3)默认情况下,如果字符的值小于0x20(比如一个ascii控制字符),一般都要进行转义。例如,遇到字符0x01时需连续传送0x7d和0x21两个字符。下面举一具体实例对上述过程进行说明:send_at_command(at+cipstart=tcp,202.204.112.68,2020);当系统调用上面的函数时,串口给gprs模块发送连接serve的at指令,连接成功将返回connect ok。在给串口发送at指令atd*99*1#进行拨号,连接成功gprs模块将会返回下面的数据包(全为16进制表示):0a 0d 0a 43 4f 4e 4e 45 43 54 0d 0a 7e ff 7d 23 c0 21 7d 21 7d 20 7d 3c 7d 21 7d 24 7d 26 40 7d 23 7d 24 c0 23 7d 25 7d 26 7d 2c 3c 65 c9 7d 22 26 7d 20 7d 20 7d 20 7d 20 7d 27 7d 22 7d 28 7d 22 82 ab 7e其中0d、0a表示at指令的开始和结束,中间43 4f 4e 4e 45 43 54即是connect的ascii码。第13字节7e标志着ppp数据帧开始,接下来ff是地址字节。第十五字节是0x7d,说明接下来的字节(第十六字节,23)第六位要进行取补码,即23实际值是03(03小于0x20,所以要进行转义),表示ppp数据帧的控制字节。接下来以此类推,直到碰到0x7e表示ppp数据帧结束。1.3.2 sms数据包编码与解码目前共有3种方式来发送和接收sms信息:block mode、text mode和pdu mode。block mode目前已经很少用了。text mode 是纯文本方式,可使用不同的字符集。pdu mode被所有手机所支持,可使用任何字符集。(1) 对于数据发送,text mode比较简单,只需几条at指令即可完成,不需要对发送数据进行编码。下面介绍的是在pdu mode的发送短消息的实现方法。pdu串不仅包含可显示的消息本身,还包含很多其他信息,如服务中心号码、目标号码、回复号码、编码方式和服务时间等。现在以一个实例说明发送pdu串的结构和编排方式。smsc(sms服务中心号码):+8613800100500,对方号码:+8613811348352,消息内容:hello!。从手机发出的pdu串可以是:08 91 68 31 08 10 00 05 f0 11 00 0d 91 68 31 18 31 84 53 f2 00 00 00 06 c8 32 9b fd 0e 01其具体分析可参见表1.2。(2) 对于数据接收,处理器判断出有接收未读的短信息时,将会把信息包读取出来,text mode和pdu mode的信息包格式不一样,下面将分别介绍他们对接收到的短消息的解码方式。1). text mode下数据包解码处理器给gprs模块发送at指令 at+cmgl=rec unread,如果sim卡中存有接收到但未读取的短消息,gprs模块将会把该短信内容以及其他信息通过串口传递给处理器,下面是实验过程中接收到的一个数据包:0a 0d 0a 2b 43 4d 47 4c 3a 20 31 30 2c 22 52 45 43 20 55 4e 52 45 41 44 22 2c 22 2b 38 36 31 33 38 31 31 33 34 38 33 35 32 22 2c 2c 22 30 38 2f 30 35 2f 31 39 2c 32 31 3a 30 37 3a 33 32 2b 33 32 22 2c 31 34 35 2c 31 31 0d 0a 48 65 6c 6c 4f 21 21 21 57 58 48 0d 0a 0d 0a 4f 4b 0d 0a数据包中第11、12字节表示短消息在sim卡中的索引号,表示第10条信息;第28字节到第41字节表示发送方手机号码:+8613811348352;第46到第65字节表示短信发送时间:08/05/19,21:07:32+32,最后的32代表时区;第72、73字节表示数据长度为11;接下来两个0d、0a之间既是短信息内容。可以根据以上规则对text数据包进行解码。表1.2 发送的pdu串对照表table.1.2the comparison table of pdu data on sending分 段含 义说 明08smsc地址信息的长度共8个8位字节(包括 91)91smsc地址格式用国际格式号码(在前面加”+”)68 31 08 10 00 05 f0smsc地址8613800100500,补f凑成偶数个11基本参数发送,tp-vp用相对格式00消息基准值00d目标地址数字个数用13个十进制数(不包含91和f)91目标地址格式用国际格式号码68 31 18 31 84 53 f2目标地址8613811348352,补f凑成偶数个00协议标识普通gsm类型,点到点方式00用户信息编码方式7位编码00有效期5min06用户信息长度实际长度6字节c8 32 9b fd 0e 01用户信息hello!注:第一列表中数字全为16进制表示。2).pdu mode下数据包解码下面是pdu模式下串口收到的一个pdu数据包:08 91 68 31 08 10 00 05 f0 84 0d 91 68 31 18 31 84 53 f2 00 00 80 50 02 01 21 34 23 06 c8 32 9b fd 0e 01其组成与pdu模式下发送pdu串不同地方是第22到29字节,其代表的是时间:2008-05-20 10:12:43+32,32代表时区。对于“hello!”的7位编码结果是c8 32 9b fd 0e 01,其编码过程可以参考参考文献2第285到286页,在此不再介绍。2 硬件平台简单说明本系统硬件平台根据英蓓特公司的embest edukit-iii实验教学平台所设计,该教学平台是一款功能强大的32位嵌入式开发板,采用三星公司以arm7为内核的微处理器s3c44b0x和以arm9为内核的微处理器s3c2410x,具有jtag调试等功能。s3c2410内部集成了arm公司arm920t处理器核,资源丰富,带独立的16kb的指令cache和16kb数据cache,lcd控制器、ram控制器、nand闪存控制器、3路uart、4路dma、4路带pwm的timer、并行i/o口、8路10位adc、触摸屏接口、iic接口、iis接口、2个usb接口控制器、2路spl,主频最高可达200mhz。本系统设计主要是对adc、键盘、液晶显示屏、无线通信模块的控制1。2.1 硬件系统结构图硬件系统的结构如图2.1所示。图2.1 硬件系统结构图fig2.1the construction drawing of hardware system2.2 系统电路原理图由于本设计硬件平台根据英蓓特公司的embest edukit-iii实验教学平台所设计,所以其电路原理图可参考参考文献1第二章第3节(p31p66),设计所需要的最小开发板,在此不再介绍。系统gprs模块采用西门子公司生产的mc35i。3 各模块程序设计由于硬件平台采用英蓓特公司的embest edukit-iii实验教学平台,所以该系统的设计主要是软件的设计,下面分别介绍各个主要功能模块的控制程序的设计4。3.1异步串口通信控制程序串口通信程序的主要包括初始化与uart传输相关的 i/o口,设置uart相关控制寄存器,中断入口函数设置,往串口发送数据,从串口读入数据,和从串口读字符串等。处理器与gprs模块间是通过uart通信的,所以异步串口通信控制程序是该系统程序设计最重要的模块程序之一,其流程图如图3.1所示。图3.1 异步串口通信程序流程图fig3.1the program flow picture of uart communication3.2 lcd显示控制程序lcd显示控制程序主要包括lcd应用初始化函数,汉字显示函数,其中前两个参数为显示x,y坐标,第三个参数表示显示颜色,第四个参数是指向要显示的汉字的指针; 字符显示函数,其参数同汉字显示;矩形显示函数,图形显示函数。系统数据处理结果最终要在lcd上显示出来,lcd显示是人机接口设计的重要内容之一。lcd显示控制程序的流程图如图3.2所示。图3.2 lcd显示控制程序流程图fig3.2the program flow picture of lcd display controls3.3 键盘控制程序键盘控制程序主要是iic通信程序的设计,通过控制zlg7290来读取键值。包括初始化函数,读取键值函数,字符显实函数(用于显示按键值);其中初始化函数主要实初始化端口、iic串口通信相关寄存器设置、中断寄存器设置、中断入口函数设置。键盘也是人机接口设计的重要内容之一,其程序流程图如图3.3所示。图3.3 键盘控制程序流程图fig3.3the program flow picture of keyboard controls3.4 adc数据采集控制程序adc控制程序是为了掌握s3c2410 处理器的a/d转换功能,利用s3c2410集成的 a/d转换模块,把分压值转换为数字信号,并送数码管显示。ad转换是数据采集子系统的核心程序之一,整个系统的数据源即来自ad转换,它的程序流程图如图3.4所示。图3.4 adc数据采集程序流程图fig3.4the program flow picture of data acquisition on adc4 系统软件设计系统软件主要包括3部分:程序代码、与软件相关的说明文档以及软件所处理的数据。数据是整个软件处理的对象,所以本系统系统软件的设计是从数据着手5。4.1系统数据流图分析当数据在软件系统中移动时,它将被一系列“变换”所修改。数据流图描绘数据从输入移动到输出的过程中所经过的变化,他没有任何具体物理部件,只描述数据在软件中流动和被处理的逻辑过程。本系统数据源点是数据采集终端ad转换器,经无线网络(gsm/gprs)传给数据控制中心上位机lcd显示,lcd即为系统的数据终点,其基本系统模型如图4.1所示。图4.1基于arm的gprs设计与实现基本系统模型fig4.1total system model on design and implement of gprs communication depend on arm经进一步分解,可把系统划分为数据采集子系统和数据中心子系统两部分。其中数据采集子系统的数据源点是各采集终端的ad转换器,终点是gsm/gprs无线网络,如图4.2所示;数据中心子系统数据源点是gsm/gprs无线网络,终点是数据中心液晶显示器(lcd),如图4.3所示。即数据采集终端的数据终点通过无线网络后变成数据中心的数据源点。图4.2 数据采集子系统系统模型fig4.2the system model of data acquisition subsystem图4.3 数据中心子系统系统模型fig4.3the system model of data central subsystem下面分别介绍各子系统的数据流图。4.1.1 数据采集子系统数据流图分析在数据采集子系统中,环境参数经ad转换后存储。为了采集数据的精确,先采取多次样值,去除坏值后,再对剩下的数据进行数字滤波处理,得出比较精确的环境参数。现在得出的环境参数还是原始的整型二进制代码,首先要根据处理器的adc规律把二进制代码转换为对应的电压值,再根据传感器特性把电压值转换为对应的环境参数,如温度、湿度等。在上面工作都完成之后,由于gprs模块的特性,要把环境参数值转换为对应的ascii码,这样方便传输。根据以上分析,可得出数据采集子系统数据流图如图4.4所示。图4.4 数据采集子系统数据流图fig4.4data flow graph of data acquisition subsystem对图中各数据流说明:环境参数(模拟量):经传感器采集后的环境参数,为模拟量的电压值。环境参数(数字量、电压、整型):模拟量的电压值经ad转换后存储在寄存器中,此时的环境参数为整型的二进制代码,经读取后存储。比较精确的电压值(整型):ad转换有可能出现误差,所以必须进行多次采样,经分析后得出比较接近实际参数的值。环境参数的对应值(浮点型、ascii码):参数经分析后,还是整型的二进制代码,需要根据处理器ad转换器的参考电压及位数转换为浮点型的电压值,再根据传感器的特性转换为对应环境参数的实际值。为了方便传输和数据中心解码,还要将转换后的值再转换成对应的ascii码,方便数据的传输。ascii码、at指令: gprs模块采用at指令控制,在数据传输前,需要先通过at指令进行一系列初始化过程,然后再把数据的ascii码通过串口给gprs模块。短消息/数据包:gprs模块解析at指令、建立连接后就把环境参数值、手机号码、发送时间等以短消息(gsm网络)或数据包(gprs网络)的方式传送到无线网络。对数据流图中各处理说明:ad转换:负责采集、存储环境参数。数据分析:读取ad转换存储的参数,经比较除去与实际情况完全不符或与其他数据相差较大的值,再滤波,得出比较精确的参数,供数据处理用。数据处理:取分析后的数据,根据处理器输入参考电压(3.3v)、adc位数(10位)把二进制整型代码转为电压值。根据传感器的电压环境参数的对应关系,求出环境参数具体值,再转换为ascii码,为传输做准备。串口传输:gprs模块与处理器通过串口连接,所有数据、指令都是通过串口交换,at指令是处理器与gprs模块的软件接口。gprs模块发送:gprs模块解析at指令后,将串口发送过来的数据通过无线网络发送。4.1.2 数据中心子系统数据流图分析gprs模块接收到无线网络传输的数据后,首先分析是短消息还是数据包。如果是短消息,则采用pdu/text解码分离出短消息数据中心号、发送方手机号、发送时间、发送内容等,经处理后提取出有用的信息,存储、送lcd显示,必要时还可发出报警信号;如果是ppp数据包,先提取出数据包的协议域,在取出数据报的信息,采用ppp数据帧解码规则分离出发送方号码、环境参数内容、参数发送的时间(数据包信息域协议自己规定),经处理提取出有用的信息,存储、送lcd显示,必要时还可发出报警信号。根据以上分析,可得出数据中心子系统数据流图如图4.5所示。图4.5 数据中心子系统数据流图fig4.5data flow graph of data central subsystem对图中各数据流说明:短消息/数据包:包含有由数据采集子系统通过无线网络传送给中据中心子系统的环境参数,该环境参数可能采用短信息的形式通过gsm网络传输,也可能以数据包的形式通过gprs网络传输,由gprs模块接收,串口传递,传递数据分析模块处理。短消息:包含有由数据采集子系统通过无线网络传送给中据中心子系统的环境参数,由数据分析模块提取出,传递给pdu/text解码模块解码。发送号码、消息/参数内容、发送时间:由发送号码为发送方的手机号,消息/参数内容包括环境参数内容,发送时间环境参数采集或/和传输的时间。手机卡编号:在数据包方式发送中每一个处理器为其上的手机卡编的号码,与其所处地点唯一对应。地点、参数、时间:地点是数据采集模块所处的位置,由发送号码或手机卡编号唯一确定,参数即数据采集模块采集点的环境参数,时间环境参数采集或/和传输的时间。数据包:包含有由数据采集子系统通过无线网络传送给中据中心子系统的环境参数,由数据分析模块提取出,传递给ppp数据帧解码模块解码。对图中各处理说明:接收数据:接收无线网络传输的短消息或数据报,由gprs模块和串口联合完成。分析数据:分析串口接收的数据是短消息还是数据包,调用相应解码模块。pdu/text解码:解码经过分析的字符串,提取出短信中包含的发送方手机号码、消息内容、发送时间等。ppp数据帧解码:解码经过分析的字符串,提取出数据包中包含的手机卡编号、环境参数内容、发送时间等。处理存储:把手机号或手机卡编号与其所处的位置对应起来并存储(如果不是自己设定的号则丢弃收到的数据),存储收到的环境参数信息以及接收的时间。显示:把刚才处理好的数据送到lcd显示。4.2系统程序结构设计经过数据流图的分析,我们对每个子系统必须做什么已经已经很清楚了,程序结构设计(也称总体设计)将完成“概括来说,系统将如何实现?”这个问题。程序结构设计将确定系统中每个程序是由那些模块组成,以及这些模块相互间的关系。下面分别详细介绍数据采集子系统和数据中心子系统的程序结构设计过程。4.2.1 数据采集子系统程序结构设计分析数据采集子系统的数据流图,可以从系统中分解出下面几个控制功能模块,由主函数协调他们的控制功能:数据采集模块,协调所有传感器输入模拟量的采集,负责所采集数据的接收与存储;数据处理模块,管理数据采集模块存储的数据,负责数据转换;数据输出模块,协调输出信息的产生过程,并负责吧数据传递到无线网络。数据采集子系统第一级分解得出的结构图如图4.6所示,每个控制模块的名字表明了他所控制的那些模块的功能。图4.6 数据采集子系统的第一级分解fig4.6the first lamination of data acquisition subsystem对第一级分解进一步细化,把数据流图中每个处理映射成软件结构中一个适当的模块,即第二级分解,如图4.7所示。图4.7 数据采集子系统第二级分解fig4.7the second lamination of data acquisition subsystem图中每个模块的名字表明了它的基本功能,对各模块作一简要说明如下:ad转换:模块入口参数是模拟信号输入端口、ad转换结果存储首地址,无返回值,由主函数调用;调用模块之前需要进行adc初始化等工作;模块内部要包括ad转换结果的存储、延时等;要有判断采集的数据是否合理,对不合理的进行重新采集;每一路数据都采集完之后需要调用分析数据模块。数据分析:模块入口参数是ad转换采集的数据存储数组,无返回值,由主函数调用;模块先检查每一路端口采集的数据有没有与同端口下其他数据相差很大,如果有就采用滤波等方法剔除坏值,再取平均值,得出比较接近的环境参数值,供数据处理模块取用;模块最后需要调用数据处理模块。数据处理:模块入口参数是数据分析模块计算出的比较精确的每一路环境参数值,无返回值,由数据分析模块调用;模块首先把整形的环境参数装换成与之对应浮点型电压值,然后根据每一路传感器特性计算出环境参数值,再把对应环境参数值转换为ascii码后编码,存储在字符型数组中,供串口传输模块取用;模块最后调用串口传输模块。串口传输:模块入口参数是数据分析模块编码得到的字符串,无返回值,由数据处理模块调用;调用该模块之前需要进行串口初始化、gprs模块初始化等工作(这些初始化工作包括adc初始化等可以在主函中先完成);该模块主要通过at指令控制gprs模块进行数据的传输,在gprs模块测试通过后传输数据处理模块处理好的字符串,数据发送后返回。gprs模块发送:gprs模块负责解析串口传输的at指令,主要是硬件设计问题,在此系统中不必着重研究。经过以上分析可画出数据采集模块子系统的程序结构图如图4.8所示。图4.8 数据采集子系统程序结构图fig4.8program structure graph of data acquisition subsystem4.2.2 数据中心子系统程序结构设计分析数据中心子系统数据流图,从系统中分解出下面几个控制模块,由位于软件结构最顶层的控制模块“gprs测试”协调他们的控制功能:输入信息处理控制模块“接收无线网络数据”,协调对所有输入数据的接收;变换中心控制模块“数据转换控制”,管理内部数据的所有操作;输出信息处理控制面模块“驱动lcd显示”,协调输出信息的产生过程。数据中心子系统第一级分解得出的结构如图4.9所示,每个控制模块的名字表明了为他所控制的那些模块的功能。图4.9 数据中心子系统的第一级分解fig4.9the first lamination of data central subsystem对第一级分解进一步细化,把数据流图中每个处理映射成软件结构中一个适当的模块,即第二级分解,如图4.10所示。图中每个模块的名字表明了它的基本功能,对各模块作一简要说明如下:接收数据:模块包含在上层模块中,由上层gprs测试模块管理;当判断有新短信时用该模块读取新信息,接收的数据供分析模块分析处理;模块接收完数据后需要调用分析数据模块。分析数据:模块入口参数是接收模块接收到的数据,无返回值,由上层gprs测试模块调用;模块主要负责判断接收到的数据是短消息还是数据包,并把判断后的字符串传递给解码模块解码;模块最后需要调用pdu/text解码或ppp数据解码模块。图4.10 数据中心子系统第二级分解fig4.10the second lamination of data central subsystempdu/text解码:模块入口参数是分析数据模块处理后的数据,无返回值,由分析数据模块调用;模块先判断接收到的短信息是pdu模式还是text模式,再根据他们的编码规则分离解码出发送方手机号、短消息内容、发送时间等信息,供处理存储模块分析处理;模块最后需要调用处理存储模块。ppp数据帧解码;模块入口参数是分析数据模块处理后的数据,无返回值,有分析数据模块调用;模块对接收到的数据包解码,分离出信息域,再对信息域进行解码,分离出数据包中包含的手机号编号、环境参数、数据发送时间等信息,并把手机号编号映射成手机号(如果是不合法的数据包,则丢弃该数据包并返回),供处理存储模块分析处理;模块最后需要调用处理存储模块。处理存储:模块入口参数是解码模块解码好的字符串,无返回值,由pdu/text解码模块或ppp数据帧解码模块调用;模块首先把手机号映射成对应数据采集终端所处的位置(如果是不合法的手机号,则丢弃数据并返回),再把对应的时间、参数等组合在一起存储,供显示模块调用;模块最后需要调用显示模块。显示:模块入口参数是处理存储模块处理好的数据,无返回值,由处理存储模块调用;模块负责把数据终端位置、数据采集时间、环境参数值等送lcd显示;显示完后返回。经过以上分析可画出数据采集模块子系统的程序结构图如图4.11所示。图4.11 数据中心子系统程序结构图fig4.11program structure graph of data central subsystem5 系统测试通过系统程序结构设计已经知道每个程序由那些模块组成以及这些模块间的相互关系。根据程序结构图和开发平台的特性,写出程序代码,编译链接通过后,就可以进行系统测试了。测试的根本目的是尽可能多地发现并排除软件中潜在的错误,最终设计出一个高质量的系统 5。5.1数据采集子系统系统测试根据数据采集子系统程序结构图画出其程序框架图(各模块之间调用关系图,并非程序流程图)如图5.1。测试沿着该图从主函数开始,一直到最后字节发送(因为短消息内容发完以后需要发送一个字节的标志位0x1a。图5.1 数据中心子系统程序框架图fig5.1 program framework graph of data acquisition subsystem测试过程如下:系统一开始进行一系列初始化工作,当gprs模块检测通过后,开始进行系统测试。为了观察数据采集模块能否正常工作以及采集的数据是否正确,可以在调用数据分析模块之前插入断点,查看数据采集存储数组里采集的数据。该系统中采集的数据通过一个结构体存储,结构体里是一个指向无符号整形的指针数组,该数组有8个元素分别存储8路数据采集的数据。其采集的数据如下所示,每路采集10个数。第0通道:0x03c6 0x039d 0x0378 0x0370 0x034f 0x034b 0x033c 0x0323 0x0328 0x0301第1通道:0x03ce 0x03ac 0x0397 0x036f 0x0344 0x0343 0x0326 0x0321 0x030d 0x0302第2通道:0x01c8 0x01c8 0x01c7 0x01c4 0x01c8 0x01c8 0x01c8 0x01c6 0x01c4 0x01c7第3通道:0x03b7 0x0395 0x0373 0x035a 0x0348 0x0331 0x0329 0x0318 0x02fe 0x02f2第4通道:0x01ca 0x01c9 0x01cc 0x01cb 0x01ca 0x01ca 0x01cc 0x01c5 0x01ca 0x01cc第5通道:0x03ea 0x03e9 0x03e8 0x03ed 0x03e5 0x03e6 0x03e7 0x03e2 0x03e2 0x03e7第6通道:0x03d0 0x03aa 0x0396 0x036d 0x0363 0x0343 0x0325 0x0321 0x030b 0x02f5第7通道:0x03fd 0x03fd 0x03fe 0x03fa 0x03fc 0x03ff 0x03fe 0x03fe 0x03fa 0x03ff本系统中只采集了第2、4路的数据,其他管脚悬空,所以我们只需关心第2通道和第4通道的值。数据分析模块在本系统中实现比较简单,只对采集的每路数据求平均值,每路的平均值为:0x0356,0x0356,0x01c6,0x0346,0x01ca,0x03e6,0x0357,0x03fd。数据处理模块中,每一路对应的数字量转换为电压值后为:2.754839,2.754839,1.464516,2.703226,1.477419, 3.219355,2.758065,3.293548。把对应电压值转换为ascii码再编码后,存储它的字符数组里的值为:30,3a,32,2e,37,35,34,38,33,3b,31,3a,32,2e,37,35,34,38,33,3b,32,3a,31,2e,34,36,34,35,31, 3b,33,3a,32,2e,37,30,33,32,3b,34,3a,31,2e,34,37,37,34,31,3b,35,3a,33,2e,32,31,39,33,35,3b,36,3a,32,2e,37,35,38,30,36,3b,37,3a,33,2e,32,39,33,35,34,3b。它代表的意思是:“0:2.75483;1:2.75483; 2:1.46451;3:2.70322;4:1.47741;5:3.21935;6:2.75806;7:3.29354;”。数据处理完后发送数据,数据发送完返回后手机会接收到新信息,内容和上面一样。单步测试通过后,全速运行,系统每隔一分钟会自动给手机发送新信息,也就是新采集的数据。当这几部都正常时,说明系统至少在测试时间内没出现问题,数据采集子系统系统测试完毕。5.2 数据中心子系统系统测试数据中心子系统的程序框架图如图5.2所示。图5.2 数据中心子系统程序框架图fig5.1 program framework graph of data central subsystem程序在gprs测试模块里面反复判断有没有未读取的新消息,通过at指令at+cmgl= rec unread判断。如果没有就显示当前时间,如果有就把新消息传递给数据分析模块分析。为了避免收件箱满导致不能接收新消息,程序要随时删除没用或处理过的信息。数据中心子系统的测试过程和采集子系统差不多,都是采用先设断点,再全速运行的方式,具体过程如下:在调用模块数据分析之前设断点,如果没有新消息系统就显示时间并反复判断有没有新消息到来,显示时间的另一个作用是观察系统工作状态(如果不能正常显示就说明系统在某一地方除了问题,我们需要采取相应措施)。当有新信息时(可以通过手机给系统发信息,不过信息的编码方式要与系统数据包的编码一致),系统判断出有新消息的同时就把消息内容读取出来并存储在无符号数组gprs_data中,测试过程中抓的一个数据包如下所示:0a 0d 0a 2b 43 4d 47 4c 3a 20 37 2c 22 52 45 43 20 55 4e 52 45 41 44 22 2c 22 2b 38 36 31 33 38 31 31 33 34 38 33 35 32 22 2c 2c 22 30 38 2f 30 35 33 31 2c 30 39 3a 33 32 3a 31 39 2b 33 32 22 2c 31 34 35 2c 38 32 0d 0a 0d 0a 30 3a 32 2e 37 35 34 38 33 3b 31 3a 32 2e 38 32 39 30 33 3b 32 3a 31 2e 34 36 34 35 31 3b 33 3a 32 2e 37 32 32 35 38 3b 34 3a 31 2e 37 34 31 39 3b 35 3a 33 2e 32 31 39 33 35 3b 36 3a 32 2e 37 34 38 33 38 3b 37 3a 33 2e 32 39 33 35 34 3b 0d 0a 0d 0a 4f 4b 0d 0a.第0到第73个字符的含义1.3.2小节的text mode下数据包解码小节已经介绍过,第74到155个字符(下划线部分)为短信内容,其组成规则与5.1小节的ascii字符数组一样。此系统测试的目的检查系统能否按照预定规律把需要的参数从上面数据包中提取出来。数据分析模块分析出上面的数据报属于pdu/text数据包,就调用pdu/text解码模块对数据包进行解码。经过解码后得到的结果如下:手机索引号sms_index:0x37,说明该短信是sim卡中第7条短信;发送方手机号sms_number:0x2b 0x38 0x36 0x31 0x33 0x38 0x31 0x31 0x33 0x34 0x38 0x33 0x35 0x32,对应“+8613811348352”;发送时间sms_timer:0x30 0x38 0x2f 0x30 0x35 0x2f 0x33 0x31 0x2c 0x30 0x39 0x3a 0x33 0x32 0x3a 0x31 0x39,对应“08/05/31,09:32:19”;信息内容sms_data:30 3a 32 2e 37 35 34 38 33 3b 31 3a 32 2e 38 32 39 30 33 3b 32 3a 31 2e 34 36 34 35 31 3b 33 3a 32 2e 37 32 32 35 38 3b 34 3a 31 2e 37 34 31 39 3b 35 3a 33 2e 32 31 39 33 35 3b 36 3a 32 2e 37 34 38 33 38 3b 37 3a 33 2e 32 39 33 35 34 3b,对应“0:2.75483; 1:2.8290

温馨提示

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

最新文档

评论

0/150

提交评论