手机短信短信的程序开发
市场上的大多数手机现在都支持类似于调制解调器控制的指令集GSM。该指令集是由诺基亚、爱立信、摩托罗拉和惠普共同开发的GSM系统,包括SMS(短消息服务)控制。
GSM在相关指令中的引入
与SMS有关的GSM指示见表1。
表1有关GSM指令
有三种方法来控制短信:
块模式;
基于AT命令的文本模式;
基于AT指令的PDU模式。
文本模式是相对简单的,和一些诺基亚手机支持的模式。西门子的大部分手机只支持PDU模式。PDU模式是一种以发送或接收手机短信信息。短消息的文本是十六二进制编码后发送。目前,PDU已经取代块模式,所以本文主要讨论发送PDU模式。
计算机与手机的通信
本文以西门子s3568i为例介绍如何发送短信息。
数据线连接
首先,手机是通过S35 / 25数据线连接计算机的串行端口。然后,超级终端打开并直接串行端口选择。端口参数设置为19200速率、无校验、数据位8、停止位1。
红外连接
如果使用红外端口的计算机,可以与手机建立无线连接,首先确认计算机的红外端口打开,打开手机的红外和传真/数据功能,并连接红外端口。一个红外装置,西门子S35,应该出现在电脑系统托盘。如果没有红外监控安装,它将不会显示。然后,打开超级终端,选择在IrDA串行端口。
连接测试
点击超级终端工具栏上的呼叫按钮,输入并进入汽车。如果OK出现在屏幕上,则表示计算机和移动电话之间的连接是成功的。当时,各种GSM指令都可以输入。
如:手机厂商atcgmi =查询、输入、屏幕显示西门子。
通常,测试执行的命令atcmgs =,返回OK,如果手机支持的指令。该指令的语法格式如下:
如果PDU模式(CMGF = 0 CMGS = PDU)了
如果短消息格式指令atcmgf收益是0,那么对于PDU模式短信格式,然后执行命令atcmgs =,手机回>符号等待输入,PDU输入数据和最后的^ Z或ESC键。
如果信息成功发送,则返回ok并显示信息号:
CMGS:
如果传输失败,则返回以下信息:
CMS的错误:
PDU数据格式分析
SMS PDU的数据格式被存储在手机中的信息分析介绍。首先,用手机写短消息,发送一个移动13605696031的电话号码,信息的内容是你好世界!这个信息可以读出在cmgl = 2执行。
操作过程如下(反应信息,斜体表示注释):
在
好啊
阅读短消息不atcmgl = 2 { }
cmgl:1,2,24,{ 1表示信息的数量,2表示没有,24表示总信息量}
0891 683108501505f0 1100 0B 81 3106656930f1 0000a7 0b e8329bfd06dddf723619
好啊
分析以下信息。
08:短信息中心地址长度。
91:短信息中心号码类型,91吨/吨/ NPI NPI,遵循国际/ E.164标准,指的是一些+号前;除此之外,还有其他的价值,但91是最常用的。
683108501505f0:短消息的数量,使用的服务中心的地址。由于位置稍微处理,实际数字应该是:8613805515500(字母F表示的长度减去1),这是GSM短信息中心作者的位置数。
11:文件头(头字节,一个字节的位掩码)。11是指发送短信正常。
00:信息类型。
0b:被叫号码的长度。
81:被叫号码的类型。
3106656930f1:被叫号码和移位处理,实际的数字是13605696031。
0000a7:短信息编码型GSM默认字母,例如,000010在中国。
0b:短消息的长度。
e8329bfd06dddf723619:短信内容你好世界!
短信息的编码方法及编程实现
接着介绍了纯中文中的信息编码方法,通过测试发现,前面发送的短消息都是相同的,但是调用的数量和短消息的内容都是变化的。
1。英语码
见表2。短信是Hello World!GSM。默认字符集是7位编码,可以简单地理解为ASCII码(ASCII值小于80hex段,因此被忽略)。依次,下一个7位编码位被一步一步地移动到前端,形成一个新的8位编码。见表2,箭头指示,它注重的是第九线的重要,一个7位的移位计数,和直接加入0到现在code.gsm不支持所有的ASCII字符显示。
表2英语编码的实现
以下是delphi 5代码的一部分,用英文编码:
英文编码格式,s是字符串
功能encode1(VAR:字符串:字符串);
VaR
我,J,莱恩:整数;
电流:整数;
T:字符串;
开始
结果:=;
=长度(s);
用于移位计数
i:= 1;j = 0;
而Ibegin
如果我进行了数据转换
我:=(ORD(S {我})SHR(J)或(ORD(I1的{ })黄连(7j))和$法郎)
其他的
我:=(ORD(S {我})SHR J)和$ 7楼;
FmtStr(T,% 2.2x,{我});
结果:=结果;
公司(一);
移位计数达到7的特殊处理
J:=(J1)mod 7;如果J = 0然后公司(我);
结束;
结束;
2。汉字编码
见表3,简称中国设置短消息。中文短消息的实现是简单的,它将对中国的cp936编码的Unicode编码的代码页是必要的。
表3中文代码的实现
通过Delphi widestring类型转换,转换为Unicode编码gb2312能巧妙实现(注意代码页和相关)。以下是部分的Delphi 5的代码实现汉字编码:
中文编码格式,s unicode字符串
功能encode2(VAR:widestring):字符串;
VaR
I,莱恩:整数;
电流:整数;
T:字符串;
开始
结果:=;
=长度(s);
I = 1;
而Ibegin
我:=或(S {我});
转换
FmtStr(T,% 4.4x,{我});
结果:=结果;
公司(一);
结束;
结束;
总结
以上介绍了短消息的PDU格式编码,提出了英语信息不超过140个字符的长度,和中国的信息不超过54个汉字。如果使用手机可以支持文本,它将更容易实现。如果你送你好世界!在指令中使用以下命令:
atcgmf = 1atcgms = 13605696031129
>你好世界!