用户名: 密码: 验证码:           网站地图  高级搜索  RSS订阅  收藏本站
您的位置:主页 > 程序编程 > 移动开发 >

设计Pocket PC短消息服务简介

[ 来源: | 作者:TAOG | 更新日期:2008-5-28 09:47:55 | 人气: | 评论 0 条 ]


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

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

复制于jc567.cn

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

007网络教程网

 

hot007.com

  可激活短消息服务的应用程序 007网络教程网

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

www.hot007.com

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

007网络教程网

  hot007.com

  发送短消息服务例子 复制于jc567.cn

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

007网络教程网

 

www.jc567.cn


图1.SMS例程 复制于hot007.com

  文章来源于www.jc567.cn

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

www.jc567.cn

 

www.hot007.com

  编码过程 文章来源于www.hot007.com

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

007网络教程网

   一个API打开SMS消息组件 www.jc567.cn

   一个API发送SMS消息 www.hot007.com

   一个API关闭SMS消息组件 文章来源于www.hot007.com

Public Declare Function SmsOpen Lib "SMS" (ByVal ptsMessageProtocol
As String, ByVal dwMessageModes As Long, ByRef psmshHandle As
Long, ByRef phMessageAvailableEvent As Long) As Long www.hot007.com

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 hot007.com

Public Declare Function SmsClose Lib "SMS" (ByVal smshHandle As Long) As Long

jc567.cn

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

jc567.cn

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消息的完整代码:

文章来源于www.hot007.com

Public Sub SendSMS(ByVal Number As String, ByVal Message As String) 文章来源于www.hot007.com

Dim SMSHandle As Long
Dim SMSEvent As Long
Dim SMSAddress As String
Dim SMSProvider As String

复制于hot007.com

'打开SMS消息组件
Call SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, SMSHandle, SMSEvent) 文章来源于www.jc567.cn

'设置地址结构体
SMSAddress = LongToBytes(SMSAT_INTERNATIONAL) & Number 007网络教程网

'设置提供者结构体
SMSProvider = LongToBytes(PS_MESSAGE_OPTION_NONE) & _
LongToBytes(PS_MESSAGE_CLASS0) & _
LongToBytes(PSRO_NONE)

文章来源于www.jc567.cn

'发送消息
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 文章来源于www.hot007.com

'关闭SMS消息组件
Call SmsClose(SMSHandle) 复制于hot007.com

End Sub
文章来源于www.jc567.cn

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

复制于hot007.com

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

文章来源于www.hot007.com

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

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

  结论 www.hot007.com

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


Tags:设计Pocket,PC短消息服务简介
您的评论
用户名: 新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为