摘要 GPRS是一种新的移动数据通信业务,在移动用户和数据网络之间提供一种连接,给移动用户提供高速数据通信,GPRS采用分组交换技术,使每个用户可同时占用多个无线信道,同一无线信道又可以由多个用户共享,资源被有效的利用。这里介绍了一套基于GPRS短消息的远程无线监控系统和基于AT指令的GPRS模块的应用开发。实现了GPRS短消息接收平台的建立,提供了GPRS安全性解决方案。对通讯方式、系统结构、工作原理及系统的实现进行了详细的说明。由于GPRS网络支持TCP/IP协议,这使得无线数据传输变得更加轻松,利用GPRS作为通信手段进行数据传输具有技术新、效果好、可平滑技术升级等特点。 该系统在自动抄表,远程监控等领域具有很好的应用前景。 关键词:GPRS,SMS,通信
Abstract GPRS is one kind of new mobile data communication service, it provide a kind of connection between the mobile subscriber and the data network, provides the high speed data correspondence for the mobile subscriber, GPRS uses the Packet-Switched echnology, each user can take many wireless channels at the same time , the identical wireless channel may be shared by many users and resources can be used effectively.Here introduced a set of application development based on the short message of GPRS about long-distance wireless of supervisory system and AT GPRS module on AT. It realized establishment of the receiving platform about the short message of GPRS, it has provided the GPRS security solution. It show detail for the communication way, the system structure, the principle of work and the system realization. Because the GPRS network supports TCP/IP ,it make the wireless data transmission easer,it has many characteristic,for example,it is a new technology.the effect is good and can promotion smoothly.it has good prospect on copying the table,domote monitoring . Key words:Gprs, SMS , Commnication
第一章 绪论 1.1研究背景 近年来,大量的无线数据业务孕育而生。像车辆定位监控系统、机房无线远程监控系统、无线POS系统、照明设备远程监控系统等等。这类业务需求往往是在一个主要的控制中心管理下,多个终端设备以无线方式与控制中心进行信息交互。终端设备除了具有无线接入之外,有的还要求比较强的数据处理能力,比如数据采集、数据处理、判断告警等等。 现在市场上针对此类的应用已经陆陆续续的推出了一些产品,但这些产品往往功能过于单一,比如:资料的透传,仅仅把终端作为一个无线通信设备来使用,而不考虑其它数据处理功能,将所有资料运算功能全部放在上端的监控处理系统里面进行。这样,造成数据通信量的大幅增加和上端软件的膨胀。针对这类低端产品的不足,我们希望能够研究与实现一种功能更加丰富的产品,将数据采集、数据处理、逻辑判断、结果传输等功能融合在一起,比如对资料进行计算提取最终结果值进行传送,对运算结果进行逻辑判断和对报警资料自动发送等功能。形成一个无人看守的数据处理平台,使终端系统具备了通用性、可扩展性。 1.2 GPRS的发展状况 GPRS是通用分组无线业务(General Packet Radio Service)的英文简称,是在现有GSM系统上发展出来的一种新的承载业务,目的是为GSM用户提供分组形式的数据业务。GPRS采用与GSM同样的无线调制标准、同样的频带、同样的突发结构、同样的跳频规则以及同样的TDMA帧结构。因此,现有的基站子系统(BSS)从一开始就可提供全面的GPRS覆盖。GPRS允许用户在端到端分组转移模式下发送和接收数据,而不需要利用电路交换模式的网络资源。从而提供了一种高效、低成本的无线分组数据业务。特别适用于间断的、突发性的和频繁的、少量的数据传输,也适用于偶尔的大数据量传输。GPRS理论带宽可达171.2K b/s,实际应用带宽大约在10-70Kb/s,在此信道上提供TCP/IP连接,可以用于INTERNET连接、数据传输等应用。 GPRS是一种新的移动数据通信业务,在移动用户和数据网络之间提供一种连接,GPRS采用分组交换技术,每个用户可同时占用多个无线信道,同一无线信道又可以由多个用户共享,资源被有效的利用,数据传输速率高达160Kbps。使用GPRS技术实现数据分组发送和接收,用户永远在线且按流量计费,迅速降低了服务成本。GPRS移动数据传输系统有很大的应用范围,几乎所有中低速率的数据传输业务都可以应用,如城市配电网络自动化、自来水、煤气管道自动化、商业POS机、Internet接入、个人信息、股票信息、金融、交通、公安等。 移动通信迅猛发展的用户数及其完善的基础网络,为移动通信增值业务的发展提供了有利条件。在诸多增值业务中,短消息(SMS)服务因其价格低廉、使用方便、信息传递准确及时、存储转发离线通信等优点而备受用户欢迎。据统计,2001年中国移动的短消息业务总量达到了159亿条。中国移动"移动梦网"合作模式的推出,极大地推动了短消息业务的发展。预计2002年中国移动短消息量将达到500亿条。同样在欧洲,短消息服务已经成长为电信运营商的重要收入来源,每个月有近50亿条短信息被发出,平均每位手机用户每月要发送出25条短信息。欧洲主要的无线运营商每月要处理超过3亿条短信息,而且这个数字还在以每月10%到15%的速率增长。在芬兰的手机用户每月的话费账单上,平均50%出自短信息服务。短信息服务像风暴一样席卷欧洲大陆。在日本,短消息及移动互联网业务仅用了1年半时间便实现了赢利的目标,目前已培育成一个30亿美元的巨大市场。 在短消息业务迅猛发展的同时,由于现有的短消息存在一些局限性,如只能传送文本信息,无法完成高质量的铃音、壁纸和动画下载,无法传送高质量的图片和声音等,因此增强型消息服务(EMS)和多媒体消息服务(MMS)就应运而生。基于目前短消息服务的良好市场,目前国内移动运营商对这两项新的消息服务非常看好,并计划大力发展。
第二章 GPRS系统介绍及相关技术 2.1 GPRS概述 2.1.1 GPRS简介 通常将移动通信分为三代。第一代是模拟的无线网络,第二代是数字通信包括GSM、CDMA等,第三代是分组型的移动业务,称为是3G。GPRS是通用无线分组业务的缩写(General Packet System),是介于第二代和第三代之间的一种技术,通常称为是2.5G,目前通过升级GSM网络实现,GPRS与GSM最根本的区别是GSM是一种电路交换系统,而GPRS是一种分组交换系统。因此,GPRS特别适用于间断的、突发性的或频繁的、少量的数据传输,也适用于偶尔的大数据量传输。这一特点正适合大多数移动互联的应用。作为现有GSM网络向第三代移动通信演变的过渡技术(2.5G),GPRS具有"实时在线"、"按量计费"、"快捷登录"、"高速传输"、"自如切换"的优点。采用TDMA方式传输语音,采用分组的方式传输数据。 GPRS是欧洲电信协会GSM系统中有关分组数据规定的标准。它可以提供高达115Kbps的空中接口传输速率。GPRS使若干移动用户能够同时共享一个无线信道,一个移动用户也可以使用多个无线信道。实际不发送或接受数据包的用户占很少一部分网络资源。有了GPRS,用户的呼叫建立时间大为缩短,几乎可以做到"永远在线"(always online)。此外,GPRS使运营商能够以传输的数据量而不是连接时间为基准来计费,从而使每个用户的服务成本更低。 GPRS采用信道捆绑和增强数据速率改进实现高速接入,目前GPRS的设计可以在一个载频或8个信道中实现捆绑,将每个信道的传输速率提高到14.4Kbps,因此GPRS最大速率是8×14.4=115.2Kbps。GPRS发展的第二步是通过增强数据速率改进(EDGE)将每个信道的速率提高到48Kbps,因此第二代的GPRS设计速率为384Kbps。 GPRS是利用"包交换"(Packet-Switched)的概念所发展出的一套传输方式。所谓的包交换就是将Date封装成许多独立的封包,再将这些封包一个一个传送出去,形式上有点类似寄包裹,采用包交换的好处是只有在有资料需要传输时才会占用频宽,而且大多数的时间频宽是闲置的。 2.1.2 GPRS网络架构 GPRS网络一般都是以GSM网络为基础而建立起来的,为了实现GPRS,在现有的GSM网络中需要增加一些节点,如GGSN (Gateway GPRS Supporting Node,网关GPRS支持节点)、SGSN(Serving GSN,服务GPRS支持节点)、PCU(Packet Controlling Unit,分组控制单元)。
第三章 短消息编码和通信协议 3.1短消息发送和接收模式及编码 短消息收发有关的规范主要包括GSM 03.38、GSM 03.40和GSM 07.05。前两者着重描述SMS的技术实现(含编码方式),后者则规定了SMS的DTE-DCE接口标准(AT命令集)。 3.1.1短消息发送和接收模式 一共有三种方式来发送和接SMS信息:Block Mode,Text Mode和PDU Mode.Block Mode目前很少用了。Text Mode是纯文本方式,可使用不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。Text Mode比较简单,而且不适合做自定义数据传输。在下面介绍的内容,是在PDU Mode下发送和接收短消息的实现方法。
3.1.3 短消息相关AT命令集 AT命令集是调制解调器通信接口的工业标准,AT命令是调制解调器可以识别并执行的命令。 1选择短消息格式 发送AT+CMGF=n,n=0时选择PDU格式,n=1时选择文本格式,执行命令后,模块返回OK; 2 设置短消息中心号码 发送AT+CSCA=<string>,对中国移动,string="+8613800736500"(常德局)。 3 选择小区广播消息信息 发送AT+CSCB=[<mode>[,<mids>[,<dcss>]]],执行正确,模块返回OK,参数含义如下: <mode> 0:接收小区广播 1:不接收小区广播 <mids> 小区广播ID码 <dcss> 小区广播编码方案 4 选择短消息业务类型 发送AT+CSMS=〈mode〉,mode=0 或1,某些命令的参数取值和mode的值有关,只有mode=1是AT+CNMI中的ds=2才能被模块接受。 5 发送短消息 在文本格式下,发送AT+CMGS="string"(sting是目的手机的号码),等模块返回符号后,发送短消息的内容,以^Z结束,模块就开始发送短消息,发送成功,模块返回OK,否则模块返回ERROR,在PDU格式下发送AT+CMGS=n,n为短消息PDU数据包的字符数,等模块返回符号后,发送短消息的内容,以^Z结束,模块就开始发送消息,发送成功,模块返回OK,否则模块返回ERROR; 6.从存储器发送短消息 发送AT+CMSS=<index>,[<da>],<index> 为要发送的短消息在当前存储器中的索引号,da为目的地址。 7.写短消息到存储器 发送AT+CMGW命令,处理过程和AT+CMGS完全相同,只是写短消息成功,模块返回的信息+CMGW:<index> OK,<index>是短消息在当前存储器中的索引号。 8.设置收到的短消息报告模式 发送AT+CNMI=<mode>,[<mt>], [<bm>], [<ds>] ,[<bfr>] 模块正确执行后,返回OK,如果参数取值非法,或当前不支持该参数值,将返回ERROR。参数含义如下: <mode> 0:缓冲短消息结果码 1:在数据通信状态下,阻止结果码送到TE; 3:无论何种状态下,都向TE发送结果码 9.阅读短消息 发送 AT+CMGR=<index>,<index>是短消息在当前存储区的索引号,执行该命令后,模块返回: +CMGR:0,24 0891683107370605F0240D91683178415142F20000101180113203000441E15006 OK 注意:+CMGR后面的格式取决于当前的短消息格式; 10.短消息列表 发送AT+CMGL=<mtype>,mtype表示短消息的类型: "REC UNREAD"接收到,但还未读,如果在PDU格式下,为0 "REC READ" 接收到的已读过的消息,如果在PDU格式下,为 1 "STO UNSENT" 已存储但未发送的消息,如果在PDU格式下,为 2 "STO SENT" 存储且已发送的消息,如果在PDU格式下,为 3 "ALL" 当前存储器中所有的消息,如果在PDU格式下,为 4 执行该命令,模块返回: +CMGL:1,0,,24 0891683107370605F0240D91683178415142F20000101180803324000441E15006 +CMGL:2,0,,24 0891683107370605F0240D91683178415142F20000101180804324000441E15006 OK 11.删除短消息 发送AT+CMGD=<index>,<index>是短消息在当前存储区的索引号,正确执行该命令后,模块返回OK,否则返回+CMS ERROR <err>; 主要工作是在上述软硬件平台上针对系统所使用的UART0串口和所使用的摩托罗拉C115通讯芯片的特性,基于C编程设计实现本课题的AT DEVICE层,以提供Phone Server层进行最底层的串口通讯和模块操作的接口调用。在AT DEVICE层实现的基础上,根据服务器/客户机架构设计实现基于IDE ADT的Phone Server层的代码和功能。在实现Phone Server层的基础上,设计应用层软件框架,提供SMS短信的收发操作. 3.2通信协议的设计与实现 3.2.1传输层协议的选择 传输层协议主要包括TCP和UDP两种协议。TCP(Transmission Control Protocol)传输控制协议,是基于连接的协议,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次"对话"才能建立起来,TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。 UDP(User Data Protocol)用户数据报协议,是与TCP相对应的协议。它是面向非连接的协议,"面向非连接"就是在正式通信前不必与对方先建立连接,而是直接就把数据包发送过去。UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。因为UDP协议是没有连接的通信过程,所以它的通信效果高;但也正因为如此它的可靠性不如TCP协议高,有时会出现收不到消息的情况。
目录 目录 I 摘要 III ABSTRACT IV 第一章 绪论 1 1.1研究背景 1 1.2 GPRS的发展状况 1 第二章 GPRS系统介绍及相关技术 2 2.1 GPRS概述 2 2.1.1 GPRS简介 2 2.1.2 GPRS网络架构 3 2.1.3 GPRS协议模型 4 2.1.4 GPRS提供的业务 6 2.1.5 GPRS终端分类 7 2.1.6 GPRS的优点 7 2.2 GPRS技术 8 2.2.1 GPRS的系统结构 8 2.2.4 GPRS网络主要实体 8 2.2.4 GPRS的路由管理 11 第三章 短消息编码和通信协议 12 3.1短消息发送和接收模式及编码 12 3.1.1短消息发送和接收模式 12 3.1.2 GPRS短消息的编码 14 3.1.3 短消息相关AT命令集 22 3.2通信协议的设计与实现 24 3.2.1传输层协议的选择 24 3.2.2系统通信协议的设计 25 3.2.3 通信协议的实现 32 第四章 系统的设计与实现 36 4.1建立UCLINUX开发环境 37 4.1.1 uCLINUX简介 37 4.1.2 uCLINUX的基本架构 37 4.1.3 uCLINUX 的开发环境 38 4.1.4 uCLINUX的内存管理 39 4.2 GPRS模块短消息通信功能设计 40 4.2.1 GPRS模块初始化 40 4.2.2键盘输入处理 40 4.2.3 AT命令接受和发送 41 4.2.4 GPRS发送短消息状态机 41 4.2.5 AT命令接收和发送 42 4.2.6 GPRS接受短消息 42 4.3 串行通信接口 42 4.3.1串行传送的特点 43 4.3.2串口通信的基本方式 43 4.4网络通信接口编程 44 4.4.1网络通信接口 44 4.4.2 网络通信操作 47 4.5串口通信编程 48 4.5.1串口通信设计 48 4.5.2 GDB 环境下使用ADT1000 调试LINUX 核心 49 4.6系统测试 55 第五章 GPRS的安全性 58 5.1 GPRS的安全问题 58 5.1.1 问题提出 58 5.1.2 GPRS网络体系结构 58 5.1.3 GPRS网络安全研究 59 5.2 GPRS安全策略 59 5.2.1用户认证 60 5.2.2 用户识别码保密 61 5.2.3 用户数据和GMM/SM信令保密 62 5.2.4 识别码校验过程 63 5.2.5小结 64 结束语 65 参考文献 66 致谢 67 附录 68
附录 部分GPRS短消息接收编程
void TestSMS() { enum GPRS_SMS_STATUS { GPRS_SMS_INIT, // 正在初始化 GPRS_SMS_IDLE, // 初始化完毕,等待输入 GPRS_SMS_GET_NUM, // 输入号码 GPRS_SMS_SEND, // 呼出 };
Char strcallnum[20]; char gprs_cmd_send_string[512]; char gprs_cmd_recv_string[512]; char strtemp[10]; int gprs_recv_msg_code; char ch; int loopcnt; int gprs_sms_status; int bexit = 0; strcallnum[0] = 0;
// 打印提示信息 TRACE("短信功能!\n"); TRACE("网络连接中,请等待...\n");
// 系统初始化 gprs_sms_status = GPRS_SMS_INIT; gprs_init(); gprs_pwr_on_off(GPRS_PWR_ON);
//////////////////////////////////////////////////////////////// // GPRS复位 { int loopcnt; __RESET: // 延时一定时间 Delay(15000);
// 发送AT命令 gprs_send_cmd("\r"); gprs_send_cmd("AT\r"); for(loopcnt = 0; loopcnt < 30; loopcnt++) { // 获取结果,如果读取到OK,认为复位成功,否则重新复位 gprs_recv_cmd(gprs_cmd_recv_string); if(strstr(gprs_cmd_recv_string, "OK") != 0) break; Delay(100); } if(loopcnt == 30) { Delay(30000); gprs_pwr_on_off(GPRS_PWR_ON); goto __RESET; } } |