代码:--------------------------------------------------------------------------------

目前手机短信息的应用越来越广泛,互联网上提供短信息发送的站点也越来越多,但一些站点的服务并不尽如人意,往往发出去的短信息石沉大海。最可靠的发送方法当然是用手中的手机了,如果设置了状态报告,更能确切知道对方是否收到了此条信息。手机发送尽管比较可靠, 但也存在输入麻烦、效率低的问题。本文介绍一种方法,只要手机能够与电脑相连(通过红外端口或用手机数据线连接串行口,同时手机支持GSM AT指令集),就可以通过自行编制的短信息发送软件,实现短信息的发送。

现在市场上的大多数手机均支持类似于Modem控制的GSM AT指令集,该指令集是由诺基亚、爱立信、摩托罗拉和HP等厂家共同为GSM系统研制的,其中包含了对SMS(Short Message Service)的控制。

GSM AT相关指令的介绍

与SMS有关的GSM AT指令如表1所示:

http://www.gaodaima.com/45137.html转一个手机开发的帖子(来自开发者俱乐_php

表1 相关的GSM AT指令

对SMS的控制共有三种实现途径:

Block Mode;

基于AT命令的Text Mode;

基于AT命令的PDU Mode。

Text Mode比较简单,多款诺基亚手机均支持该模式。西门子的手机大多只支持PDU模式,PDU模式是发送或接收手机SMS信息的一种方法,短信息正文经过十六进制编码后被传送。目前,PDU已取代Block Mode,因此本文主要探讨PDU模式的发送。

计算机和手机的通信

本文以西门子 S3568i为例,介绍如何实现短信息的发送。

数据线连接

首先,通过S35/25数据线将手机与电脑串行口相连。然后,打开超级终端,选择直接串行口连接,端口参数设为19200速率、无校验、数据位8、停止位1。

红外线连接

如果使用带红外端口的计算机,可以设置与手机的无线连接。首先确认计算机红外端口已打开,并将手机的红外线和收传真/数据功能打开,对接红外端口,计算机系统托盘上应当出现一个红外设备西门子S35(如果没有安装红外监视器,则不显示)。然后,打开超级终端,选择IrDa上的串行口。

连接测试

点击超级终端工具条上的呼叫按钮,输入AT并回车,屏幕上如果出现OK则表明计算机与手机的连接成功,这时就可以输入各类GSM AT指令了。

如:查询手机厂家,输入AT+CGMI=,屏幕显示Siemens。

通常情况下,执行测试命令AT+CMGS=?,如果返回OK,表明手机支持此指令。该指令的完整语法格式如下:

If PDU mode (+CMGF=0)+CMGS=PDU is given

如果短信息格式指令AT+CMGF返回的是0,则SMS格式为PDU模式,再执行AT+CMGS=命令后,手机返回“>”符号并等待输入,输入PDU数据并以^Z或Esc键结束。

如果信息发送成功,则返回OK,并显示信息号:

+CMGS:

如果发送失败,则返回如下信息:

+CMS ERROR:

PDU数据格式的分析

下面通过对存储在手机中的待发信息的分析,来介绍SMS PDU的数据格式。首先,用手机写一条短信息,发送手机号码为13605696031,信息内容为“Hello World!”。通过执行AT+CMGL=2可以读出此条信息。

操作过程如下(斜体字符为响应信息,{}内为注释):

AT

OK

AT+CMGL=2 {读未发短信息}

+CMGL: 1,2,,24 {1表示信息个数,2表示未发信息,24表示信息总容量}

08 91 683108501505F0 11 00 0B 81 3106656930F1 0000A7 0B E8329BFD06DDDF723619

OK

下面分析这条信息:

08:短信息中心地址长度。

91:短信息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加‘+’号;此外还可有其他数值,但91最常用。

683108501505F0:短信息号码,是所使用的服务中心地址。由于位置上略有处理,实际号码应为:8613805515500(字母F意指长度减1),这是作者所在地GSM短信息中心的号码。

11:文件头字节(header byte,是一种bitmask)。这里11指正常地发送短信息。

00:信息类型。

