您的位置:首页东哥开发网安防汽车电子
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

基于GSM模块的短信平台开发

[日期:2007-12-30 ] [来源: 作者:] [字体: (投递新闻)

基于GSM模块的短信平台开发


周鹿扬 苗开超 徐建鹏
(安徽省农网中心 230061)

 

提 要   SMS短信息服务作为GSM网络的一种基本业务已得到越来越多的系统运营商和系统开发商的重视,以GSM网络作为数据无线传输网络,可以开发出各种功能强大的应用系统,在气象服务、气象数据传输可以得到广泛的应用,本文提出了基于手机模块的短信平台解决方案。
关键词  GSM SMS AT 指令 串口

 

前 言
      目前,随着手机的不断普及,手机短信(SMS)由于其便捷、收费低廉而受到人们的欢迎。特别是由于GSM的SMS业务通过信令信道传输,不需要拨号建立连接,在气象系统应用上,基于GSM的SMS可广泛应用于气象业务数据传输、气象专业服务、给各级领导提供气象决策信息。基于GSM手机模块的短信平台只需要配合SIM卡使用,无须与营运商交涉,以取代烦琐的短消息专线接入,是目前应用最广泛的通信方案之一。

1 串口控制SMS原理
       计算机与手机一般采用异步串行通信方式,通信速率为19200B/S以上,只需要把用户信息加上目的地址发送到相应的短信服务中心(SMSC)即可,通过服务中心存储转发给最终信宿。
      通过串口控制GSM模块通过GSM07.05规定的AT指令集来实现,计算机只要通过串口向模块收发一系列的AT命令就能达到控制GSM MODEM收发SMS的目的, 常用的AT指令如表一所示。目前GSM模块对SMS的控制共有三种实现途径:Block Mode;基于AT命令的Text Mode;基于AT命令的PDU (Protocol Data Unit,协议数据单元)Mode。Block模式需要手机生产厂家提供驱动支持;使用Text模式收发短信代码简单,实现起来十分容易,直接发原文就行,发送非ASCII码内容也能发,但需要手机支持才能正确显示,这就限制了中文短信的应用;而PDU模式不仅支持英文短信,也能发送中文短信,已成了事实上的标准,下面简要介绍PDU模式。

 


      PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码适用于发送Unicode字符。中文短信息的实现需要将GB2312的中文编码转换为代码页为CP936的Unicode编码,PDU数据格式中主要由短消息中心地址、文件头字节、信息类型、目的地址、协议标识、数据编码方案、有效期、用户数据长度和用户数据组成,关于PDU数据格式和相关的AT指令集详细请参阅ETSI GSM07.05标准。

2 系统结构及其功能实现
2.1 系统结构
      系统硬件部分由计算机、手机模块、电源适配器和串口连接线组成。
      为了提高系统的通用性以及为了考虑到用户发送短信的并发性和突发性,软件部分由后台数据库和前台服务程序组成。
为了便于对短信进行管理,采用后台数据库用于存储用户的待发短信和接收到的短信,在短信并发量大的时候可以作缓冲,同时也存储联系人电话号码等信息;也便于与企业的其他信息系统集成,其他系统只需简单的对数据库进行操作就可完成短信的发送和接收功能。
      前台程序首先完成系统的初始化,设置串口通信波特率和短信服务中心号码。从数据库中读取待发短信经过编码(使用PDU模式,全部使用UCS2编码,最多70个半角/全角字符)与AT指令一起通过串口发送到GSM MODEM,并检测发送成功与否、超时重发;从SIM卡中读取接收到的SMS插入到数据库,并将之从SIM卡删除。同时前台程序还提供:短信群发,支持分组定义,使用本系统发送短信,可选择发送对象为几个组,也可以是几个人,还可用于企业对内发布通知以及对外进行广告宣传;号段群发;定时发送;电话薄管理,用户可维护联系人的电话簿信息;常用短信管理,用户可维护一些常用短信息,进行新增、删除、修改等操作,这些短信可以在发送时直接选取发送等功能。系统的工作流程见图1。
      由于短信收发实时性较强,程序单独开设了一个线程使用定时器循环控制短信收发,主线程完成数据库的接口及其它相关辅助功能。

 

 


2.2 系统实现
      现例要向手机号码13712345678发送内容为“你好, Hello!”的短信,短信中心号码为13800551500,使用PDU方式进行编码后的信息为:
      0891683108501505F011000D91683117325476F8000800124F60597DFF0C00480065006C006C006F0021
      其中1683108501505F0为编码后的短信中心号码,11-文件头字节,00-信息类型,0D-被叫号码长度,91-被叫号码类型,683117325476F8为被叫号码,4F60597DFF0C00480065006C006C006F0021就是经过编码以后的实际内容为:"你好,Hello!"的信息内容了。注意低位在前,高位在后,“F”为补整。
      控制串口方式一般有3种,MSCOMM,API,第三方类,在本系统中采用API方式,下面代码演示了打开串口、发送短信、关闭串口的全过程。
      // 打开串口
      HANDLE hComm;
      DCB dcb; // 串口控制块
      COMMTIMEOUTS timeouts = { 100, 1, 500, 1, 100};
      hComm = CreateFile(“COM1”,GENERIC_READ | GENERIC_WRITE, 0, NULL,
      OPEN_EXISTING,0, NULL);
      if(hComm == INVALID_HANDLE_VALUE) return FALSE; // 打开串口失败
      GetCommState(hComm, &dcb); // 取DCB
      dcb.BaudRate = 19200;
      dcb.ByteSize = 8;
      dcb.Parity = NOPARITY;
      dcb.StopBits = ONESTOPBIT;
       SetCommState(hComm, &dcb); // 设置DCB
      SetupComm(hComm, 4096, 1024); // 设置输入输出缓冲区大小
      SetCommTimeouts(hComm, &timeouts); // 设置超时
      //发送短信
       Char pdu[512]=
"0891683108501505F011000D91683117325476F8000800124F60597DFF0C00480065006C006C006F0021";
char cmd[16]; // 命令串
      sprintf(cmd, "AT+CMGS=%d\r", nPduLength / 2 - nSmscLength); // 生成发送短信命令
      WriteFile(hComm, cmd, (DWORD) strlen(cmd), NULL, NULL); // 先输出命令串
       ReadFile(hComm, ans, 128, &dwNumRead, NULL); // 读应答数据
      if(nLength == 4 && strncmp(ans, "\r\n> ", 4) == 0)
      WriteFile(hComm, pdu, (DWORD) strlen(pdu), NULL, NULL); // 先输出命令串
//关闭串口
      CloseHandle(hComm);
      在实际系统中,只要控制向串口发送相应的AT指令就可实现接受短信,删除短信等相关功能,同时需要将上面的代码封装为多个函数,以提高代码复用性和可维护性。

3 系统性能
      基于手机模块的短信平台使用VC实现,采用数据库接口以后,具有很大的消息缓存,在面临大流量冲击的情况下仍能流畅工作,平台运转稳定,使用情况良好。性能指标为在19200B/S的通信速率下,短信传输平均值可达到800条/小时以上(号码正确、信号良好),也可以使用多个手机模块或GSM MODEM池来提升系统容量。当使用多个GSM MODEM的时候,可以为每一个MODEM开设一个单独的线程,各个线程并行工作收发短信互不干扰,目前多数计算机只有两个COM接口,因此如果需要大幅度提升系统容量,可以考虑使用Usb接口的4/6/8路GSM modem池,使数据传输效率成倍提高。

4 结束语
      由于本短信平台采用外部数据库接口方式,易于与气象业务系统、服务系统、网站、邮件、OA等系统集成,可以与客户服务与气象部门日常业务相关系统有机整合,提高气象系统信息化的集成度;此外,由于系统是基于VC++开发的,很容易移植到单片机用于开发远程数据采集系统中,如GPS、电力系统等,非常适用于单位或个人消息传送信息或121的宣传广告等,具有较高的实用价值。

参考文献
1 COM技术内幕——微软组件对象模型. (美)Dale Rogerson,杨秀章. 清华大学出版社,1999.
2 COM原理与应用. 潘爱民. 清华大学出版社,2001.
3 COM本质论. (美)Box.D. 潘爱民. 2001. 
4 COM+技术大全. (美)Richard C. Leinecker,高智勇译等. 机械工业出版社,2001. 
5 COM+编程指南. (美)Mark Michaelis. 宋丽红、李二勇、杨超峰. 机械工业出版社,2002.

 

阅读:
录入:admin

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