您的位置:首页精文荟萃软件资讯 → Pocket PC Phone Edition SMS编程入门

Pocket PC Phone Edition SMS编程入门

时间:2004/10/8 13:14:00来源:本站整理作者:蓝点我要评论(0)

适用于:
    Pocket PC 2002 Phone Edition
    微软® eMbedded Visual Tools
下载本文代码Introapp.exe


 



SMS和Pocket PC Phone Edition
 
短消息服务(SMS)是在全球移动通信网络(GSM)的移动电话之间发送简短的字母和数字消息(最大160个字符)的标准。它和传呼机的工作方式很相象,但是它带有文本,而且当今大多数的移动电话都支持SMS。


SMS的一个关键方面是,信息通过移动网络运营商的网络即时发送,而不要手动连接到Internet服务提供商(Internet Service Provider)——SMS信息是即时发送的,而电子邮件需要接收者在邮件服务器上接收。而且,如果接收者不在线的话——例如电话关机——SMS信息会被保存在运营商(的服务器上),并在电话再次开机的时候转发出去。


在装有Pocket PC 2002 Phone Edition的设备上,你可以像管理电子邮件信息一样管理SMS消息。SMS消息组件同标准的收件箱(Inbox)应用程序集成在一起,这就让你能够像发送和接收电子邮件一样发送和接收短消息。你甚至能够将电子邮件作为SMS消息转发和回复,反过来也可以。


支持SMS的应用程序
很多商业情景都需要某种形式的通知,而SMS是实现用于各种商业事件的通知的极好方法。它可以是销售人员告知服务工程师某个客户需要服务,也可以是服务工程师将客户的一个重要商业事件告知执行人员,或者是执行人员将新的客户处理规程通知所有同该客户相关的职员。


SMS另一个有意思的用途是能够使移动商务(mobile commerce,m-commerce)成为可能,因为SMS常常被用来处理支付交易。为了让你有个初步的了解,我们会在下面的例子里向你演示如何利用你的Pocket PC 2002 Phone Edition设备发送SMS信息。


SMS发送示例
一个使用微软® eMbedded Visual Basic®的简单窗体:


 



图1:SMS应用程序示例


在这个窗体里,你可以输入一个国际移动电话的号码以及一条文本信息。当你点击“发送(Send)”按钮的时候,信息就被发送出去了——就这么简单!


示例代码
现在让我们来看看用于发送SMS信息的核心代码。首先,你需要声明多个微软Windows®的API:


一个用于打开SMS信息组件
一个用于发送SMS信息
一个用于关闭SMS信息组件


Public Declare Function SmsOpen Lib "SMS" (ByValptsMessageProtocol As String, ByValdwMessageModes As Long, ByRefpsmshHandle As Long, ByRefphMessageAvailableEvent As Long) As Long


Public Declare Function SmsSendMessage Lib "SMS" (ByValsmshHandle As Long, ByValpsmsaSMSCAddress As Long, ByVal psmsaDestinationAddress As String, ByValpstValidityPeriod As Long, ByValpbData As String, ByValdwDataSize As Long, ByVal pbProviderSpecificData As String, ByValdwProviderSpecificDataSize As Long, ByValsmsdeDataEncoding As Long, ByValdwOptions As Long,ByRefpsmsmidMessageID As Long) As Long


Public Declare Function SmsClose Lib "SMS" (ByValsmshHandle 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 SMSHandleAs Long


  Dim SMSEventAs Long


  Dim SMSAddressAs String


  Dim SMSProviderAs 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的时候需要这个句柄。


准备调用SmsSendMessage的时候需要多个结构或者UDT(用户定义的类型)。由于eMbedded Visual Basic缺乏对UDT的支持,所以会有一个简单的字符串用来仿真一个结构。


第一个是一个包含有SMS信息地址的结构。这个地址结构包含有一个指示器,用来表示提供的是什么类型的号码(在这个是一个国际号码)以及这个号码自身。


下一个结构包含有同服务提供商相关的各种选项。这个结构的第一部分表示没有特别的选项被选中,第二部分表示这条信息应该被立即发送。


最后一部分声明:不应该做出替换。


在对发送该信息(SmsSendMessage)的调用中,会提供已经准备好的结构,以及信息文本和多个选项。最后,这个句柄被关闭(SmsClose)。


要获得完整的例子,请参见本文的示例代码。此外,在Antonio Paneiro的文章《VBCE里的UDT(用户定义的类型)》里,你可以读到更多关于这个技术的内容。


结束语
SMS是发送短小和即时文本通知的好方法。随着Pocket PC 2002 Phone Edition对它的支持,你将能够让你的程序“识别SMS”。有了本例里的示例代码,你就了解了你该做什么。如果接受这样一种观点,即移动世界,用移动通信机制和协议的话来说,是“和(both/and)”而不是“或(or/else)”的,那么你就能够真正地用好每个选项。


 


 


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本