0B:被叫号码长度。

81:被叫号码类型。

3106656930F1:被叫号码,也经过了移位处理,实际号码为13605696031。

0000A7:短信息编码类型GSM Default Alphabet,如为中文则是000010。

0B:短信息长度。

E8329BFD06DDDF723619:短信息内容“Hello World!”。

短信息的编码方法及编程实现

下面我们介绍纯英文和纯中文的信息编码方法。通过测试我们发现,每条发送的短信息前面部分均相同,只是被叫号码和短信息内容有变化。

1.英文编码

参见表2,设短信息内容为“Hello World!”。缺省的GSM 字符集为7位编码,可以简单地理解为ASCII码(ASCII值小于80Hex,因此,Bit8被忽略),依次将下一7位编码的后几位逐次移至前面,形成新的8位编码,参见表2箭头指示。需要注意的是第9行,移位计数已达7位,则直接将本编码前加0。GSM并非支持所有的ASCII字符显示。

表2 英文编码的实现过程

下面是实现英文编码的部分Delphi 5代码:

//英文格式编码,s为String

function Encode1(var s:String):String;

var

i,j,len:Integer;

cur:Integer;

t:String;

begin

Result:=‘’;

len:=Length(s);

//j 用于移位计数

i:=1;j:=0;

while i<=len do

begin

if i

//数据变换

cur:=(ord(s[i]) shr j) or ((ord(s[i+1]) shl (7-j)) and $ff)

else

cur:=(ord(s[i]) shr j) and $7f;

FmtStr(t,‘%2.2X’,[cur]);

Result:=Result+t;

inc(i);

//移位计数达到7位的特别处理

j:=(j+1) mod 7;if j=0 then inc(i);

end;

end;

2.中文编码

参见表3,设短信息内容为“中文短信息”。中文短信息的实现较简单,只需将??????的中文编码转换为代码页为CP936的Unicode编码即可。

表3 中文编码的实现过程

通过Delphi的WideString类型转换,可以巧妙地实现??????到Unicode的编码转换(注意代码页和操作系统相关联)。下面是实现中文编码的部分Delphi 5代码:

// 中文格式编码,s为Unicode String

function Encode2(var s:WideString):String;

var

i,len:Integer;

cur:Integer;

t:String;

begin

Result:=‘’;

len:=Length(s);

i:=1;

while i<=len do

begin

cur:=ord(s[i]);

//BCD转换

FmtStr(t,‘%4.4X’,[cur]);

Result:=Result+t;

inc(i);

end;

end;

小 结

以上介绍了PDU格式的短信息编码。建议英文信息长度不超过140个字符,中文信息不要超过54个汉字。如果使用能够支持文本方式的手机进行发送,实现起来更简单。如发送“Hello World!”,用如下的AT指令即可:

AT+CGMF=1AT+CGMS=“13605696031”,129

>Hello World!

