1、基于ARM的GPRS通信系统设计与实现30资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。湖南文理学院芙蓉学院课程设计报告课程名称: 嵌入式系统课程设计 专业班级: 自动化1001班 学号: 40学生姓名: 李志航 指导教师: 李建英 完成时间: 7月 1 日 报告成绩: 评阅意见: 评阅教师 日期 .7.5 芙蓉学院教学工作部制摘 要本文介绍了基于S3C2410的GPRS通信系统的设计与实现, 包括硬件模块程序设计以及系统软件设计。硬件模块程序包括ADC、 键盘、 LCD、 UART、 GPRS等各功能模块控制程序的设计; 系统软件包括数据采集子系统、 数据中心子系统软件系统的设
2、计, 其中详细介绍了系统的数据流图分析、 程序结构设计过程。本文还简单介绍了GPRS传输控制协议、 SMS编解码过程。最后还简单介绍了本系统的系统测试方法、 测试过程以及测试结果。关键词: S3C2410, GPRS, SMSAbstractThis 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 des
3、ign. 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
4、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目录一 绪论11.1系统开发平台简介11.1.1 Embest EDUKIT-III开发板11.1.2 Vision3集成开发环境11.2 系统网络结构与规程简介21.2.1 GPRS网络结构21.2.2 GPRS协议栈31.3系统数据包编解码技术简单说明31
5、.3.1 PPP数据帧的编码与解码31.3.2 SMS数据包编码与解码4二 硬件平台简单说明62.1 硬件系统结构图62.2 系统电路原理图6三 各模块程序设计73.1异步串口通信控制程序73.2 LCD显示控制程序73.3 键盘控制程序83.4 ADC数据采集控制程序8四 系统软件设计94.1系统数据流图分析94.1.1 数据采集子系统数据流图分析104.1.2 数据中心子系统数据流图分析114.2系统程序结构设计134.2.1 数据采集子系统程序结构设计134.2.2 数据中心子系统程序结构设计15五 系统测试175.1数据采集子系统系统测试175.2 数据中心子系统系统测试18六 结论2
6、1七 致谢22八 参考文献23九 附录24题目名基于ARM和GPRS的无线数据通信系统设计一 绪论随着网络应用的迅速普及, 消费电子、 计算机、 通信一体化趋势日趋明显, 嵌入式系统已成为研究与应用的热点。GPRS技术基于TDMA方式的GSM系统实现, 是在GSM网路技术上发展起来的系统, 它充分利用了GSM系统的无线结构, 经过进一步在GSM网络中增加数据设备提供高速数据应用, 从而保证采用GSM系统实现从2G到2.5G的平滑过渡, 实现从电路方式业务到话音/分组方式业务的转变。1.1系统开发平台简介1.1.1 Embest EDUKIT-III开发板Embest Edukit-III是深圳
7、英蓓特公司开发的一款全功能ARM开发板, 兼容ARM7、 ARM9、 XScale、 和DSP, 覆盖了高底端嵌入式教学, 在标准配置下提供两套CPU子板: S3C44B0X和S3C2410X。CPU子板都能够自由插拔, 使一套实验系统变为多套。S3C2410是一种先进的嵌入式处理器, 采用ARM920T内核, 频率可达200MHz。基于ARM9的教学实验系统( 采用S3C2410X芯片) 能够实现高端ARM嵌入式教学, 主要包括扩展接口实验、 Linux操作系统实验和WinCE操作系统实验。Embest Edukit-III采用独特的模块划分, 资源丰富, 包括LCD及触摸屏、 5*4键盘、
8、 串口、 以太网口、 USB口、 音频输出、 Flash和SDRAM等等, 并提供GPRS、 DSP扩展模块以及数据外部扩展焊接板1。1.1.2 Vision3集成开发环境Vision3是一个基于窗口的软件开发平台, 它集成了功能强大的编辑器、 工程管理器以及make工具。Vision3集成的工具包括C编译器、 宏汇编器、 链接/定位器和十六进制文件生成器, 有编译和调试两种工作模式, 两种模式下设计人员都能够查看并修改原文件。编译模式用于维护工程文件和生成应用程序; 调试模式下, 则能够用功能强大的CPU和外设仿真器来测试程序, 也能够使用调试器经Keil ULINK USB-JTAG适配器
9、(或其它AGDI驱动器)来连接目标系统测试应用程序, ULINK2仿真器能用于下载应用程序到目标系统的Flash ROM中。1.2 系统网络结构与规程简介本系统采用GPRS网络结构与规程。GPRS(General Packet Radio Service,通用分组无线业务)是在现有GSM系统上发展起来的一种新的承载业务, 允许用户在端到端分组传输模式下发送和接收数据而不需要利用电路交换的模式, 比较适合与突发的、 频繁的、 数据量小的数据传输。作为承载网络, GPRS系统本身采用IP网络结构, 并对用户分配独立地址(如IP), 并将用户作为独立的数据用户, 从而实现了从网络到移动用户的端到端的
10、数据应用。1.2.1 GPRS网络结构GPRS网络结构基于GSM系统实现, 话音部分人采用原先的基本处理单元, 而对于数据本分则新增了一些数据处理单元和接口。GPRS系统中新增的数据单元包括一下几个部分(参见图1.1)3。图1.1GPRS网络单元( 1) PCU(Packet Control Unit): 分组处理单元, 它是BSC(Base Station Controller, 基站控制器)的一部分, 能够独立设置或者与BSC合并设置, 它与BSC之间的接口不开放。( 2) SGSN(Service GPRS Support Node): GPRS服务支持节点。功能和作用与MSC(Mobi
11、le Switching Center, 移动交换中心)具有相同点, 进行分组移动用户的状态管理, 计费管理等并负责到HLR(Home Location Register, 小区位置存储器)的用户数据信息的传送。( 3) GGSN(Gateway GPRS Support Node): GPRS网管支持节点。负责和外部数据网络的接口, 进行数据包的转发, 具有路由器的部分功能。1.2.2 GPRS协议栈GPRS协议规程体现了无线和网络相结合的特征。其中既包含类似局域网技术中的逻辑链路控制LLC子层和媒体接入控制MAC子层, 又包含RLC和BSSGP等新引入的特定规程。由GPRS系统的端到端之间
12、的应用协议结构可知, 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
13、Service, 短消息服务业务)以短消息的方式进行数据传输, 数据包的编解码针对串口发送和接收到的SMS数据包。图1.2GPRS传输面协议层1.3.1 PPP数据帧的编码与解码PPP数据帧每一帧都以一字节0x7E标志位开始, 紧接着是一个地址字节, 值始终是0xFF, 然后是一个值为0x03的控制字节。接下来是协议字段: 当它的值是0x0021时, 表示信息字段是一个IP数据包; 值是0xC021时, 表示信息字段是链路控制数据; 值是0x8021时, 表示字段是网络控制数据。帧校验序列是一个循环冗余校验码, 以检测数据帧中的错误。数据帧以标志位0x7E结束。PPP数据帧的格式如表1.1所示
14、。表1.1PPP数据帧格式标志地址控制协议域信息域校验标志7EFF037E1B1B1B2B缺省1500B2B1B注: 第二行中数字全为16进制表示, 第三行B表示占的字节数。由于标志字符的值是0x7E, 因此当该字符出现在信息字段中时, PPP需要对她进行转义。在异步链路中, 特殊字符0x7D用作转义字符, 当它出现在PPP数据帧中时, 那么紧接着的字符的第六位要取其补码, 具体过程如下: ( 1) 当遇到字符0x7D时, 需连续传送两个字符0x7D和0x5D, 以实现标志字符的转义。( 2) 当遇到转义字符0x7D时, 需连续传送连个字符: 0x7D和0x5D, 以实现转义字符的转义。( 3
15、) 默认情况下, 如果字符的值小于0x20(比如一个ASCII控制字符), 一般都要进行转义。例如, 遇到字符0x01时需连续传送0x7D和0x21两个字符。1.3.2 SMS数据包编码与解码当前共有3种方式来发送和接收SMS信息: Block Mode、 Text Mode和PDU Mode。Block Mode当前已经很少用了。Text Mode 是纯文本方式, 可使用不同的字符集。PDU Mode被所有手机所支持, 可使用任何字符集。(1) 对于数据发送, Text Mode比较简单, 只需几条AT指令即可完成, 不需要对发送数据进行编码。下面介绍的是在PDU Mode的发送短消息的实现
16、方法。PDU串不但包含可显示的消息本身, 还包含很多其它信息, 如服务中心号码、 目标号码、 回复号码、 编码方式和服务时间等。现在以一个实例说明发送PDU串的结构和编排方式。SMSC(SMS服务中心号码): +86, 对方号码: +86, 消息内容: 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 Mo
17、de和PDU Mode的信息包格式不一样, 下面将分别介绍她们对接收到的短消息的解码方式。1) . Text Mode下数据包解码处理器给GPRS模块发送AT指令 AT+CMGL=REC UNREAD, 如果SIM卡中存有接收到但未读取的短消息, GPRS模块将会把该短信内容以及其它信息经过串口传递给处理器, 下面是实验过程中接收到的一个数据包: 分 段含 义说 明08SMSC地址信息的长度共8个8位字节(包括 91)91SMSC地址格式用国际格式号码(在前面加”+”)68 31 08 10 00 05 F0SMSC地址86, 补F凑成偶数个11基本参数发送, TP-VP用相对格式00消息基准
18、值00D目标地址数字个数用13个十进制数(不包含91和F)91目标地址格式用国际格式号码68 31 18 31 84 53 F2目标地址86, 补F凑成偶数个00协议标识普通GSM类型, 点到点方式00用户信息编码方式7位编码00有效期5min06用户信息长度实际长度6字节C8 32 9B FD 0E 01用户信息Hello!表1.2 发送的PDU串对照表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
19、 23 06 C8 32 9B FD 0E 01其组成与PDU模式下发送PDU串不同地方是第22到29字节, 其代表的是时间: -05-20 10:12:43+32, 32代表时区。对于”Hello!”的7位编码结果是C8 32 9B FD 0E 01, 其编码过程能够参考参考文献2第285到286页, 在此不再介绍。二 硬件平台简单说明本系统硬件平台根据英蓓特公司的Embest EDUKIT-III实验教学平台所设计, 该教学平台是一款功能强大的32位嵌入式开发板, 采用三星公司以ARM7为内核的微处理器S3C44B0X和以ARM9为内核的微处理器S3C2410X, 具有JTAG调试等功能。
20、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 硬件系统结构图2.2 系统电路原理图由于本设计硬件平台根据英蓓特公司的Embes
21、t EDUKIT-III实验教学平台所设计, 因此其电路原理图可参考参考文献1第二章第3节(P31P66), 设计所需要的最小开发板, 在此不再介绍。系统GPRS模块采用西门子公司生产的MC35i。三 各模块程序设计由于硬件平台采用英蓓特公司的Embest EDUKIT-III实验教学平台, 因此该系统的设计主要是软件的设计, 下面分别介绍各个主要功能模块的控制程序的设计4。3.1异步串口通信控制程序串口通信程序的主要包括初始化与UART传输相关的 I/O口, 设置UART相关控制寄存器, 中断入口函数设置, 往串口发送数据, 从串口读入数据, 和从串口读字符串等。处理器与GPRS模块间是经过
22、UART通信的, 因此异步串口通信控制程序是该系统程序设计最重要的模块程序之一, 其流程图如图3.1所示。图3.1 异步串口通信程序流程图3.2 LCD显示控制程序LCD显示控制程序主要包括LCD应用初始化函数, 汉字显示函数, 其中前两个参数为显示x, y坐标, 第三个参数表示显示颜色, 第四个参数是指向要显示的汉字的指针; 字符显示函数, 其参数同汉字显示; 矩形显示函数, 图形显示函数。系统数据处理结果最终要在LCD上显示出来, LCD显示是人机接口设计的重要内容之一。LCD显示控制程序的流程图如图3.2所示。图3.2 LCD显示控制程序流程图3.3 键盘控制程序键盘控制程序主要是IIC
23、通信程序的设计, 经过控制ZLG7290来读取键值。包括初始化函数, 读取键值函数, 字符显实函数( 用于显示按键值) ; 其中初始化函数主要实初始化端口、 IIC串口通信相关寄存器设置、 中断寄存器设置、 中断入口函数设置。键盘也是人机接口设计的重要内容之一, 其程序流程图如图3.3所示。图3.3 键盘控制程序流程图3.4 ADC数据采集控制程序ADC控制程序是为了掌握S3C2410 处理器的A/D转换功能, 利用S3C2410集成的 A/D转换模块, 把分压值转换为数字信号, 并送数码管显示。AD转换是数据采集子系统的核心程序之一, 整个系统的数据源即来自AD转换, 它的程序流程图如图3.
24、4所示。图3.4 ADC数据采集程序流程图四 系统软件设计系统软件主要包括3部分: 程序代码、 与软件相关的说明文档以及软件所处理的数据。数据是整个软件处理的对象, 因此本系统系统软件的设计是从数据着手5。4.1系统数据流图分析当数据在软件系统中移动时, 它将被一系列”变换”所修改。数据流图描绘数据从输入移动到输出的过程中所经过的变化, 她没有任何具体物理部件, 只描述数据在软件中流动和被处理的逻辑过程。本系统数据源点是数据采集终端AD转换器, 经无线网络(GSM/GPRS)传给数据控制中心上位机LCD显示, LCD即为系统的数据终点, 其基本系统模型如图4.1所示。图4.1基于ARM的GPR
25、S设计与实现基本系统模型经进一步分解, 可把系统划分为数据采集子系统和数据中心子系统两部分。其中数据采集子系统的数据源点是各采集终端的AD转换器, 终点是GSM/GPRS无线网络, 如图4.2所示; 数据中心子系统数据源点是GSM/GPRS无线网络, 终点是数据中心液晶显示器(LCD), 如图4.3所示。即数据采集终端的数据终点经过无线网络后变成数据中心的数据源点。图4.2 数据采集子系统系统模型图4.3 数据中心子系统系统模型下面分别介绍各子系统的数据流图。4.1.1 数据采集子系统数据流图分析在数据采集子系统中, 环境参数经AD转换后存储。为了采集数据的精确, 先采取多次样值, 去除坏值后
26、, 再对剩下的数据进行数字滤波处理, 得出比较精确的环境参数。现在得出的环境参数还是原始的整型二进制代码, 首先要根据处理器的ADC规律把二进制代码转换为对应的电压值, 再根据传感器特性把电压值转换为对应的环境参数, 如温度、 湿度等。在上面工作都完成之后, 由于GPRS模块的特性, 要把环境参数值转换为对应的ASCII码, 这样方便传输。根据以上分析, 可得出数据采集子系统数据流图如图4.4所示。图4.4 数据采集子系统数据流图对图中各数据流说明: 环境参数(模拟量): 经传感器采集后的环境参数, 为模拟量的电压值。环境参数(数字量、 电压、 整型): 模拟量的电压值经AD转换后存储在寄存器
27、中, 此时的环境参数为整型的二进制代码, 经读取后存储。比较精确的电压值(整型): AD转换有可能出现误差, 因此必须进行多次采样, 经分析后得出比较接近实际参数的值。环境参数的对应值(浮点型、 ASCII码): 参数经分析后, 还是整型的二进制代码, 需要根据处理器AD转换器的参考电压及位数转换为浮点型的电压值, 再根据传感器的特性转换为对应环境参数的实际值。为了方便传输和数据中心解码, 还要将转换后的值再转换成对应的ASCII码, 方便数据的传输。ASCII码、 AT指令: GPRS模块采用AT指令控制, 在数据传输前, 需要先经过AT指令进行一系列初始化过程, 然后再把数据的ASCII码
28、经过串口给GPRS模块。4.1.2 数据中心子系统数据流图分析GPRS模块接收到无线网络传输的数据后, 首先分析是短消息还是数据包。如果是短消息, 则采用PDU/TEXT解码分离出短消息数据中心号、 发送方手机号、 发送时间、 发送内容等, 经处理后提取出有用的信息, 存储、 送LCD显示, 必要时还可发出报警信号; 如果是PPP数据包, 先提取出数据包的协议域, 在取出数据报的信息, 采用PPP数据帧解码规则分离出发送方号码、 环境参数内容、 参数发送的时间(数据包信息域协议自己规定), 经处理提取出有用的信息, 存储、 送LCD显示, 必要时还可发出报警信号。根据以上分析, 可得出数据中心
29、子系统数据流图如图4.5所示。图4.5 数据中心子系统数据流图对图中各数据流说明: 短消息/数据包: 包含有由数据采集子系统经过无线网络传送给中据中心子系统的环境参数, 该环境参数可能采用短信息的形式经过GSM网络传输, 也可能以数据包的形式经过GPRS网络传输, 由GPRS模块接收, 串口传递, 传递数据分析模块处理。短消息: 包含有由数据采集子系统经过无线网络传送给中据中心子系统的环境参数, 由数据分析模块提取出, 传递给PDU/TEXT解码模块解码。发送号码、 消息/参数内容、 发送时间: 由发送号码为发送方的手机号, 消息/参数内容包括环境参数内容, 发送时间环境参数采集或/和传输的时
30、间。手机卡编号: 在数据包方式发送中每一个处理器为其上的手机卡编的号码, 与其所处地点唯一对应。地点、 参数、 时间: 地点是数据采集模块所处的位置, 由发送号码或手机卡编号唯一确定, 参数即数据采集模块采集点的环境参数, 时间环境参数采集或/和传输的时间。数据包: 包含有由数据采集子系统经过无线网络传送给中据中心子系统的环境参数, 由数据分析模块提取出, 传递给PPP数据帧解码模块解码。对图中各处理说明: 接收数据: 接收无线网络传输的短消息或数据报, 由GPRS模块和串口联合完成。分析数据: 分析串口接收的数据是短消息还是数据包, 调用相应解码模块。PDU/TEXT解码: 解码经过分析的字
31、符串, 提取出短信中包含的发送方手机号码、 消息内容、 发送时间等。PPP数据帧解码: 解码经过分析的字符串, 提取出数据包中包含的手机卡编号、 环境参数内容、 发送时间等。处理存储: 把手机号或手机卡编号与其所处的位置对应起来并存储(如果不是自己设定的号则丢弃收到的数据), 存储收到的环境参数信息以及接收的时间。显示: 把刚才处理好的数据送到LCD显示。4.2系统程序结构设计经过数据流图的分析, 我们对每个子系统必须做什么已经已经很清楚了, 程序结构设计(也称总体设计)将完成”概括来说, 系统将如何实现? ”这个问题。程序结构设计将确定系统中每个程序是由那些模块组成, 以及这些模块相互间的关
32、系。下面分别详细介绍数据采集子系统和数据中心子系统的程序结构设计过程。4.2.1 数据采集子系统程序结构设计分析数据采集子系统的数据流图, 能够从系统中分解出下面几个控制功能模块, 由主函数协调她们的控制功能: 数据采集模块, 协调所有传感器输入模拟量的采集, 负责所采集数据的接收与存储; 数据处理模块, 管理数据采集模块存储的数据, 负责数据转换; 数据输出模块, 协调输出信息的产生过程, 并负责吧数据传递到无线网络。数据采集子系统第一级分解得出的结构图如图4.6所示, 每个控制模块的名字表明了她所控制的那些模块的功能。图4.6 数据采集子系统的第一级分解对第一级分解进一步细化, 把数据流图
33、中每个处理映射成软件结构中一个适当的模块, 即第二级分解, 如图4.7所示。图4.7 数据采集子系统第二级分解图中每个模块的名字表明了它的基本功能, 对各模块作一简要说明如下: AD转换: 模块入口参数是模拟信号输入端口、 AD转换结果存储首地址, 无返回值, 由主函数调用; 调用模块之前需要进行ADC初始化等工作; 模块内部要包括AD转换结果的存储、 延时等; 要有判断采集的数据是否合理, 对不合理的进行重新采集; 每一路数据都采集完之后需要调用分析数据模块。数据分析: 模块入口参数是AD转换采集的数据存储数组, 无返回值, 由主函数调用; 模块先检查每一路端口采集的数据有没有与同端口下其它
34、数据相差很大, 如果有就采用滤波等方法剔除坏值, 再取平均值, 得出比较接近的环境参数值, 供数据处理模块取用; 模块最后需要调用数据处理模块。数据处理: 模块入口参数是数据分析模块计算出的比较精确的每一路环境参数值, 无返回值, 由数据分析模块调用; 模块首先把整形的环境参数装换成与之对应浮点型电压值, 然后根据每一路传感器特性计算出环境参数值, 再把对应环境参数值转换为ASCII码后编码, 存储在字符型数组中, 供串口传输模块取用; 模块最后调用串口传输模块。串口传输: 模块入口参数是数据分析模块编码得到的字符串, 无返回值, 由数据处理模块调用; 调用该模块之前需要进行串口初始化、 GP
35、RS模块初始化等工作( 这些初始化工作包括ADC初始化等能够在主函中先完成) ; 该模块主要经过AT指令控制GPRS模块进行数据的传输, 在GPRS模块测试经过后传输数据处理模块处理好的字符串, 数据发送后返回。GPRS模块发送: GPRS模块负责解析串口传输的AT指令, 主要是硬件设计问题, 在此系统中不必着重研究。经过以上分析可画出数据采集模块子系统的程序结构图如图4.8所示。图4.8 数据采集子系统程序结构图4.2.2 数据中心子系统程序结构设计分析数据中心子系统数据流图, 从系统中分解出下面几个控制模块, 由位于软件结构最顶层的控制模块”GPRS测试”协调她们的控制功能: 输入信息处理
36、控制模块”接收无线网络数据”, 协调对所有输入数据的接收; 变换中心控制模块”数据转换控制”, 管理内部数据的所有操作; 输出信息处理控制面模块”驱动LCD显示”, 协调输出信息的产生过程。数据中心子系统第一级分解得出的结构如图4.9所示, 每个控制模块的名字表明了为她所控制的那些模块的功能。图4.9 数据中心子系统的第一级分解对第一级分解进一步细化, 把数据流图中每个处理映射成软件结构中一个适当的模块, 即第二级分解, 如图4.10所示。图中每个模块的名字表明了它的基本功能, 对各模块作一简要说明如下: 接收数据: 模块包含在上层模块中, 由上层GPRS测试模块管理; 当判断有新短信时用该模
37、块读取新信息, 接收的数据供分析模块分析处理; 模块接收完数据后需要调用分析数据模块。分析数据: 模块入口参数是接收模块接收到的数据, 无返回值, 由上层GPRS测试模块调用; 模块主要负责判断接收到的数据是短消息还是数据包, 并把判断后的字符串传递给解码模块解码; 模块最后需要调用PDU/TEXT解码或PPP数据解码模块。图4.10 数据中心子系统第二级分解PDU/TEXT解码: 模块入口参数是分析数据模块处理后的数据, 无返回值, 由分析数据模块调用; 模块先判断接收到的短信息是PDU模式还是TEXT模式, 再根据她们的编码规则分离解码出发送方手机号、 短消息内容、 发送时间等信息, 供处
38、理存储模块分析处理; 模块最后需要调用处理存储模块。经过以上分析可画出数据采集模块子系统的程序结构图如图4.11所示。图4.11 数据中心子系统程序结构图五 系统测试经过系统程序结构设计已经知道每个程序由那些模块组成以及这些模块间的相互关系。根据程序结构图和开发平台的特性, 写出程序代码, 编译链接经过后, 就能够进行系统测试了。测试的根本目的是尽可能多地发现并排除软件中潜在的错误, 最终设计出一个高质量的系统 5。5.1数据采集子系统系统测试根据数据采集子系统程序结构图画出其程序框架图(各模块之间调用关系图, 并非程序流程图)如图5.1。测试沿着该图从主函数开始, 一直到最后字节发送(因为短
39、消息内容发完以后需要发送一个字节的标志位0x1a。图5.1 数据中心子系统程序框架图测试过程如下: 系统一开始进行一系列初始化工作, 当GPRS模块检测经过后, 开始进行系统测试。为了观察数据采集模块能否正常工作以及采集的数据是否正确, 能够在调用数据分析模块之前插入断点, 查看数据采集存储数组里采集的数据。该系统中采集的数据经过一个结构体存储, 结构体里是一个指向无符号整形的指针数组, 该数组有8个元素分别存储8路数据采集的数据。其采集的数据如下所示, 每路采集10个数。第0通道: 0x03c6 0x039d 0x0378 0x0370 0x034f 0x034b 0x033c 0x0323
40、 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
41、 0x01ca 0x01cc本系统中只采集了第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,3
42、a,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.2
43、1935;6:2.75806;7:3.29354;”。数据处理完后发送数据, 数据发送完返回后手机会接收到新信息, 内容和上面一样。5.2 数据中心子系统系统测试数据中心子系统的程序框架图如图5.2所示。图5.2 数据中心子系统程序框架图程序在GPRS测试模块里面重复判断有没有未读取的新消息, 经过AT指令AT+CMGL= REC UNREAD判断。如果没有就显示当前时间, 如果有就把新消息传递给数据分析模块分析。为了避免收件箱满导致不能接收新消息, 程序要随时删除没用或处理过的信息。数据中心子系统的测试过程和采集子系统差不多, 都是采用先设断点, 再全速运行的方式, 具体过程如下: 在调用模
44、块数据分析之前设断点, 如果没有新消息系统就显示时间并重复判断有没有新消息到来, 显示时间的另一个作用是观察系统工作状态(如果不能正常显示就说明系统在某一地方除了问题, 我们需要采取相应措施)。当有新信息时(能够经过手机给系统发信息, 不过信息的编码方式要与系统数据包的编码一致), 系统判断出有新消息的同时就把消息内容读取出来并存储在无符号数组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 3
45、1 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 3
46、5 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_Inde
47、x: 0x37,说明该短信是SIM卡中第7条短信; 发送方手机号SMS_Number: 0x2b 0x38 0x36 0x31 0x33 0x38 0x31 0x31 0x33 0x34 0x38 0x33 0x35 0x32, 对应”+86”; 发送时间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 3