GPRS发送与接收
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章GPRS无线收发模块的工作原理
在无线通讯监控领域,对其他无线通讯方式而言,GPRS有着不可比拟的优势,基于GPRS 的无线数据采集监控系统是目前来说比较稳定、先进的无线监控系统,它具有周期短、数据传输速率快、监控覆盖范围广、通信费用低、通信服务质量安全可靠等特点。
本文研究的系统中,GPRS模块选用SIMCOM公司的SIM300,该模块内备TCP/IP协议栈,使用方便,而且集成了完整的射频电路和GSM的基带处理器,非常适合开发GSM/GPRS 的无线应用产品,如移动电话、无线数据传输业务、远程测量等,应用范围十分广泛。
2.1SIM300模块简介
该设计中的GPRS采用SIM300通讯模块,此模块是一款体积小巧、即插即用、可工作于三个频段的GSM模块,它集成了电源电路、SIM卡电路、串口TTL/RS232电平转换电路;而且可以小尺寸和低功耗实现语音、SMS、数据和传真信息的高速传输;集成了PAP协议,可供PPP连接使用;内备强大的TCP/IP协议栈,可以直接利用它实现无线上网;支持包交换广播控制信道,无限制的辅助服务数据支持,使用起来方便,且可以大大缩短开发周期[11]。
此外,SIM300模块可与任何带有UART串行通信接口的控制器进行通信。
GPRS鉴于其优良性能,已成为多种无线应用的理想之选,可被应用到无线公话等WLL应用,车载应用、远程抄表、安全监测、遥控遥测等M2M 应用,以及手持通讯设备,无线网络终端等应用领域。
还可以通过HyperTerminal(超级终端)对其提供的AT指令进行交互操作。
SIM300模块的主要参数如下:使用9V单电源供电,可工作于EGSM900M, DCS1800M, PCS1900M三个频段,上行速率为85.6kbps,下行速率为42.8kbps,通过标准的UART接口进行通信,通信速率可设置为2.4kbps,4.8kbps,9.6kbps,14.4kbps等。
2.2SIM300模块的接口及功能
SIM300模块既可与单片机通过UART串行接口进行通讯,也可与PC 机通过RS232相连进行通讯,但在选择与单片机还是PC机进行通讯前,需提前配置好SIM卡座旁的配置跳线。
其主要接口如下:
(1)IM300模块和单片机的连接
SIM300模块左侧的J4是其和单片机的接口,接口定义如表2-1所示。
表2-1 SIM300的接口定义
其中Pin2~Pin5均可以作为SIM300模块的复位信号输入,且可以通过在背面焊接选择电阻来选择一脚作为SIM300的复位信号输入口,此处选择的是Pin5引脚。
Pin8和Pin9可以直接和单片机UART接口的Rx和Tx相连,系统中采用的是凌阳SPCE061A单片机,其Rx和Tx引脚分别和IOB7和IOB10共用。
Pin6和Pin7引脚分别为语音输入和输出引脚。
在使用单片机控制SIM300模块时,需配置好相应的跳线,且使单片机的UART接口的TXD(IOB10)和RXD (IOB7)分别与SIM300的RXD和TXD 短接,以便使单片机和SIM300 通信。
(2)SIM300 模块和PC机的连接
SIM300模块提供了一个九针的标准RS232接口用以和PC机直接通信,在配置好跳线后,使PC机的TXD和RXD分别与SIM300的RXD和TXD 短接,以便使PC机和SIM300通信。
此外,在模块的左下角有一个天线接口,将SIM300模块与单片机或PC 机连接完毕后,还需将天线接至接口上,并且将SIM卡安装至SIM卡座内。
在通信前,SIM300模块需要先启动才可以通过串口发送AT指令来控制数据收发,启动可以分为软件启动和手动启动两种方式。
本设计中采用手动方式启动,按下ON/OFF按键大约两秒钟之后松开,可看到显示灯闪烁,模块即被启动。
单片机与GPRS模块的通讯原理
本文研究的核心内容是单片机与GPRS模块的通信问题,解决此问题的主要途径是,单片机通过UART串口向GPRS模块发送AT指令以控制通讯模块的数据收发。
AT指令是设置GPRS模块参数,并对其进行操作的指令集,每条AT指令执行完毕后,GPRS模块都会返回应答信号以示命令发送成功或失败。
单片机UART串行接口的控制及原理
在SPCE061A单片机中,异步传送是通过一个通用异步收发器UART 实现的,UART提供了一个全双工标准接口,用于完成单片机与外设之间的串行通信。
借助于IOB口的特殊功能和UART IRQ7中断,可以同时完成UART接口接收和发送数据的过程。
此外,UART还可以缓冲地接收数据,即可以在读取缓存器内的数据之前接收新的数据。
P_UART_Data(7023H) 单元用做接收和发送数据的缓存,向该单元写入数据,可以将要发送的数据送入缓存器;从该单元读取数据可以将接收到的数据从缓存器读出。
使用UART模块进行通信时,须事先将引脚IOB7和IOB10分别设置为输入和输出状态。
然后通过设置P_UART_BaudScalarLow (7024H)和P_UART_BaudScalarHigh (7025H)单元来指定所需波特率。
同时,再设置P_UART_Command1 (7021H)单元的第6、7位以激活UART IRQ7中断,并
决定中断是由TxRDY还是RxRDY信号触发,或者由二者共同触发。
而设置P_UART_Command2 (7022H) 单元的第6、7位可以激活UART的Tx、Rx引脚功能。
当单片机通过串口接收或发送一个字节数据时,P_UART_Command2 (7022H) 单元的第6、7位被置“1”,且同时触发UART IRQ7中断。
无论UART IRQ7中断是否被激活,UART的接收/发送功能都可以由P_UART_Command2 (7022H) 单元的第6、7位控制。
在任意时刻读取P_UART_Command2 (7022H) 单元的内容都将自动清除UART IRQ7中断标志。
以下将分别介绍各控制单元的意义及功能。
(1)P_UART_Command1 (写) (7021H)
P_UART_Command1单元为UART控制端口,如表2-2所示。
该单元的第2、3位控制数据的奇偶校验功能;第6、7位控制UART IRQ7中断,若第6位为“1”,则中断由TxRDY信号触发,即数据发送完毕将产生UART IRQ7中断,若第7位为“1”,则中断由RxRDY信号触发,即数据接收完毕将产生UART IRQ7中断。
如果该单元的第5位为“1”,则所有UART控制寄存器、状态寄存器将恢复为系统默认值00H。
(2)P_UART_Command2 (写) (7022H)
该单元写入时可以控制UART数据的发送/接收端口,第6、7位分别控制着数据发送和接收引脚的允通/禁止,如表2-3所示。
此时IOB7和IOB10必须分别被设置为输入和输出引脚,分别作为Rx 和Tx。
当发送引脚被允通时,IOB10输出引脚将自动被置为高电平。
(3)P_UART_Command2 (读) (7022H)
P_UART_Command2单元为UART状态信息,如表2-4所示。
第7位是RxRDY标志位,当接收到数据时,该标志位被置“1”,读P_UART_Data 单元将清除该标志位;第6位是TxRDY标志位,当通过写入本单元第6位为“1”来允通发送引脚后,该标志位被置为“1”,表示发送器的数据缓存器为空,已准备好可以发送写入P_UART_Data单元的数据。
向P_UART_Data单元写入数据可以清除TxRDY标志位。
P_UART_Command2单元的第3~5位是传输错误标志位,如果在传输过程中发生错误,相应位将被置成“1”,读P_UART_Data单元的数据将清除错误标志位。
(4)P_UART_Data (读/写) (7023H) 见表2-5。
数据
(5)P_UART_BaudScalarLow(读/写)(7024H)和P_UART_BaudScalarHigh (读/写) (7025H)
此两单元组合控制数据的传输速率(波特率),如表2-6所示。
(6)异步通信的字符格式
在异步传送方式中,字符的发送是随机进行的,所以,对接收方来讲,就要判断是否有字符发送过来,何时是一个新字符的开始。
因此,进行异步通信时必须对传送的字符规定一定的格式,1个字符的传送占用1帧数据,1帧数据一般由4部分组成:起始位、数据位、奇偶校验位和停止位,如表2-7所示。
起始位:为逻辑“0”信号,占1位,用来通知数据设备1个新字符的开始。
数据位:紧跟在起始位后的是5~8位数据,异步传送通常规定低位在前,高位在后。
奇偶校验位:紧跟在数据最后一位之后,占1位,奇偶校验时根据协议置“1”或置“0”。
停止位:为逻辑“1”信号,可占用1或2位,接收到停止位时,表示1帧数据结束,同时为接收下一帧数据做好准备。
异步通信时,收发双方需达成协议:一是规定字符格式,即采用几位数据,是否用奇偶校验位,有几位是停止位;二是规定波特率。
异步通信按字节格式和波特率传送数据,硬件只有两条线:即发送线和接收线,因而电路简单、实现方便。
但由于数据帧中插入了起始位,校验位和停止位等附加位以实现同步,从而降低了有效数据的传送效率。
AT指令集简介
GPRS模块与单片机的通信主要是通过UART串口发送AT指令来实现。
AT指令是专门用来控制GPRS模块的指令集,SIM300模块支持标准的AT 指令集。
GPRS的数据传输有短信模式和数据模式,本文设计的系统主要以数据模式为主,短信模式为辅,采用不同的模式将用到不同的AT指令,常用的AT指令如表2-8所示。
以上指令在发送成功后将返回OK,若发送不成功则返回ERROR。
GPRS以短信模式传输数据的原理
采用短信模式传输数据的无线数据传输系统,就是将监控终端采集到的信息,经前端放大滤波电路及单片机处理后,形成实时数据帧,由内置手机SIM卡的通信模块通过短信网或GPRS无线数据通道,以无线方式发送至监控中心的短信网关或数据服务器,并下载到控制电脑的显示平台,实现数据统计、操作控制等远端遥调、遥测、遥控功能[12]。
短信模式的传输机制如图2-1所示。
图2-1 短信组网结构图
监控终端将采集到的信息经过短信协议封装,与SIM卡号、监控中心号、短信服务中心(SMSC)号一起通过GSM/CDMA模块发给SMSC,SMSC 根据监控中心号码通过短信点对点协议(SMPP)发给相应的短信网关(SMG),SMG在通过SGIP1.2/CMPP3.0协议把信息发送到通信服务器,最后下载到监控中心的显示平台,实现数据监测。
而当监控中心发送命令帧到监控终端时,通信服务器发送短信至SMG,SMG根据接收到的监控终端SIM卡号码将短信发给SMSC,SMSC再发给监控终端,继而实现远程监控。
GPRS以数据模式传输数据的原理
所谓数据模式即采用TCP/IP协议的方式进行监控终端与监控中心的通信,具体通讯过程如下:监控终端将采集到的信息通过RS232接口与GPRS 数据传输单元(GPRS DTU)相连,GPRS DTU的内置嵌入式处理器对数据进行集中处理、协议封装后转换为GPRS分组,通过BTS发送到GPRS服务支持节点(SGSN),SGSN根据监控中心IP地址,通过GPRS隧道协议(GTP)发送分组到相应的GPRS网关支持节点(CGSN),CGSN对分组数据进行处理后发送到Internet上的通信服务器并下载到监控中心的显示控制平台[12]。
来自监控中心的命令帧,首先被分装成IP包,由GGSN接收,再通过GTP 转发到SGSN,最后由BTS传送到监控终端。
数据模式的传输机制如图2-2所示
图2-2 GPRS组网结构图
本章小结
本章主要研究了GPRS(SIM300)模块的接口功能,与单片机通信的基本原理,UART串口各控制单元的意义,以及通信中常用的AT指令及其功能,以短信模式和数据模式传输数据的原理,为后续的软硬件设计打好理论基础。
第3章数据采集传输系统的硬件电路设计
本文的主要任务分为硬件和软件两部分,本章主要研究硬件电路的设计,包括监控终端的放大滤波电路,单片机与GPRS模块以及LCD液晶显示模块的连接等。
系统的总体框图及其工作原理
基于GPRS的无线数据采集与传输系统由监控终端和监控中心两部分组成。
系统的总体框图如图3-1所示。
图3-1 系统基本框图
监控终端由数据采集设备、LCD液晶显示和GPRS数据传输单元三部分组成,数据采集设备负责现场数据的采集,然后由LCD液晶显示并由GPRS数据传输单元通过GPRS网络传输到监控中心。
系统前端的多路传感器可以是温度传感器或湿度传感器等,在系统的实现过程中,由于条件所限,通过传感器采集的信号由信号源代替。
系统的工作过程为,数据采集端接收来自监控中心的命令帧,根据命令帧中的地址来选通相应的信号输入,随后将信号进行放大、滤波,以使其质量得到改善。
经放大、滤波的信号再输入到单片机中进行A/D转换后,一方面单片机控制LCD液晶显示器,将采集到的信号波形显示出来,另一方面,单片机通过UART串口向GPRS无线收发模块发送AT指令控制其将数据发送到监控中心,监控中心将接收到的
数据显示并加以分析,以便及时了解远程监测点的现场状况,做出相应调整。
以上即为系统的整体工作流程。
3.2系统前端放大滤波电路的设计
本系统所要监测的数据主要通过各类传感器(如温度传感器、湿度传感器等)来采集,采集到的信号由于带有干扰噪声,传输到监控中心后将与实际相差很大,另外信号的强度过小也会产生误差,因此信号采集后需要通过一定的放大滤波电路加以调整,以使监控中心接收到比较准确的数据。
本文主要采用双运放双电源的低通滤波电路来实现信号的调理,如图3-2所示。
图3-2 双运放双电源的低通滤波电路
本电路采用的是MC 4558运算放大器,该放大器适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式。
它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合[13]。
该电路可分为两部分,其中前一部分为反相比例运算放大电路,放大倍数可用R1/R2来计算,而且可以通过改变R1和R2的阻值来适当调整放大倍数,以使信号的幅值适合A/D转换的范围;后一部分为一阶有源低通滤波电路,其功能是滤除信号中的噪声。
截止频率可通过C
.3
2
1)来计
/(
=14
⨯
f⨯
R
⨯
算,同样,调整R、C的值可以改变截止频率。
采集的信号通过此电路后送入A/D转换电路进行模数转换,该电路与A/D转换电路的连接部分可通过电解电容耦合,前一端接正极,一般为1~10uf。
3.3SPCE061A单片机的接口说明
本设计中采用的是凌阳SPCE061A单片机,它具备了现代单片机的大部分优点。
SPCE061A主要包括输入/输出端口、定时器/计数器、数模和模数转换、串行设备输入输出、通用异步串行接口和复位等部分。
其主要接口的定义如表3-1所示。
表3-1 SPCE061A的主要引脚描述表
IOA[15:0 双向I/O口,可设置为输入或输出
IOA[6:] 可与ADC Line_In 输入共享
IOB[15:0] 双向I/O口,可设置为输入或输出
IOB7 可用作通用异步串行数据接收引脚Rx
IOB10 可用作通用异步串行数据发送引脚Tx
3.4GPRS模块与单片机的连接说明
本文研究的核心部分是单片机与GPRS模块的串口通讯,模块的硬件连接框图如图3-3所示。
由图可以看出,单片机与GPRS的接口非常简单,几乎不需要任何附加硬件逻辑电路,二者的主要连线为将单片机的IOB7和IOB10分别于与GPRS模块的Tx和Rx相连,此外注意将两模块的地线短接,两模块的供电电源分别为4.5V和9V。
图3-3 SPCE061A单片机与GPRS模块的连接框图
3.5LCD液晶显示模块的接口电路及参数
本设计中的液晶显示器选用凌阳科技的SPLC501芯片作为LCD驱动和控制器,为128 64点阵图形液晶显示器。
基本参数有显示模式、显示格式、输入数据等。
此模块可以方便的和SPCE061A单片机连接,可进行字符显示,汉字显示及图形显示,因此可应用于需要图形、文本显示的系统中。
本设计中,液晶显示器主要用于显示采集到的信号波形,所以SPLC501液晶模组是非常合适的选择。
SPLC501液晶模块提供了液晶显示器的接口,及其所需的复位电路等,并把对液晶模块的接口引出,方便使用,此外还提供有背光、电源指示灯。
下面将详细介绍SPLC501液晶模块接口电路及参数,其中接口电路原理图如图3-4所示,各个引脚的定义如表3-2所示。
图3-4 SPLC501液晶模块接口电路原理图
表3-2 SPLC501液晶模块接口引脚定义表
接口引脚名说明
CS1 片选端,低电平有效
RES 复位引脚
A0 数据命令选择引脚
R/W 6800系列MPU的读/写信号
EP 6800系列MPU的时钟信号使能引脚
DB0~DB7 8位数据总线
VR 端口输出电压
C86 C86=’H’则选择6800MPU系列
PS 串、并行时序选择
本文中SPLC501液晶显示模块与61板的连接如图3-5 所示。
液晶模块的电源由61板提供,模块上的VR、C86、PS跳线短接到V3端以选择6800的时序;61板I/O端口电平选择3.3V输出(即J5跳线把Vio和3V短接起来);DB0~DB7对应的与IOA8~IOA15连接,控制线CS1、AO、R/W和EP分别与61板的IOB9、IOB4、IOB5、IOB6相连。
图3-5 SPLC501液晶显示模块与61板的连接
数据采集与传输系统的实物图如图3-6所示,总电路图如附录5所示。
图3-6 数据采集传输系统实物图
3.6本章小结
本章主要研究了无线数据采集与传输系统中的SPCE061A单片机控制模块、SPLC501液晶显示模块和GPRS无线收发模块三个主要模块的接口原理及连接方式。
第4章数据采集传输系统的软件设计
对于一个完整的应用系统,系统的程序设计也是一个非常重要的方面,本文在硬件连接完成的基础上将进行软件的设计。
软件设计包括驱动程序设计和应用程序设计两部分,由于凌阳单片机以及LCD液晶显示器中已给出基本驱动程序,所以主要任务是编写应用程序。
系统应用程序的主要功能是完成远程数据的采集与传输,采用模块化编程,各功能模块以子函数的形式编写,在主函数中直接调用各子函数,此方法的好处是缩短了软件开发周期,易于程序的修改和移植。
此外,监控终端的所有程序代码都由C语言编写,软件开发平台是unSP IDE 2.0.0,监控中心的程序编写语言使用C++,软件开发平台是Visual C++6.0。
软件开发总体流程图
系统软件的设计主要分为三部分:单片机与GPRS模块的串行通信、LCD液晶显示和GPRS模块通过GPRS网络与监控中心通信。
软件主要实现的功能包括系统的初始化(微处理器的初始化、A/D转换的初始化、LCD 液晶显示器的初始化以及CPRS无线收发模块的初始化)和系统的应用程序等。
无线数据采集传输系统的数据传输方式有短信模式和数据模式两种,而前者又包含三种模式:Block模式、Text模式和PDU(Protocol Data Unit 协议数据单元)模式,其中Block 模式已逐渐被PDU模式所取代[14]。
虽然基于短信模式和数据模式的数据传输方式和过程不同,但软件设计中,只是使用的AT指令有所区别,主函数总体流程仍然相同,系统监控终端的主函数流程如图4-1所示。
系统各单元的详细流程
由系统的总体流程可知,监控终端的软件程序主要包括四个子函数:接收命令帧子函数Rec_commd( ), A/D转换子函数AD_Ctrl( ), LCD液晶显示子函数LCD_Ctrl( ) 以及发送数据帧子函数Data_Send( )。
本小节将分别详细介绍各函数的流程。
图4-1 系统软件流程图 4. A/D 转换的流程图及说明
系统中,A/D 模数转换功能采用中断函数的方式实现,输入的测试信号频率为0.5Khz ,由采样定理s f =2 h f 可知当采样频率为1Khz ,即可还原出原信号波形。
本文采样频率选为32Khz ,液晶显示器显示出与实际波形误差较小的信号波形。
A/D 转换采用的是IRQ1_TM 中断,软件流程图如图4-2
所示。
图4-2 A/D转换流程图
在A/D初始化中,主要包括输入引脚的设置和通道的选择。
SPCE061A 单片机提供7个Line_In通道,它们与IOA[6:0]共用7个引脚,如果把这7个引脚当作Line_In通道,用户必须首先把相应的IOA引脚设置为“输入”。
注意,由于I/O口带有内部上拉和下拉输入电阻,这会影响外部Line_In信号的电平,因此,IOA[6:0]最好被设置成悬浮式输入口,用于Line_In通道输入。
由以上可知,模拟信号的输入通道共有7个,具体通过哪一通道输入需要根据接收到的命令帧进行选择,软件进行通道的切换不仅不必再安装多路转换开关,节省了硬件资源,而且快捷准确。
此外,在进行A/D转换时须注意输入信号范围的选取和设定。
这可以通过设置P_ADC_Ctrl单元的第7位VEXTREF来设置Line_In通道输入最大电压值。
当VEXTREF=0时,最大电压可达A Vdd,即来自Line_In通道的模拟信号的电压范围从0V到A Vdd。
当VEXTREF=1时,VEXTREF引脚被激活,这时必须输入外部信号到该引脚作为Line_In通道的最大电压值。
VEXTREF可取的值的范围是从0V到A Vdd。
所以Line_In通道的输入电压
范围从0V到VEXTREF,VEXTREF值越低,Line_In通道的电压范围越小。
也就是说输入信号的信噪比SNR越低,SPCE061A单片机提供了一个内置的2V电压源,它可以被连接到VEXTREF引脚,作为Line_In通道的最大参考电压。
UART串口通讯的流程图及说明
软件设计的中心环节是实现单片机与GPRS模块的串口通信,只有在此基础上才能实现命令帧的接收和数据帧的发送,SPCE061A单片机主要是通过UART异步串行接口实现数据传输。
该系统中数据的发送采用查询方式,数据的接收采用中断方式(此处为IRQ7 UART中断接收),其中接收的数据可分为单片机发送AT指令返回的确认信息OK和接收到的命令帧。
数据发送流程图如图4-3所示。
图4-3 数据发送流程图
UART串口的初始化主要包括波特率的设定,IOB7和IOB10口的属性设定和接收中断允许的设定。
此外还须注意,UART串口异步通信每次只能接收或发送一个字节的数据,所以若是收发两个字节或者两个以上字节的数据时需要进行移位处理。
接收命令帧和发送数据帧的流程图及说明
在远距离异步数据传输过程中,数据的传输有两种方式:一是数据按字节一个一个的连续传送,另一种是以多个字节构成的数据帧为单位被传送。
在实际使用时,后者较为理想。
该系统中信息的传递主要是通过命令帧和数据帧实现的,监控终端和监控中心根据协议,即命令帧和数据帧的格式来判断接收到的信息是否有效,从而根据正确的信息来选通相应通道进行数据采集或者数据分析等操作。
一般,一个数据帧包括帧头、数据、校验码和帧尾四部分,本系统在传输的过程中所要发送和接收的数据是数字字符(一个字节),根据该数据的内容,对命令帧和数据帧的封装格式如表4-1和表4-2所示。
表4-1命令帧格式
表4-2数据帧格式
命令帧以0x55为帧头和帧尾,数据部分的主要内容是需要采集的信号通道标号,校验地址为通道标号的重复;数据帧以0xAA为帧头和帧尾,数据部分的主要内容为采集到的模拟信号经A/D转换后得到的数字信号值,其后还有两个字节的校验字以确保数据传输的正确性。
此处,模拟数据经过A/D转换后得到的本是十位数据,但为简化发送和接收数据程序,在不影响传输数据准确度的条件下将数据压缩到8位,所以一次采样得到的数据为一个字节。
此外,帧头和帧尾只是一帧数据开始的标志,可根据具体情况设置。
系统中监控终端接收命令帧须根据协议来判断其是否合法,具体流程如图4-4所示。
监控终端接收到命令帧后,将根据命令帧中的地址来选通相应的通道输入采集到的信号,然后经过A/D转换、成帧后,将数据发送到监控中心,从而完成一次工作过程。
图4-4 接收命令帧流程图
4.3GPRS传输数据的详细流程
通过GPRS无线收发模块进行数据传输有两种模式,即短信模式和数据模式,本小节将就采用两种模式进行数据传输时用到的AT指令和部分代码作分别介绍。
4.3.1GPRS以短信模式传输数据的代码及说明
通过异步通讯接口实现对SMS的收发主要有3种模式:Block模式、Text模式和PDU(Protocol Data Unit协议数据单元)模式,其中Block模式已逐渐被PDU模式所取代,而Text模式收发短消息原理简单,程序易于实现,但其最大的缺点是只限于收发英文短信而不支持收发中文短信。
PDU模式能收发中文短信,但需要对信息进行一定的编解码,实现复杂。
本系统数据
传输的最终目标是将采集的数据发送给监控中心,对中文格式要求不是必须的,因此发送的短信为基于AT命令的Text模式。
以下即为以短信模式传输数据所需要使用的AT指令:
AT+IPR=9600\r\n //设置通信波特率为9600bps
AT+CMGF=1\r\n //设置短信模式为TEXT
AT+CMGS=”” //发送短信到手机号为的手机
AT+CNMI=2,1\r\n //设置短信提示
AT+CMGR=1\r\n //读取指定“1”里的内容
为了更好的理解AT指令的使用过程,我们可以先将SIM300模块通过串口与PC机相连,使用PC机上的超级终端(Hyper Terminal)来实现简单的短信收发功能。
在PC机上启动超级终端,将串口速率设置为9600bps,加电后,输入“AT”指令后回车,若屏幕上返回“OK”,则表明计算机与SIM300已连接成功。
然后分别发送“AT+CMGF=1”和“AT+CMGS=”””,返回“>”后,输入要发送的数据,如“12345”,然后回车,点“手动发送”即可将“12345”发送到手机号为“”的手机上。
注意,在编写程序时,需要在发送完数据后再发送“\032\r\n”以表示发送的数据结束。
若要接收短信,则发送“AT+CNMI=2,1”,然后用手机号为“”的手机向超级终端发送一条英文短信,如“ni hao”,则超级终端屏幕将返回“+CMTI:”SMS”,1”,表示有短信到达,短信存储在SIM卡的第一个位置,然后发送“AT+CMGR=1”指令,屏幕将返回短信内容。
以上是使用超级终端发送接收短信的流程,发送短信的部分代码如下所示,其中UART_Init( )为单片机初始化函数,Send_AT( )为发送字符串函数,Delay( )为延时子函数。
# include "SPCE061A.h"
char buf1[]={"AT+IPR=9600\r\n"};//设置SIM300的波特率为9600b/s
char buf2[]={"AT+CMGF=1\r\n"};//指定信息的输入输出格式为text格式char Info[]="12345
void main( )
{
asm(("INT OFF"));//关中断。