欢迎大家阅读《转一个手机开发的帖子(来自开发者俱乐_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

手机连接php代码,转一个手机开发的帖子(来自开发者俱乐_php相关推荐

  1. android手机win桌面图标,安卓手机连接win10电脑无法显示手机图标怎么办

    有用户在将安卓 1.通过数据线连接自己的手机和笔记本电脑,发现我的电脑里面根本不显示移动盘: 2.然后大家可以试着右键桌面上的我的电脑的图标,找到管理,进入计算机管理.在系统工具下面,有一个设备管理器 ...

  2. win10怎么连接android手机,安卓手机连接win10电脑无法显示手机图标怎么办

    有win10系统用户在将安卓手机连接电脑之后,发现电脑无法显示手机图标,而且找不到盘符或移动盘的标志,遇到这样的问题该怎么办呢,现在为大家分享一下安卓手机连接win10电脑无法显示手机图标的具体解决方 ...

  3. 锤子手机便签导入另一个手机云便签中怎么操作?

    锤子手机便签导入另一个手机云便签中怎么操作? 由于锤子手机自带的便签内容不支持授权一键批量导出到第三方软件中,所以锤子手机便签内容需要手动导入到敬业签云便签中,可参考以下方法进行操作: 一.锤子手机便 ...

  4. 手机连接投影机的步骤_手机怎么连接投影仪?这几招实用

    智能手机不论功能多强大,都只局限在几寸小小的屏幕上,一旦连上投影,小屏变大屏,不仅可以享受大屏视觉盛宴,还可以和家人朋友分享快乐.投影仪连接手机使用正成为一种趋势.但是很多消费者买了投影仪却不知如何连 ...

  5. 手机连接投影机的步骤_手机连接投影机的步骤(投影仪无线网连接步骤)

    现在手机连接投影,最普遍的解决方案是通过无线同屏. 比如iPhone是有一个AirPlay的功能,只要你的投影能适应这个信号,连接起来就超级方便.只要在iPhone端操作,选择对应的投影机端口,咔咔几 ...

  6. 手机连接服务器传文件夹,手机连接云服务器文件夹

    手机连接云服务器文件夹 内容精选 换一换 本节操作介绍本地MacOS系统主机通过安装"Microsoft Remote Desktop for Mac"工具向Windows云服务器 ...

  7. 手机连接服务器传文件夹,手机连接云服务器文件夹吗

    手机连接云服务器文件夹吗 内容精选 换一换 本节操作介绍本地MacOS系统主机通过安装"Microsoft Remote Desktop for Mac"工具向Windows云服务 ...

  8. 手机连接电脑linux系统怎么样,手机怎么远程连接电脑

    手机怎么远程连接电脑 不知道你有没有这样的需求,没带电脑的时候,需要查找电脑的文件或资料,或者要操作自己的电脑处理一些事情,有办法实现吗? 答案是肯定的,只要在电脑端和手机端分别安装一个软件,就可以实 ...

  9. 手机连接蓝牙扫码枪_原来手机蓝牙的隐藏功能这么多,你不会还只用来连接耳机吧?...

    大家好,这里是"黑科技中心",今天小黑所说的是关于我们手机蓝牙的功能.手机蓝牙是我们日常生活中经常需要用到的,许多人用蓝牙,仅仅只是连接蓝牙那么简单,其实我们手机蓝牙的功能和用途是 ...

最新文章

  1. 服务器维护:FTP无法连接
  2. xBIM 基础16 IFC的空间层次结构
  3. Python 创建用户界面之 PyQt5 的使用
  4. 解决MMC不能打开文件MSC文件(转)
  5. 快来一起玩转LiteOS组件:RHas
  6. Java学习笔记基础(上)
  7. 对 SharePoint WebService 的调用
  8. asp.net 获取当月的第一天和最后一天示例
  9. Un*、IdL分别突变情况下双闭环直流调速系统仿真
  10. 一个很好的多代理服务器调度软件-ProxyExpert(绿色软件) - 『 软件使用交流 』 - 赢政天下 - YingZheng.com - Powered by Discuz!...
  11. 多核处理器互联网络拓扑结构
  12. 【python】使用jieba分词并导出txt
  13. 【教程】创建活动报名二维码(活动报名/会议签到扫码,带微信手机号认证)
  14. MySQL单表数据量过大的处理方式经验
  15. FlashFXP用到的功能
  16. 4-adjacent
  17. 股指期货、股指期权与股票有何不同?
  18. torch实现ESIM算法
  19. 常用插接件2(DC 电源插头)
  20. 【MySQL8入门到精通】运维篇-SQL实战(100道题库)

热门文章

  1. Android Studio的相关设置
  2. osg火焰爆炸烟火粒子效果
  3. Tomcat架构--知其然,知其所以然
  4. 在学习python的过程中,遇到的最大的困难是什么?
  5. linux wget返回值_Linux中curl命令和wget命令的使用介绍与比较
  6. python爬虫(二十四)爬取汽车之家某品牌图片
  7. 网络加速原理与方法:静态CDN、动态CDN、全站加速、GAAP、AIA、CLB跨地域部署
  8. C++PRIMER 学习笔记
  9. 湖南文旅数据中心:湖南文旅数据早知道(9月2日)
  10. 给konva加个刻度尺