首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> 移动短信技术 -> 在PC上通过手机发送短消息(续篇)  
在PC上通过手机发送短消息(续篇)


文章类别:移动短信技术 来源: 作者: 发表日期:2005-10-4 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

        写完<<在PC上通过手机发送短消息>>后,就打算接着写中文短信息的发送的,可是毕业论文时间实在太紧,一直耽搁下来了,这几天陆续有几个网友给我发邮件,关注这个话题的网友也比较多,而且CSDN邮件期刊也将我的那一篇文章收录进来了,我感到十分的欣慰,同时也觉得应该尽快完成我未完成的工作,要不然太对不起大家了.


       使用Text模式收发短信代码简单,实现起来十分容易,但是最大的缺点是不能收发中文短信,实在是有点美中不足.不过Pdu模式完全可以解决这个问题,Pdu模式不仅支持中文短信,也能发送英文短信,堪称完美无缺.Pdu模式收发短信可以使用三种编码: 7-bit、8-bit和UCS2编码. 7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。我们要实现中文短信的发送,所以选择UCS2,即中文Unicode码.


      首先介绍一下VB中的两个函数:ChrW()和AscW().对于Chr()和Asc()函数大家一定很熟悉,对于ChrW()和AscW()可能会比较生疏一点. ChrW 函数返回包含 Unicode 的 String,若在不支持 Unicode 的平台上,则其功能与 Chr 函数相同; AscW 函数返回 Unicode 字符代码,若平台不支持 Unicode,则与 Asc 函数功能相同。对于这两个函数我们各举一个例子说明:
       ?ascw("短")
      30701
      ?chrw(26482)
      杲


      可见这两个函数可以实现中文和Unicode码之间的转换,对于我们编码解码十分方便.我们得到中文的Unicode码之后,就可以编制Pdu串了.


       我们再了解一下Pdu串的构成,我们看这样一个Pdu串(我调试程序时采用): 0891683110301405F011000D91683159717456F4000800165982679C6536523077ED4FE1

002C8BF756DE590D002E.我们将其分解为:


08 SMSC地址信息的长度(91683110301405F0共八位字节)
91 SMSC地址格式(TON/NPI)
683110301405F0  SMSC地址(8613010341500南京的短信服务中心号码)
11 基本参数(TP-MTI/VFP)( 发送,接收为84)
00 MR Message Reference
0D 目标SIM卡号码长度(683159717456F4按阿拉伯数字个数计)
91 同上
683159717456F4  对方手机SIM卡号(8613057575064)
00 普通GSM类型,点到点方式
08  UCS2编码
00 有效期
16  用户信息长度(5982679C6536523077ED4FE1002C8BF756DE590D002E的长度共22为字节)
5982679C6536523077ED4FE1002C8BF756DE590D002E(“如果收到短信,请回复.”Unicode码)
 

      Pdu码的构成我们已经了解后,我们就可以开始编码了,上面的红色部分就是我们要编码实现的.


         首先看SMSC地址: 683110301405F0与8613010341500F(SMSC最后一位补F构成14位),我们可以发现只需将奇偶位对调即可.同样道理: 683159717456F4与8613057575064也是一样的处理.


       对于用户信息长度,我们可以通过VB里的Len函数得到,例如”你好”,我们用Len(“你好”)得到2,那么2*2=4即为用户信息长度04(这里要转换为16进制,并且是两位).对于Unicode码,我们可以通过AscW()函数一个一个汉字取出其Unicode码即可得到.


        下面给出短信发送的具体实现代码(相关知识可参见前一篇文章):
        If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
        Length=Len(“如果收到短信,请回复.”)*2
        MSComm1.Output = "AT+CMGF=0" + vbCr ‘以Pdu模式发送短信
        MSComm1.Output = "AT+CMGS=" & Str(15 + length * 2) + vbCr
       MSComm1.Output= “0891683110301405F011000D91683159717456F4000800165982679C6536523077ED

4FE1002C8BF756DE590D002E” & Chr$(26)

       start = Timer
       pause =1
       While Timer < start + pause
         DoEvents
       Wend   
       reco = MSComm1.Input
      If InStr(reco, "OK") Then sendsms = True
      If InStr(reco, "ERROR") Then sendsms = False
       MSComm1.Output = "AT+CMGS=" & Str(15 + length * 2) + vbCr中的15为 11000D91683159717456F400080016的位数.length*2为5982679C6536523077ED4FE1002C8BF756DE590D002E的位数.


      到这里,短信的发送基本完成,短信的接收更简单一点,主要是解码,就是应用ChrW()函数了.写完这篇文章,才算送了一口气,算是对大家有个交待吧,感谢大家的关注.如果需要源代码,可以给我发邮件 :tmjpd@21cn.com.

 

上一篇:短信息不是垃圾邮件 手机短信渐成商家营销法宝 下一篇:利用XMLHTTP 从其他页面获取数据
本栏目热门文章
·手机短信息SMS的程序开发 2005-10-4
·SMS开发的资料包 2005-10-4
·基于CMPP3.0的企业短信网关API设计 2005-10-4
·编写SMS程序入门 2005-10-4
·基于短信网关WAP推送的实现 2005-10-4
·对于开发SMS初学者的,经常用到的几个函数。 2005-10-4
·各网关厂商API接口 2005-10-4
·基于CMPP2及东软API短信平台的开 2005-10-4
·SmartPhone手机上查看QQ天气预报 2005-10-4
·移动业务代码规范方案 2005-10-4
新近更新文章
·免费实用!3步搞定电邮手机推送! 2006-3-8
·MIDP游戏开发中处理文字的换行方案 2005-10-12
·MIDP2.0手机上手电筒程序的实现 2005-10-6
·基于短信网关WAP推送的实现 2005-10-4
·基于CMPP3.0的企业短信网关API设计 2005-10-4
·SmartPhone手机上查看QQ天气预报 2005-10-4
·Windows CE下驱动程序开发基础 2005-10-4
·基于CMPP2及东软API短信平台的开 2005-10-4
·用J2ME的通用联网框架开发联网的应用程序 2005-10-4
·利用J2ME在移动设备上实现动画的解决方案 2005-10-4
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: