摘要:本文介绍了GSM通信模块TC35的中文短消息收发格式,然后举例解释了实际操作过程,最后介绍与微处理器的接口方法。
关键词:TC35通信模块 短消息
引言
由于中文短消息具有内容直观,传送距离远,用户无需建造信号中转站,成本相对低廉,因此在控制领域的应用日益广泛。SIEMENS的TC35型GSM通信模块在国内应用比较广泛,然而很多技术人员在刚开始使用时,有许多不甚清楚的地方,甚至无从下手,因此有必要把有关的基础知识和经验写出来供大家参考。
短消息的格式及解释
由于参考资料几乎全是英文资料,因此本文亦写出英文缩写,以方便读者阅读其他材料。
短消息接收格式如下:
格式中英文缩写的解释如下:
SCA Service Center Address 短消息服务中心地址,1-12位数字
PDU-type Protocol Data Unit Type 协议数据单元类型,1位数字
MR Message Reference 由手机设置的短消息递交帧的递交数字(0-255),1位数字
OA Originator Address 发送方地址,即发送的手机号码,2-12位数字
DA Destination Address 接收方地址,即接收的手机号码,2-12位数字
PID Protocol Identifier 协议识别符,1位数字
DCS Data Coding Scheme 数据译码方案,1位数字
SCTS Service Center Time Stamp 服务中心收到短消息的时间,7位数字
VP Validity Period 短消息发送的合法期限,0、1或7位数字
UDL User Data Length 用户数据长度,1位数字
UD User Data 用户数据,0-140位数字
RP Reply Path 短消息回复的路径
UDHI User Data Header Indicator 用户数据区包含的报头
SRI Status Report Indication 这个参数指明移动设备是否需要状态报告
SRR Status Report Request 这个参数指明移动站是否需要一个状态报告
VPF Validity Period Format 指示VP区是否存在
MMS More Message to Send 指示是否有更多的消息将被发送
RD Reject Duplicate 拒绝重复
MTI Message Type Indicator 消息类型指示,00-消息接收,01-消息发送
短消息的收发举例
对TC35的操作均采用AT指令。指令内容均为ASCII码,短消息的中文编码方式为UNICODE码。
一.短消息的发送
例如要发送字符“宁波大学”到手机13034603567中,则首先把字符转换成UNICODE代码,转换软件可以采用Chinese 2 Unicode convertor等,可在互联网中下载。经转换,“宁波大学”的Unicode代码是5B81 6CE2 5927 5B66。则TC35的指令是
AT+CMGF=0设置TC35为PDU格式
AT+CMGS=023 发送短消息指令,023为本短消息发送字符总长度
0011000D91683130643065F7000801085B816CE259275B66 这是发送内容
代码意义解释如下:
00 SCA,以00写入,意味着使用默认的服务中心地址,该服务中心地址用AT+CSCA指令写入
11 PDU类型
00 MR 消息参考
0D LEN 接收方号码长度
91 TYPE 91表示号码是国际代码,81是国内代码
683130643065F7 DA 接收方号码8613034603567,注意号码的每个字节是高低位互换的,末尾号码是半字节的话,另外半字节用F替代。
00 PID 协议识别
08 DCS 数据编码结构
01 VP 短消息有效发送时间,01表示10分钟,具体见参考文献1第11页
08 UDL 用户数据长度
5B816CE259275B66 UD 用户数据,即字符“宁波大学”
如果发送成功,TC35回送以下信息
+CMGS: X这里的X是个数字
OK
OK表示发送成功,否则在一段时间的尝试后返回ERROR。
注意:
1.如果发送短消息指令中指明的总长度和实际发送的短消息长度不符的话,TC35将拒绝发送。
2.上述指令的代码是十六进制代码,发送到TC35的短消息代码是ASCII码,因此例如上述发送的代码是0011000D91…. 送到TC35代码应该是30 30 31 31 30 30 30 44 39 31
3.所有传送到TC35的指令必须以ASCII代码0D 0A结尾,表示向TC35传送的一条指令结束。因此在实际发送的操作中应发送的代码如下:
AT+CMGS=023 发送41 54 2B 43 4D 47 53 3D 30 32 33 0D 0A
0011000D91….. 发送30 30 31 31 30 30 30 44 39 31……….0D 0A
同样,发送AT+CMGF=0指令的代码是41 54 2B 43 4D 47 46 3D 30 0D 0A
二.短消息的接收
例如接收到的短消息代码是
0891683110300705F0840D91683130643065F7000830101311401300026D4B8BD5
我们可这样判读
08 LEN SCA字节长度(长度值包括代码类别的字节长度)
91 type of Number 号码类型(国内/国际)
68 31 10 30 07 05 F0 SCA 服务中心号码是8613010370500(对末尾的半字节空位以F替代)
84 PDU-type PDU类型
0D Len 发信方地址长度
91 PDU-type协议类别
683130643065F7 OA 发信方号码是8613034603567(对末尾的半字节空位以F替代)
00 PID 协议识别
08 DCS数据译码方案
30101311401300 SCTS 信息中心接收到数据的时间是2003年1月31日11点4分31秒,时间区为00.
04 UDL 数据长度为4个字节
6D4B8BD5 UD 用户数据,Unicode码(字符“测试”)
TC35与微处理器的硬件接口方法
TC35与微处理器只要连接好串口的TXD、RXD通信线,IGT启动脚,外接SIM卡以及电源即可正常工作。连接方法详见参考文献3。
TC35的串行口为自适应波特率,范围是1200-115200bps,但是笔者推荐使用9600,N,1格式。
TC35的串行接口电平是0-3.3V,然而我们常用的微处理器接口电平为0-5V,因此必须做电平转换。实践证明,若不做电平转换,则在大批量生产中产品质量不稳定。TC35与微处理器接口连接完成后,建议首先用ATI指令(显示产品识别信息)对串口连接进行测试,该指令返回内容如下:
SIEMENS
TC35
REVISION x.yy (x.yy是版本号)
注意:ATI指令必须以0D 0A结尾。
如果用户对AT指令不甚明了,建议首先采用PC机调试TC35,因为AT指令的细节还是有不少的。连接方法是PC机串口经MAX232等电平转换电路与TC35连接,调试软件采用串口调试助手等软件即可。
TC35的供电范围是3.3V-5.5V,电源容量要求2A。在实践中发现,电源容量偏小或电源纹波过大,都会使TC35工作不稳定。
TC35的启动是通过拉低IGT脚100毫秒以上即可。
参考文献
[1] SMS with the SMS PDU-mode [M/CD] Siemens AG Version 1.2
[2] AT Command Set Siemens cellular engines version 2.10 [S] Siemens AG 2001年
[3] TC35 cellular engines Hardware Interface Description version 2.10 [S] Siemens AG 2001年
[4] 周嵘,家庭GSM短消息遥控监测装置 [P].中国专利:ZL02217548.2,出版日期2002年5月17日