中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
短消息服务(SMS)编程介绍
作者:陶刚 时间:2006-09-30 13:11 出处:ccidnet.com 责编:月夜寒箫
              摘要:短消息服务(SMS)编程介绍

短消息服务与Pocket PC Phone Edition

短消息服务是在移动通讯全球系统(Global System for Mobile Communications networks ,GSM)中的移动电话间发送短字母-数字消息(最长160个字符)的标准。它有些象分页技术,但是使用文本,目前的多数电话支持短消息服务。

短消息服务的一个关键特性是通过移动网络操作员的网络立即发送的消息,不需要手工连接到Internet服务提供商(Internet Service Provider,ISP)--SMS消息都是立即发送的,而电子邮件需要接收者从邮件服务器上检索。同样,接收者如果不在线--如果电话关闭了--SMS消息存储在操作者那儿,在电话再次打开时发送。

在Pocket PC 2002 Phone Edition设备上,你能象处理电子邮件消息一样处理SMS消息。SMS消息组件与标准收件箱应用程序集成了,允许象发送和接收电子邮件一样发送和接收消息。你甚至可以把电子邮件作为SMS消息转发和回复。

 

可激活短消息服务的应用程序

许多商业情况涉及一些类型的通知,SMS是一条实现多种商业事件通知的强大的途径。可能的情况是销售人员通知服务工程师客户需要某种服务,服务工程师在用户那儿通知执行重要的商业事件,或者执行人员通知所有与客户相关的人员新客户的处理测试。

使用SMS的另一个好处是实现移动商务(m-commerce),SMS通常用于处理支付事务。例程开始将演示怎样从Pocket PC 2002 Phone Edition设备发送SMS消息。

 

发送短消息服务例子

使用微软嵌入式Visual Basic的例子:

图1.SMS例程

 

在这个窗体中,你能输入一个国际移动电话号码和一条文本消息。点击Send按钮时,消息就发送了--就这么简单。

 

编码过程

下面是发送SMS消息核心代码。首先需要定义一些微软Windows API:

l 一个API打开SMS消息组件

l 一个API发送SMS消息

l 一个API关闭SMS消息组件

Public Declare Function SmsOpen Lib "SMS" (ByVal ptsMessageProtocol
            As String, ByVal dwMessageModes As Long, ByRef psmshHandle As
            Long, ByRef phMessageAvailableEvent As Long) As Long
            Public Declare Function SmsSendMessage Lib "SMS" (ByVal smshHandle
            As Long, ByVal psmsaSMSCAddress As Long, ByVal
            psmsaDestinationAddress As String, ByVal pstValidityPeriod As
            Long, ByVal pbData As String, ByVal dwDataSize As Long, ByVal
            pbProviderSpecificData As String, ByVal dwProviderSpecificDataSize
            As Long, ByVal smsdeDataEncoding As Long, ByVal dwOptions As Long,
            ByRef psmsmidMessageID As Long) As Long
            Public Declare Function SmsClose Lib "SMS" (ByVal smshHandle As Long) As Long

你也需要为不同的API声明一些API常数:

Public Const SMS_MSGTYPE_TEXT = "Microsoft Text SMS Protocol"
            Public Const SMS_MODE_SEND = 2            '用发送模式打开
            Public Const SMSDE_GSM = 1                '使用标准GSM
            encoding
            Public Const SMSAT_INTERNATIONAL = 1      ' 国际号码
            format
            Public Const PS_MESSAGE_OPTION_NONE = 0   ' 没有消息选项
            Public Const PS_MESSAGE_CLASS0 = 0        ' 立即发送
            Public Const PSRO_NONE = 0                '没有更替
            Public Const SMS_OPTION_DELIVERY_NONE = 0 ' 没有发送选项

下面是发送SMS消息的完整代码:

Public Sub SendSMS(ByVal Number As String, ByVal Message As String)
            Dim SMSHandle As Long
            Dim SMSEvent As Long
            Dim SMSAddress As String
            Dim SMSProvider As String
            '打开SMS消息组件
            Call SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, SMSHandle, SMSEvent)
            '设置地址结构体
            SMSAddress = LongToBytes(SMSAT_INTERNATIONAL) & Number
            '设置提供者结构体
            SMSProvider = LongToBytes(PS_MESSAGE_OPTION_NONE) & _
            LongToBytes(PS_MESSAGE_CLASS0) & _
            LongToBytes(PSRO_NONE)
            '发送消息
            If 0 = SmsSendMessage(SMSHandle, 0, SMSAddress, 0, Message, _
            LenB(Message), SMSProvider, 12, SMSDE_GSM, _
            SMS_OPTION_DELIVERY_NONE, 0) Then
            MsgBox "Message sent!", vbInformation, App.Title
            Else
            MsgBox "Could not send message!", vbCritical, App.Title
            End If
            '关闭SMS消息组件
            Call SmsClose(SMSHandle)
            End Sub

 

首先SMS消息组件被打开(SmsOpen),它的句柄被保存(SMSHandle)。调用SMS API时该句柄是必须的。

调用SmsSendMessage时需要一些结构体或者UDT(用户定义类型)。因为嵌入式Visual Basic缺乏对UDT的支持,简单字符串用于模拟结构体。

第一个是包含SMS消息地址的结构体。地址结构体包含支持的号码类型以及号码本身。下一个结构体是关于服务提供者的一些选项。该结构体的第一部分指示没有选择特定的项,第二部分显示消息必须立即发送,最后的部分规定不能替换。

在发送消息(SmsSendMessage)的调用中,提供了准备好的结构体、消息文本和一些选项。最后,句柄被关闭(SmsClose)。

 

结论

SMS对于短小及时的文本通知有很大用处。在Pocket PC 2002 Phone Edition的支持下,你可以使应用程序"SMS自唤醒"。使用例程的代码,大部分需要的操作完成了。如果你接受移动世界,按照通讯机制和协议,更多是使用"并且"而不是"或者",你能按需求使用任意选项。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有