📄 手机短信息sms的程序开发.htm
字号:
<td colspan="3" height="25">当前位置 : <a href="http://www.knowsky.com">首页</a>
> <a href="more.asp?typeid=22"><font color="#0000FF">移动短信技术</font></a></td>
</tr>
</table>
<div align="center"><a href="http://www.finet.net.cn/" target="_blank"><img src="ad/finet1.gif" width="784" height="72" border="0"></a><a href="http://www.finet.net.cn/ympay.asp?id=1" target="_blank"><img src="http://www.finet.net.cn/images/cn1.gif" width="784" height="56" border="0"></a></div>
<table width="784" border="0" cellpadding="0" cellspacing="1" align="center">
<tr bgcolor="#F5F5F5">
<td width="594" height="138" valign="top" bgcolor="#FFFFFF">
<div align="center"><span class="ccwheading02">手机短信息SMS的程序开发</span> </div>
<div align="center"><br>
<span class="Text2"><br>
文章类别:<a href="more.asp?typeid=22"><font color="#0000FF">移动短信技术</font></a>
发表日期:2003-11-7 星期五
</span>
<hr size="1">
<div align="left">
<table width="100%" border="0" cellpadding="19" cellspacing="0">
<tr align="center">
<td><a href="http://www.2881.com/count" target="_blank"><font color="#FF0000"><b>网
站 计 数 器 申 请</b></font></a></td>
</tr>
</table>
<div style='visibility:hidden;width:1px;height:1px;color:white;overflow: hidden'>转自:动态网制作指南 www.knowsky.com</div>
<span class="unnamed3"> </span>
<table width="1%" border="0" cellpadding="0" cellspacing="5" align="left">
<tr>
<td><script type="text/javascript"><!--
google_ad_client = "pub-5069998594260847";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_channel ="3718258953";
google_color_border = "A8DDA0";
google_color_bg = "EBFFED";
google_color_link = "0000CC";
google_color_url = "008000";
google_color_text = "6F6F6F";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></td>
</tr>
</table>
<span class="unnamed3"> <P>目前手机短信息的应用越来越广泛,互联网上提供短信息发送的站点也越来越多,但一些站点的服务并不尽如人意,往往发出去的短信息石沉大海。最可靠的发送方法当然是用手中的手机了,如果设置了状态报告,更能确切知道对方是否收到了此条信息。手机发送尽管比较可靠, 但也存在输入麻烦、效率低的问题。本文介绍一种方法,只要手机能够与电脑相连(通过红外端口或用手机数据线连接串行口,同时手机支持GSM AT指令集),就可以通过自行编制的短信息发送<a href="http://www.knowsky.com/query.asp?word=软件" target="_blank" ><span class="unnamed8"><font color="#0000FF">软件</font></span></a>,实现短信息的发送。 </P>
<P><BR>现在市场上的大多数手机均支持类似于Modem控制的GSM AT指令集,该指令集是由诺基亚、爱立信、摩托罗拉和HP等厂家共同为GSM系统研制的,其中包含了对SMS(Short Message Service)的控制。 <BR>GSM AT相关指令的介绍 <BR>与SMS有关的GSM AT指令如表1所示: </P>
<P>表1 相关的GSM AT指令<BR>对SMS的控制共有三种实现途径: <BR>Block Mode; <BR>基于AT命令的Text Mode; <BR>基于AT命令的PDU Mode。 <BR>Text Mode比较简单,多款诺基亚手机均支持该模式。西门子的手机大多只支持PDU模式,PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU已取代Block Mode,因此本文主要探讨PDU模式的发送。 <BR>计算机和手机的通信 <BR>本文以西门子 S3568i为例,介绍如何实现短信息的发送。 <BR>数据线连接 <BR>首先,通过S35/25数据线将手机与电脑串行口相连。然后,打开超级终端,选择直接串行口连接,端口参数设为19200速率、无校验、数据位8、停止位1。 <BR>红外线连接 <BR>如果使用带红外端口的计算机,可以设置与手机的无线连接。首先确认计算机红外端口已打开,并将手机的红外线和收传真/数据功能打开,对接红外端口,计算机系统托盘上应当出现一个红外设备西门子S35(如果没有安装红外监视器,则不显示)。然后,打开超级终端,选择IrDa上的串行口。 <BR>连接测试 <BR>点击超级终端工具条上的呼叫按钮,输入AT并回车,屏幕上如果出现OK则表明计算机与手机的连接成功,这时就可以输入各类GSM AT指令了。 <BR>如:查询手机厂家,输入AT+CGMI=<CR>,屏幕显示Siemens。 <BR>通常情况下,执行测试命令AT+CMGS=?<CR>,如果返回OK,表明手机支持此指令。该指令的完整语法格式如下: <BR>If PDU mode (+CMGF=0)+CMGS=<length><CR>PDU is given <ctrl-Z/ESC> <BR>如果短信息格式指令AT+CMGF返回的是0,则SMS格式为PDU模式,再执行AT+CMGS=<数据长度>命令后,手机返回“>”符号并等待输入,输入PDU数据并以^Z或Esc键结束。 <BR>如果信息发送成功,则返回OK,并显示信息号: <BR>+CMGS: <mr> <BR>如果发送失败,则返回如下信息: <BR>+CMS ERROR: <err> <BR>PDU数据格式的分析 <BR>下面通过对存储在手机中的待发信息的分析,来介绍SMS PDU的数据格式。首先,用手机写一条短信息,发送手机号码为13605696031,信息内容为“Hello World!”。通过执行AT+CMGL=2可以读出此条信息。 <BR>操作过程如下(斜体字符为响应信息,{}内为注释): <BR>AT <BR>OK <BR>AT+CMGL=2 {读未发短信息} <BR>+CMGL: 1,2,,24 {1表示信息个数,2表示未发信息,24表示信息总容量} <BR>08 91 683108501505F0 11 00 0B 81 3106656930F1 0000A7 0B E8329BFD06DDDF723619 <BR>OK <BR>下面分析这条信息: <BR>08:短信息中心地址长度。 <BR>91:短信息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外还可有其他数值,但91最常用。 <BR>683108501505F0:短信息号码,是所使用的服务中心地址。由于位置上略有处理,实际号码应为:8613805515500(字母F意指长度减1),这是作者所在地GSM短信息中心的号码。 <BR>11:文件头字节(header byte,是一种bitmask)。这里11指正常地发送短信息。 <BR>00:信息类型。 <BR>0B:被叫号码长度。 <BR>81:被叫号码类型。 <BR>3106656930F1:被叫号码,也经过了移位处理,实际号码为13605696031。 <BR>0000A7:短信息编码类型GSM Default Alphabet,如为中文则是000010。 <BR>0B:短信息长度。 <BR>E8329BFD06DDDF723619:短信息内容“Hello World!”。 <BR>短信息的编码方法及编程实现 <BR>下面我们介绍纯英文和纯中文的信息编码方法。通过测试我们发现,每条发送的短信息前面部分均相同,只是被叫号码和短信息内容有变化。 <BR>1.英文编码 <BR>参见表2,设短信息内容为“Hello World!”。缺省的GSM 字符集为7位编码,可以简单地理解为ASCII码(ASCII值小于80Hex,因此,Bit8被忽略),依次将下一7位编码的后几位逐次移至前面,形成新的8位编码,参见表2箭头指示。需要注意的是第9行,移位计数已达7位,则直接将本编码前加0。GSM并非支持所有的ASCII字符显示。 <BR>表2 英文编码的实现过程</P>
<P>下面是实现英文编码的部分Delphi 5代码: <BR>//英文格式编码,s为String <BR>function Encode1(var s:String):String; <BR>var <BR>i,j,len:Integer; <BR>cur:Integer; <BR>t:String; <BR>begin <BR>Result:=‘’; <BR>len:=Length(s); <BR>//j 用于移位计数 <BR>i:=1;j:=0; <BR>while i<=len do <BR>begin <BR>if i<len then <BR>//数据变换 <BR>cur:=(ord(s[i]) shr j) or ((ord(s[i+1]) shl (7-j)) and $ff) <BR>else <BR>cur:=(ord(s[i]) shr j) and $7f; <BR>FmtStr(t,‘%2.2X’,[cur]); <BR>Result:=Result+t; <BR>inc(i); <BR>//移位计数达到7位的特别处理 <BR>j:=(j+1) mod 7;if j=0 then inc(i); <BR>end; <BR>end; <BR>2.中文编码 <BR>参见表3,设短信息内容为“中文短信息”。中文短信息的实现较简单,只需将GB2312的中文编码转换为代码页为CP936的Unicode编码即可。 <BR>表3 中文编码的实现过程</P>
<P>通过Delphi的WideString类型转换,可以巧妙地实现GB2312到Unicode的编码转换(注意代码页和<a href="http://www.knowsky.com/query.asp?word=操作系统" target="_blank" ><span class="unnamed8"><font color="#0000FF">操作系统</font></span></a>相关联)。下面是实现中文编码的部分Delphi 5代码: <BR>// 中文格式编码,s为Unicode String <BR>function Encode2(var s:WideString):String; <BR>var <BR>i,len:Integer; <BR>cur:Integer; <BR>t:String; <BR>begin <BR>Result:=‘’; <BR>len:=Length(s); <BR>i:=1; <BR>while i<=len do <BR>begin <BR>cur:=ord(s[i]); <BR>//BCD转换 <BR>FmtStr(t,‘%4.4X’,[cur]); <BR>Result:=Result+t; <BR>inc(i); <BR>end; <BR>end; <BR>小 结 <BR>以上介绍了PDU格式的短信息编码。建议英文信息长度不超过140个字符,中文信息不要超过54个汉字。如果使用能够支持文本方式的手机进行发送,实现起来更简单。如发送“Hello World!”,用如下的AT指令即可: <BR>AT+CGMF=1<CR>AT+CGMS=“13605696031”,129<CR> <BR>>Hello World!<^Z> <BR></P></span>
<div style='visibility:hidden;width:1px;height:1px;color:white;overflow: hidden'>转自:动态网制作指南 www.knowsky.com</div>
<table width="98%" border="0" align="center" cellpadding="9" cellspacing="0">
<tr align="right">
<td> <font color="#FF0000"><b><a href="rss.asp?id=22" target="_blank"><img src="images/rss2.png" border="0"></a></b></font>
| <a href="print.asp?id=3195" target="_blank"><img src="images/print.gif" border="0"></a>
<a href="print.asp?id=3195" target="_blank"><font color="#FF0000">打印本文</font></a></td>
</tr>
<tr>
<td><span class="unnamed3">点击此处浏览</span><a href="http://www.knowsky.com/query.asp?word=SMS"><span class="unnamed8"><font color="#0000FF">全部</font></span><span class="unnamed8"><font color="#FF0000">SMS</font></span><span class="unnamed8"><font color="#0000FF">的内容</font></span></a></td>
</tr>
<tr align="center">
<td>
<table width="81%" border="0" cellpadding="0" cellspacing="0" align="center" class="Text2">
<tr align="center">
<td>
<form action=plsave.asp?newsid=3195 method=post name=form2>
<p>姓名:
<input type="text" name="name" class="unnamed5" maxlength="8" size="15">
<input type="submit" name="Submit33" value="提交评论" class="unnamed5">
<a href="plview.asp?newsid=3195&title=手机短信息SMS的程序开发" target="_blank"><font color="#0000CC">浏览全部评论
</font></a>
<textarea name="cont1" rows="5" cols="45"></textarea>
</p>
<span class="text2"><b><font color="#FF0000">授人以鱼不如授人以渔,授人以码不如授人以技
</font></b></span>
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr align="center">
<td><iframe marginwidth=0 marginheight=0 frameborder=0 bordercolor='#000000' scrolling=no src='http://partner.search.sohu.com/cpc/partner.php?pid=sayyes&type=10' width=590 height=105></iframe></td>
</tr>
</table>
</div>
</div>
</td>
<td width="185" height="138" valign="top" bgcolor="#EAEAEA"><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr bgcolor="#007ece">
<td height="26"> <img src="images/01_right_icon_02.gif" width="18" height="18">
<font color="#FFFFFF" class="t14"><b>搜索相关内容</b></font> </td>
</tr>
<tr>
<td background="images/title_blue.jpg" height="5"><img src="images/blank.gif" width="1" height="1"></td>
</tr>
</table>
<div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="6" align="center">
<form method="get" action="http://www.google.com/custom" target="_blank">
<tr align="center">
<td height="10">
<input maxlength=2048 size=18 name=q>
</td>
</tr>
<tr align="center">
<td height="10">
<div align="center">
<input type="hidden" name="sitesearch" value="www.knowsky.com">
<input type="hidden" name="domains" value="www.knowsky.com">
<input type="hidden" name="client" value="pub-5069998594260847">
<input type="hidden" name="forid" value="1">
<input type="hidden" name="ie" value="GB2312">
<input type="hidden" name="oe" value="GB2312">
<input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1;">
<input type="hidden" name="hl" value="zh-CN">
<font size=-1>
<select name="sss">
<option value="1" selected>按文章标题</option>
<option value="2">按文章内容</option>
</select>
<input type=submit value=搜索 name=sa>
</font></div>
</td>
</tr>
</form>
</table>
<iframe id="baiduframe" border="0" vspace="0" hspace="0" marginwidth="0" marginheight="0"
framespacing="0" frameborder="0" scrolling="no" width="140" height="75"
src="http://unstat.baidu.com/bdun.bsc?tn=sayyes&cv=1&cid=4431&csid=105&rkcs=2&bgcr=EAEAEA&ftcr=000000&rk=1&bd=0&bdas=0">
</iframe> </div>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr bgcolor="#007ece">
<td height="26"> <img src="images/01_right_icon_04.gif" width="18" height="18">
<font color="#FFFFFF" class="t14"><b>最新文章</b></font> </td>
</tr>
<tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -