短信收发模块TC35i的外围电路设计
摘要:
简单介绍Siemens公司的最新一代TC35系列的TC35i;着重介绍TC35i的原理、特性及层次结构和AT指令;设计实现TC35i通信的外围电路。
关键词:
TC35i 单片机 GSM Modem SMS 计算机 C8051F020
引 言
1 概 述
短信息服务作为GSM网络的一种基本业务,已得到越来越多的系统运营商和系统开发商的重视。本设计以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的各类应用。典型的应用有:变电站、电表、水塔、水库或环保监测点等监测数据的无线传输和无线自动警报;远程无线控制高压线路断电器、加热系统、防洪拦阻系统或其它机电系统的启动和关闭;车队交通管理和控制指挥系统;控制和监测香烟、食品和饮料自动售货机的运行状态和存货水平等。这里选用GSM模块TC35i,给出其和PC机的通信电路;同时,也给出与单片机Cyganal C8051F020制成一款无线Modem,与PC机协同收发短信,在PC和应用系统之间以此Modem和GSM网络为纽带,实现远地数据的传输。其工作模式如图1、图2所示。
2 TC35i模块
目前,国内已经开始使用的GSM模块有Falcom的A2D系列、Wavecome的WMO2系列、西门子的TC35系列、爱立信的DM10/DM20系列、中兴的ZXGM18系列等,而且这些模块的功能、用法差别不大。其中西门子的TC35系列模块性价比很高,并且已经有国内的无线电设备入网证。所以本设计选用的是西门子TC35系列的TC35i。这是西门子推出的最新的无线模块,功能上与TC35兼容,设计紧凑,大大缩小了用户产品的体积。TC35i与GSM 2/2+兼容、双频(GSM900/GSMl800)、RS232数据口、符合ETSI
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
GSM0707和GSM0705,且易于升级为GPRS模块。该模块集射频电路和基带于一体,向用户提供标准的AT命令接口,为数据、语音、短消息和传真提供快速、可靠、安全的传输,方便用户的应用开发及设计。
2.1 主要技术指标
TC35i主要特性与技术指标包括以下几点:
①频段为双频GSM900MHz和GSMl800MHz (phase 2/2+);②支持数据、语音、短消息和传真;③高集成度(54.5mm×36mm×3.6mm); ④质量为9g;⑤电源电压为单一电压3.3~4.8V;⑥可选波特率300bps~115kbps,动波特率 4.8~115kbps;⑦电流消耗——休眠状态为3.5mA,空闲状态为25mA,发射状态为300mA(平均),2.5A峰值;⑧温度范围 ——正常操作-20℃~+55℃,存放-30℃~+85℃;⑨SIM电压为3V/1.8V。
TC35i有40个引脚,通过一个ZIF(Zero Insertion Force,零阻力插座)连接器引出。这40个引脚可以划分为5类,即电源、数据输入/输出、SIM卡、音频接口和控制。第1~14脚为电源部分:1~5为电源电压输入端Vbatt+,6~10为电源地GND,11、12为充电引脚,13为对外输出电压(共外电路使用),14为ACCU-TEMP接负温度系数的热敏电阻。24~29为SIM卡引脚,分别为CCIN、 CCRST、CCIO、CCCLK、CCVCC和CCGND。33~40为语音接口,用来接电话手柄。15、30、31和32脚为控制部分:15为点火线IGT(Ignition), 当TC35i通电后必须给IGT一个大于100ms低电平,模块才启动;30为RTC backup,31为Power down,32为SYNC。16~23为数据输入/输出,分别为DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0和DCD0。
TC35的数据输入/输出接口实际上是一个串行异步收发器,符合ITU-T RS232接口标准。它有固定的参数:8位数据位和1位停止位,无校验位,波特率在300bps~115kbps之间可选,硬件握手信号用RTS0/CTS0,软件流量控制用XON/XOFF,CMOS电平,支持标准的AT命令集。
2.2 模块中与SMS有关的GSM AT指令介绍
GSM引擎模块提供的命令接口符合GSM07.05和GSM07.07规范。GSM07.07中定义的AT Command接口,提供了一种移动平台与数据终端设备之间的通用接口;GSM07.05对短消息作了详细的规定。在短消息模块收到网络发来的短消息时,能够通过串口发送指示消息,数据终端设备可以向GSM模块发送各种命令。与SMS有关的GSM AT指令如表1所列。GSM AT指令集,是由诺基亚、爱立信、摩托罗拉和HP等厂家共同为GSM系统研制的,其中包含了对SMS(Short Message Service)的控制。
表1 与SMS相关的若干GSM AT指令
AT指令
功 能
AT+CMGC
Send an SMS command(发出一条短消息命令)
AT+CMGD
Delete SMS message(删除SIM卡内存的短消息)
AT+CMGF
Select SMS message format(选择短消息信息格式:0-PDU;1-文本)
AT+CMGL
List SMS message from preferred store(列出SIM卡中的短消息信息格式PDU/text:0/"REC UNREAD"为未读,1/“REC READ”为已读,2/“STOU NSENT”为待发,3/“STO SENT”为已发,4/“ALL”为全部的)
AT+CMGR
AT+CMGS
Send SMS message(发送短消息)
AT+CMGW
Write SMS message to memory(向SIM内存中写入待发的短消息)
AT+CMGS
Send SMS message from storage(从SIM内存中发送短消息)
AT+CNMI
New SMS message indication(显示新收到的短消息)
AT+CPMS
Preferred SMS message storage(选择短消息内存)
AT+CSCA
SMS service center address(短消息中心地址)
AT+CSCB
Select cell broadcast message messages(选择蜂窝广播消息)
AT+CSMP
Set SMS text mode parameters(设置短消息文本模式参数)
AT+CSMP
Select Message Service(选择短消息服务)
2.3 PDU编码规则
目前,发送短消息常用Text和PDU(Protocol Data Unit,
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
数据
单元
初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计
)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三项组成。
A:短信息中心地址长度,2位十六进制数(1字节)。
B:短信息中心号码类型,2位十六进制数。
C:短信息中心号码,B+C的长度将由A中的数据决定。
D:文件头字节,2位十六进制数。
E:信息类型,2位十六进制数。
F:被叫号码长度,2位十六进制数。
G:被叫号码类型,2位十六进制数,取值同B。
H:被叫号码,长度由F中的数据决定。
I:协议标识,2位十六进制数。
J:数据编码
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,2位十六进制数。
K:有效期,2位十六进制数。
L:用户数据长度,2位十六进制数。
M:用户数据,其长度由L中的数据决定。J中设定采用UCS2编码,这里是中英文的Unicode字符。
图3
3 Cygnal单片机C8051F020简介
C8051F020系列器件与MCS-51指令集完全兼容,可以使用标准803X/805X的汇编器和编译器进行软件开发。CIP-51内核具有标准8052的所有外设部件,包括5个16位的计数器/定时器、2个全双工UART、256字节内部RAM、128字节特殊功能寄存器(SFR)地址空间及8/4个字节宽的I/O口。
CIP-51采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。70%指令的执行时间为1或2个系统时钟周期,只有4条指令的执行时间大于4个系统时钟周期。CIP-51工作在最大系统时钟频率25MHz时,峰值速度达到25MIPS。
该系列的MCU具有标准8051端口(0、1、2和3)和4个附加的端口(4、5、6和7),因此共64个I/O口。每个I/O引脚都可以被配置为推挽或漏极开路输出。在标准8051中固定的“弱上拉”可以被总体禁止。这为低功耗应用提供了进一步节电的能力。最独特的改进是引入了数字交叉开关。这是一个大的数字开关网络,允许将内部数字资源映射到P0、P1、P2和P3的端口I/O引脚。与具有标准复用数字I/O的微控制器不同,这种结构可以支持所有的功能组合。
可以通过设置交叉开关控制寄存器,将片内的计数器/定时器、串行总线、硬件中断、ADC转换启动输入、比较器输出以及微控制器内部的其它数字信号,配置为出现在端口的I/O引脚。这一特性允许用户根据自己的特定应用选择通用I/O和所需数字资源的组合。
图4
4 硬件设计
TC35i外围电路如图3所示。
电源电路分为充电电池和稳压电源模块两部分:充电电池主要为整个系统提供3.6V工作电压,同时产生MAX3238所需要的高电平;三端电源模块LM7806将外部+12V直流电源转换为+6V,连到ZIF连接器的11、12引脚,在充电模式下,为TC35i提供+6V、500mA的充电电源。
启动电路由开漏极三极管和上电复位电路组成。模块上电10ms后(电池电压须大于3V),为使之正常工作,必须在15脚()加时长至少为100ms的低电平信号,且该信号下降沿时间小于1ms。启动后,15脚的信号应保持高电平。
基带处理器集成了一个与ISO 7816-3 IC Card标准兼容的SIM接口。为了适合外部的SIM接口,该接口连接到主接口(ZIF连接器)。在GSM11.11为SIM卡预留5个引脚的基础上,TC35在ZIF连接器上为SIM卡接口预留了6个引脚,所添加的CCIN引脚用来检测SIM卡支架中是否插有SIM卡。当插入SIM卡,该引脚置为高电平时,系统方可进入正常工作。
数据通信电路主要完成短消息收发、与PC机通信、软件流控制等功能。数据通信电路以Maxim公司的MAX3238芯片为核心,实现电平转换及串口通信功能;具有低功耗、高数据速率、增强型ESD保护等特性。增强型ESD结构为所有发送器输出和接收器输入提供保护,可承受±15kV IEC 1000-4-2气隙放电、±8kV IEC 1000-4-2接触放电和±15kV人体放电模式。
TC35的SYNC引脚有两种工作模式,可用AT命令AT SYNC进行切换。一种是指示发射状态时的功率增长情况,另一种是指示TC35的工作状态。本模块使用的是后一种功能:当LED熄灭时,表明TC35处于关闭或睡眠状态;当LED为600ms亮/600ms熄时,表明SIM卡没有插入或TC35正在进行网络登录;当LED为75ms亮/3s熄时,表明TC35已登录进网络,处于持机状态。
TC35i通过C8051F020与PC机通信,其外围电路如图4所示。
5 软件设计
5.1 单片机程序设计简介
系统程序流程软件设计的重点在于单片机的编程。通过向TC35写入不同的AT指令,能完成多种功能,如网络登录、读取SIM卡上电话号码、发送SMS消息、接收SMS消息等。其主程序流程如图5所示。
其中,初始化的工作包括设置串口速率、无线网络登陆以及设置短信模式为PDU。PDU编码包括按PDU的编码规则产生PDU串。单片机控制TC35模块发送端消息程序实例见本刊网站www.dpj.com.cn。
5.2 汉字编码转换
由于在GSM标准中,中文编码采用的是Unicode编码,而不是目前国内常用的GB-2312编码,故还需要进行中文编码的转换,才能显示汉字字型。Delphi下汉字编码转换程序见本刊网站www.dpj.com.cn。
结 语
使用手机模块利于系统集成,成本较低。在偏远地区、海岛等架设通信线路困难或不经济的地方,工程服务设施也可以自由灵活地设置,不再受地形条件的限制。总之,GSM模块价格低廉、应用广泛,有着诱人的应用前景。
单片机控制GSM手机的技术及应用
随着科技的飞速发展和人民生活水平的不断提高,手机的普及率越来越高,更新也越来越快,价格也越来越便宜。因为手机工作的无线网络覆盖范围广,在信息传递方面性能稳定、可靠,所以把手机作为信息传递的载体,与单片机结合起来构成应用系统有着强大的生命力和广阔的应用空间,特别是在远程数据传输、远程监控等领域更是受到电子设计应用工程师的关注。一些专业刊物也介绍了一些有关这方面的文章,然而由于手机的控制指令复杂,数据格式繁琐,工程技术人员在进行单片机与手机的硬软件接口设计时经常会遇到很多困难,有时还无资料可查。笔者在完成一个项目的开发过程中,针对几种手机进行了大量的测试和实验,在此基础上归纳出一些带规律性的结论,对此结论,工程设计人员可拿来即用,大大缩短研发周期,现在把它公布出来,愿与广大电子设计人员共享。
1 硬件接口技术方面
目前市场上流行的大部分手机几乎都具有数据引出口,并基本上都支持与GsM短信息相关的AT控制指令(GSM-SMS-AT指令),手机通过数据口以串行方式接收指令并向外输出数据。理论上讲,在数据口中找出RxD、TxD和GND引脚与单片机的串口对应连接即完成了硬件接口。然而,实际上由于不同品牌,不同型号手机的RxD、TxD和GND引脚并非一致,找查这三根线有时也非易事;况且手机数据口的电平既不是RS232电平,也不是TTL电平,与由5V供电的单片机串口还不能直接连接。最简单可靠的方法是使用手机的数据线建立单片机与手机的硬件连接。手机数据线是专为连接PC机9针串口而设计的,信号电平为标准的RS232电平,只要单片机的串口也转换为Rs 2 3 2电平,就可方便连接。9针串口引脚定义是固定的,即2脚为TxD(手机发送),3脚为RxD(手机接收)、5脚为GND。这样,无论什么型号的手机与单片机的连接就成了固定连接,不需要知道手机数据口信号的具体定义,二者通过数据线的连接电路如图1所示。
需要注意的是:不同手机数据线内部电平转换芯片的供电方式是不同的,有的是通过手机直接供电;有的是通过窃取PC机串口某些引脚(通常为4、6、7、8引脚)的电流经内部整流滤波稳压后提供。判断的方法是将数据线一端插到手机数据口,测量另一端2脚与5脚之间的电压,如果有一7V左右的电压,则为前者,如果测不出电压,则为后者,对于后者则需要单片机为4、6、7、8引脚任意一引脚提供+5V电压即可,如图1中虚线所示。
2 软件接口技术及控制原理
单片机与手机的软件接口其实就是单片机通过与GSM短信息有关的AT指令控制手机的控制技术,如读取手机的短消息内容,删除短消息内容,列出手机中还未读的短消息等。关于AT指令的功能描述见参考文献[1,2]的文章内容,此处不再赘述。然而,执行一条指令,也并非某些资料中介绍得那么简单。事实上,指令的执行过程需要单片机与手机交互应答完成,每一次发送或接收的字节数有严格的规定,二者必须依据这些规定实现数据交换,否则,通信就是失败的。笔者经过对几种手机反复测试,总结出来一些规律,如表1所列。
对几个问题说明如下。
①所有AT指令的指令符号、常数、PDu数据包等都是以ASCII编码形式传送的,比如“A”的ASCII编码为41H,“T”的AscII编码为54H,数字“0,,的AsCⅡ编码为30H等。
②单片机控制手机工作,必须把手机的短信息工作模式设置为PDu格式,即通过指令AT+cMGF=O完成。
③单片机向手机发送每一条指令后,必须以回车符作为该条指令的结束,回车的ASCII编码为0DH。例如,单片机向手机发送“AT+CMGF=0”这条指令,其ASCII编码序列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一个字节0DH就是回车符,表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。
④当手机接收到一条完整的AT指令后,手机并不立即执行这条指令,而是先把刚才接收到的AT指令的全部ASCII编码序列全部反发送出来(含0DH),然后发送一个回车符和换行符的ASCII编码,即0DH和0AH,最后执行该条指令。
⑤手机向单片机传送短信息内容时,其PDu数据包的内容是以十六进制表示的数据,但并不是直接向单片机传递十六进制数据,而仍然是把每一位十六进制数以AscII编码来发送。这样,二个字节的十六进制数就变成4字节的ASCII码。但是,PDU数据包中的数据字节长度部分仍然是实际字节长度,而不是变成AscII码的字节长度,这在编程时应特别注意,否则,接收的数据就不完整。单片机接收到PDU数据包数据后,必须将其恢复成十六进制数据,其算法如下:设a为接收的ASCII码,b为转换后的十六进制数。如果a<39H,则b=a-30H;如果a>39H,则b=a-30H-07H,最后把前后两个数合并为一个字节。
⑥手机向单片机应答PDU数据包的字节数不包括前9字节数据(短信服务中心地址),但向单片机传送PDU数据包时,包括这9个字节的数据。例如,如果手机应答的PDU数据长度为50,而实际向单片机传送的十六进制数据为59字节,ASCII码为2×59字节,所以,单片机必须按2×59字节接收PDU数据。
3 应用实例
笔者利用上述原理和接口技术开发了一个项目:高速公路显示导引系统。安装在高速公路上的LED显示屏实时显示前方路段车辆通行态势和天气气候情况,提醒并引导驾驶人员,正确驾驶。该系统的使用一定程度上消除了许多交通事故隐患,从而保障了道路的畅通和人民生命财产的安全。该系统由控制中心和若干个显示屏组成。控制中心实时将最新信息发送到各显示屏。构建控制中心与显示终端的通信链路,传统的方法要么铺设光缆用有线方式实现,要么构建专用无线网用无线方式实现。因为高速公路的特殊性,控制中心与显示终端之间的距离通常很远,两种方案都必须投入大量资金和巨大的施工工作量。如果采用GSM公众无线传输网络,控制中心以短信息的形式把显示信息发送到显示终端的技术方案,则具有投资小,施工方便,工作可靠,运行费用低等诸多优点。
在控制中心,微机编辑好短信息后通过手机这个载体发送出去。在显示终端,单片机通过读取手机的短信息把它显示到LED显示屏上。项目的核心技术是单片机与手机的接口和PDU数据包中的汉字信息编码。因为短信息中的汉字仅仅是一个编码,单片机应用系统将编码变为汉字点阵数据,必须配置汉字字库。按GSM07.05协议规定,短信息中的汉字编码为Unicode编码,如果构建一个Unicode编码的汉字字库,确实是一件繁琐的工作,因此,在设计单片机应用系统时,采用如下两点技术措施。
①单片机系统配置的字库为GB-2312编码的汉字库,即区位码汉字库,该汉字库在网上可免费下载,固化到Flash存储芯片中即可。当然这样做的前提是PDU数据包中的汉字编码必须为汉字内码而非Unicode编码。
②控制中心编辑PDU数据包数据时,采用自定义数据方式,其中,代表汉字的数据,直接取用汉字的机内码即可,免去了把机内码再转换为Unicode编码之苦。实践证明,这是可行的。
采用以上技术措施的优点,一是省去了两种编码的相互转换;二是保证了数据的保密性,非系统内用户无法接收,即使接收也无法显示。
该项目研制成功投入使用后,因显示终端只接收不发送,几乎没有运行成本。发送端(控制中心)可采用月租方式,也能把运行费用降低到最低限度。因此该项目得到用户满意的评价。
基于GSM模块的短信平台开发
周鹿扬 苗开超 徐建鹏
提 要
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.
基于GSM网络的短信平台开发
摘 要
随着GSM标准被越来越多的国家和地区采用,移动网络的商务应用越来越受到重视.人们希望能够通过GSM网络传输话音信息之外的更多信息.短消息服务是通过移动设备发送和接收文本信息的技术,国内多个移动通信领域的IT公司分别进行了短信网关平台的开发与研究,各自推出了相关的短信平台及相应的短信息协议。本文通过对各类短信平台的内部通信机制优缺点的分析,提出了一种基于Servlet通信技术的短信平台的设计思想及其实现方法.该方案利用JavaServlet技术,提高了短信平台的响应速度,增强了系统的稳定性。同时还介绍了标准的GSM Al指令集以及详细分析了短信信息格式的基础上,给出了短信。息编码和解码的实现方法,并结合了无线标准模块(Wireless Stand Module)的使用,提出了一种简单、快捷开发短信.忽服务((SMS )的方法。
全文共分为4部分
第一部分 短信平台结构及通讯机制
第二部分 Servlet技术在短信平台业务处理模块中的应用
第三部分 GSM AT常用指令及短信息发送模式简介
第四部分 开发和实现SMS
关键词:GSM AT指令集;无线标准模块;短信息服务 短信平台;短信息网关;短信息协议
目 录
引言.................................................................. 3
第一章 短信平台结构及通信机制......................................... 3
1.1 短信网关........................................................... 3
1.2 短信平台结构....................................................... 3
1.3.1 接收模块........................................................ 4
1.3.2 业务处理模块.................................................... 4
1.3.3 发送模块........................................................ 4
1.3 短信平台业务处理模块内部的通信机制................................... 4
1.3.1 以后台数据库为中介的通信机制..................................... 4
1.3.2 以XML文本为中介的通信机制....................................... 5
1.3.3 以HTTP字符串为中介的通信机制.................................... 5
第二章 Servlet技术在短信平台业务处理模块中的应用...................... 5
2.1 Servlet技术......................................................... 5
2.2 基于Servlet技术的短信平台实现........................................ 6
第三章 GSM AT常用指令及短信息发送模式简介............................. 6
第四章 开发与实现SMS................................................. 7
4.1 计算机和WAVECOM的无线标准硬件模块的通信............................. 7
4.2 PDU数据格式的分析.................................................. 8
4.3 短信息编码和编程实现................................................ 8
4.4 短信息发送与接收................................................... 10
结束语............................................................... 11
致谢................................................................. 12
参考文献............................................................. 12
引言
短信息方式通常是采用无线GSM发送接收设备(如手机)来实现短信息的传送,它的实现简单,具有通信成本低、频谱利用率高、系统容量大、业务种类多、抗干扰能力强、国际自动漫游等优点。短信息利用信令信道传输,不用拨号建立连接,直接把要发的信息加上目的地址发送到短信息服务中心,由短信息服务中心再转发给最终的信宿,是目前应用最广泛的通信方案。目前手机短信息的应用范围越来越广,各门户网站、电视台等都提供了丰富多彩的短信息服务。毫无疑问,手机短信息服务已经成为了各种信息服务中最炙热的增值服务。如何才能简单快捷地建立起短信息服务,无疑是一个十分值得研究的课题。
第一章 短信平台结构及通信机制
1.1 短信网关
用户上行一条信息,经短信息中心(SMC)由运营商的网络路由到运营商的短信息网关(SMG),再由SMG根据SP的特服号,经公共互联网路由到特定SP的短信网关服务器,SP的短信接收模块监听到由用户上行的信息,将此信息转交给短信业务处理模块处理,并将处理结果交给发送模块下发给SMG,再由SMG路由到SMC,最后由SMC下发给用户.其中,用户到SMC之间的信息通信采用GSM协议,而SMC到SMG以及到接收模块、发送模块到SMG再到SMC之间的通信,中国移动遵循CMPP(ChinaMobileMessagePeertoPeerProtocol)协议,中国联通遵循SGIP(ShortMessageGatewayInterfaceProtocol)协议.
1.2 短信平台结构
完整的短信平台主要由3大模块组成:短信接收模块、短信业务处理模块、短信发送模块.其中短信接收和发送模块必须遵循相关移动网络平台的通信协议,如中国移动通信公司的CMPP协议、中国联通公司的SGIP协议等.所以对于各大门户网站或专门机构的短信业务开发而言,主要就是开发短信业务处理模块.
1.3.1 接收模块
接收模块由SGIPListener、CMPPListener两个部分组成,分别支持中国联通的SGIP协议和中国移动的CMPP协议,负责接收来自各自短信网关的短信息,且均可同时接入多个短信网关,如接入深圳联通的同时,也可接入广州联通,即同时在服务器端开启多个不同的端口监听来自不同短信网关的信息,所以接收模块实际是一个服务器端的监听程序.
1.3.2 业务处理模块
业务处理模块是短信平台核心部分,也是本系统中最复杂的模块,在这里才真正开始对用户的请求进行处理.它包括:MOServlet、MOCommand-Servlet、ApplicationServlet(可以有多个类似的Servlet)及DispatchingServlet.MOServlet的主要功能是对用户的请求进行分类处理,如果属于command类的应用则将该信息转发到CommandServlet来处理后转发给Dispacting-Gateway,在CommandServlet上挂接了多个处理具体应用的接口;如果属于Application类的应用则转发到ApplicationServlet去处理后转发给DispactingServlet,这样的ApplicationServlet可以有多个;DispachingServlet是业务处理模块的最后一个Servlet,它具有两大功能:一是定时发送;二是将中国移动与中国联通用户分开转发.
1.3.3 发送模块
发送模块主要是将用户所需的结果发送到用户相关营运商的短信网关.它同接收模块一样,可以发送到多个不同的短信网关.
1.3 短信平台业务处理模块内部的通信机制
短信平台业务处理模块内部的通信机制可以分为以下几种方式.
1.3.1 以后台数据库为中介的通信机制
这是早先的短信平台所采取的通信方式,即接收手机发过来的短信息后,提取此信息的相关参数存入数据库中,当短信业务处理程序检索到数据库中的数据时,便会对此进行处理,并将处理后的结果插入到数据库中,最后再由发送程序发送出去.这种通信方式不太适用于大批量的用户访问,因为系统需要频繁地访问数据库,进行大量的插入、删除、更改的数据库操作,使得系统的大量资源消耗在对数据库操作上,传输速度受限,且不利于系统的扩展.
1.3.2 以XML文本为中介的通信机制
这种方式是通过对XML进行编码和读取XML文本来提取短消息的相关信息,它需要开发专门的程序用于处理XML文本.传输XML文本是通过邮件服务器传送到特定邮件地址完成的,相关短信业务处理程序从相关的邮件地址读取邮件,解析XML文本内容获取相关参数并进行处理,再将处理结果编码形成XML文本发送到下一个邮件地址中.以此类推,直到将最后的处理结果发送出去.这种通信方式技术性强,利于进行复杂的处理过程,系统的稳定性特别好.但因为邮件服务器对邮件的处理是分批分时进行,故传输速度比较慢,对于实时性要求比较高的短信平台不利.
1.3.3 以HTTP字符串为中介的通信机制
这种方式是以HTTP字符串为中介实现通信的,它将短信息的内容按HTTP字符串方式逐级传送到接收方.有些开发的短信业务处理平台系统采用了这种以HTTP字符串为中介的通信机制,具体实现思想是采用WebService的Servlet技术,将短信息的内容转化成HTTP方式的字符串POST到特定的Servlet,Servlet又将处理后的结果转化成HTTP方式的字符串POST到下一级的Servlet,依此逐级处理完毕,最后由发送Servlet发送信息.
第二章 Servlet技术在短信平台业务处理模块中的应用
2.1 Servlet技术
Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面.Servlet也是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机.由于Servlet运行在Web服务器端,因此不受到Java安全性的限制,拥有和普通Java应用程序一样的权限.Servlet可以链接起来顺序处理一个请求,在一个Servlet链中,将每个Servlet的输出传送到链中的下一个直到到达最后一个Servlet,然后将此输出返回客户机.
ServletAPI中核心的抽象类是Servlet接口,所有的Servlet都实现这一接口.Servlet的开发者可以直接实现这个抽象类,但更一般的做法是继承一个已经实现了Servlet类,如HttpServlet.图为ServletAPI中的主要类与接口间的继承关系。
2.2 基于Servlet技术的短信平台实现
如前所述,在本系统的短信平台内部采用HTTP字符串方式通信,而整个短信平台又是由多个Servlet组成的,每个Servlet完成特定的功能,上一级的Servlet将处理的结果传输到下一级相关的Servlet再进行处理.因而,在开始进行Servlet传输之前,首先要对信息进行编码,进行数据转换.当下一级Servlet接收到此字符串信息时,接收端需要进行数据转换,对信息进行解码,提取系统所需的相关参数,并对此进行处理.
为平台Servlet的基类定义了一个抽象方法processMessage,所有的Servlet只需实现此方法对信息进行处理,然后将处理后的结果传输到下一级的Servlet上,例如将SGIP协议中的关键参数按照HTTP协议的规范转化成与之相符的字符串形式,以POST的方式传输到相关的Servlet,该Servlet接受到此信息,经过处理后类似于“接力赛”的形式又POST到下个Servlet去处理,直到最后将短信息传递到联通的SMG为止.这种基于Servlet技术的短信通信方式简便易行,且处理信息的速度特别快。
第三章 GSM AT常用指令及短信息发送模式简介
介绍一种简捷的开发短信息服务SMS的方法,只需要使用普通的SIM卡结合WAVECOM公司的WISMO无线标准硬件模块(Wireless Stand Module),与计算机的串口相连接,利用GSM AT指令集,就可以通过自行编写的软件,实现短信息的收发,建立起自己的短信息服务;这种方(通过红外接口或用手机数据线连接至串口),同时支持GSM AT指令集.
GSM模块与计算机之间的通信协议是一些AT指令集,每个指令以AT+开头,以回车结尾。每个命令执行成功与否都有相应的返回。其它一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。在AT指令中还包括如下的控制符:
结束符(本文以下用
表示):十六进制的OxOD
发送符(本文以下用表示):十六进制的OXIA。
基于Al,指令的对SMS的控制共有两种实现途径:Text Mode和PDU Mode.
Text Mode比较简单,但是在这种模式下,只能发送160个英文字符,多款诺基亚手机均支持该模式;PDU模式是发送或接收手机SMS信息的另一种方法,在PDU模式下,一个完整的SMS短信息经过十六进制编码后,作为一个二进制的字符串传输.
常用的GSM AT指令
AT+CSMS Selection of message service 选择短信息服务选择是否打开短信息服务以及广播服务
AT+CPMS Selection of SMS memory 短信息存储选择短信息优先存区城AT十CSCA Address of the SMS service center短信息服务提供短信息服务中心的号码 中心地址
AT十CMGF SMS format短信息格式选择短信息支持格式((0—TEXT or1-PDU)
ATCMGR Read in an SMS读短信息读取短信息
AT十CMGS Send an SMS发送短信息
AT+CNMI Display new incoming SMS新消息提示选择当有新的短信息来时系统提示方式
同时在PDU模式下,所有的SMS参数都由用户来管理,可以发送任何类型的短信息,允许发送一些在Text模式下是不能够发送的特殊的数据格式,具有Text模式所不具有的许多优点,因此PDU模式得到了广泛的应用,限于篇幅有限,本文主要探讨PDU模式下短信息的收发。
第四章 开发与实现SMS
4.1 计算机和WAVECOM的无线标准硬件模块的通信
(1)数据线连接:通过无线标准硬件模块的数据线将其与电脑串行口相连,插入SIM卡(插卡时要断开电源),接好天线和电源,等信号指示灯开始闪动时表示模块己经开机,并且注册GSM网络成功。此时模块处于待机状态,当有用户拨号进来时,串口将有相应的提示信息。
(2)连接测试:打开超级终端,选择直接串行口连接,端口参数设为%00波特率、无校验位、数据位8位、停止位1位,然后点击超级终端工具条上的呼叫按钮,输入AT并回车,屏幕上如果出现OK,则表明计算机与,手机的连接成功,这时就可以输入各类GSM AT指令。
例如要测试模块在此地的信号强度,可发送命令:AT+CSQ+(返回若含99则表示无信号).
4.2 PDU数据格式的分析
下面通过对接收到的短信息的分析,来介绍SMS的PDU数据格式。假设对方的手机号码为13640868411,信息内容为”你好”.
08 91 683108200005F0 040D91683146808614F100 08 20 2191 1103 6100 04 4F60597D表对这条短信息进行了分析。
4.3 短信息编码和编程实现
(1)短信息编码:短信息内容的编码可为Bit7, Bit8或Unicode,以下分别介绍:
·Bit?编码方式:用户数据如果为非中文,可采用7-bits characters 7位编码法,字符集为7位编码,可以简单地理解为ASCII码(ASCII值小于80Hex,因此,Bit8被忽略),依次将下一7位编码的后几位逐次移至前面,形成新的8位编码,例如:H翻译成1001000,i翻译成1101001,显然H的二进制编码不足八位,那么就将i的最后一位补足到H的前面。那么就成了11001000(C8),i剩下六位110100,前面再补两个0,变成00110100 (34),于是”Hi.,就变成了两个八进制数C8 340
·Bit8编码方式:发送任何二进制数据(Ox00 -OxFF),可采用Bit8编码法,每个字节按十六进制格式发送,如0x86的按十六进制格式为:“86”,实际发送“86”,接收方须与