使用 SMS 编程的应用程序介绍

Microsoft Corporation

适用于:
Pocket PC 2002 Phone Edition
Microsoft® eMbedded Visual 工具

摘要:学习如何通过 eMbedded Visual Basic 应用程序发送 SMS 消息。当生成应用程序时,利用 Pocket PC 2002 Phone Edition 对 SMS(短消息服务)的可靠支持。

Introapp.exe

本页内容

SMS 和 Pocket PC Phone Edition SMS 和 Pocket PC Phone Edition
支持 SMS 的应用程序 支持 SMS 的应用程序
发送 SMS 示例 发送 SMS 示例
代码演练 代码演练
小结 小结

SMS 和 Pocket PC Phone Edition

短消息服务是一种标准,用于在全球移动通讯系统 (GSM) 网络中的移动电话之间发送字母数字短消息(最长为 160 个字符)。它与寻呼的工作方式非常相似,但使用的是文本,目前大多数电话都支持 SMS。

SMS 的一个关键特性为:消息是通过移动网络操作员的网络即时发送的,无需手动连接到 Internet 服务提供商 — SMS 消息是即时发送的,而电子邮件需要由接收者从电子邮件服务器上检索。此外,如果接收者不在线上(如果电话已关闭),SMS 消息便会存储在操作员那里,当电话再次打开时进行转发。

在 Pocket PC 2002 Phone Edition 设备上,您可以采取与管理电子邮件几乎相同的方式来管理 SMS 消息。SMS 消息处理组件与标准的收件箱应用程序集成,允许您采取与接发电子邮件相同的方式来接发消息。您甚至可以将电子邮件作为 SMS 消息进行转发和回复,反之亦然。

支持 SMS 的应用程序

很多商业方案会涉及某种类别的通知,而 SMS 是实现各种商业事件通知的极佳方法。它可能是销售人员通知服务工程师某个客户需要服务,服务工程师通知主管人员客户那里所发生的重要商业事件,或者主管人员通知与该客户相关的所有员工关于新的客户处理例程。

SMS 的另一个有趣的用途就是实现移动商务 (m-commerce),SMS 通常用于处理支付事务。为了使您快速入门,我们将向您展示如何从 Pocket PC 2002 Phone Edition 设备发送 SMS 消息,如以下示例所示。

发送 SMS 示例

使用 Microsoft eMbedded Visual Basic 的简单窗体:

introappprogsms_fig1

1. SMS 示例应用程序

在此窗体中,您可以输入国际移动电话号码和文本消息。当您点击“Send”按钮后,消息就发送出去了,就是这么简单!

代码演练

让我们看一下用于发送 SMS 消息的代码核心部分。首先,您需要声明很多 Microsoft Windows API:

  • 一个用于打开 SMS 消息处理组件

  • 一个用于发送 SMS 消息

  • 一个用于关闭 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            ' Open in send mode
Public Const SMSDE_GSM = 1                ' Use standard GSM
  encoding
Public Const SMSAT_INTERNATIONAL = 1      ' International number
  format
Public Const PS_MESSAGE_OPTION_NONE = 0   ' No message options
Public Const PS_MESSAGE_CLASS0 = 0        ' Send immediately
Public Const PSRO_NONE = 0                ' No replacements
Public Const SMS_OPTION_DELIVERY_NONE = 0 ' No delivery options
以下是发送 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

  ' Open SMS Messaging Component
  Call SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, SMSHandle, SMSEvent)

  ' Set Address structure (UDT as string)
  SMSAddress = LongToBytes(SMSAT_INTERNATIONAL) & Number

  ' Set Provider structure (UDT as string)
  SMSProvider = LongToBytes(PS_MESSAGE_OPTION_NONE) & _
                LongToBytes(PS_MESSAGE_CLASS0) & _
                LongToBytes(PSRO_NONE)

  ' Send message
  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

  ' Close SMS Messaging Component
  Call SmsClose(SMSHandle)

End Sub

首先,打开 SMS 消息处理组件 (SmsOpen),并保存其句柄 (SMSHandle)。需要该句柄来调用其他 SMS API。

需要准备很多结构或 UDT(用户定义类型),以便调用 SmsSendMessage。因为 eMbedded Visual Basic 不支持 UDT,所以使用简单的字符串来模拟某个结构。

首先是包含 SMS 消息地址的结构。该地址结构包含的指示器,用来表示所提供的号码类型(在本例中为国际号码)和号码本身。

其次是包含关于服务提供商的各种选项的结构。该结构的第一部分指示没有选择特殊的选项,而第二部分指示应该立即发送消息。

最后一部分表明不应该进行任何替换。

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

要获得完整的示例,请参阅本文的示例代码。您还可以在 Antonio Paneiro 的文章 UDTs (User Defined Types) with VBCE 中获得有关该技术的更多内容。

小结

SMS 非常适用于短小且即时的文本通知。利用 Pocket PC 2002 Phone Edition 中提供的支持,您将能够使应用程序“可识别 SMS”。利用本例提供的示例代码,您可以完成需要完成的大部分任务。如果您全面接受(而不是部分接受)移动世界中的通讯机制与协议,则可以在适用时有计划地使用每个选项。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值