pocketflow_Pocket PC Phone Edition SMS编程入门

更新时间:2017-10-20 来源:编程 点击:

【www.hzclsc.cn--编程】

适用于:
    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)”的,那么你就能够真正地用好每个选项。


 


 


本文来源:http://www.hzclsc.cn/ruanjianzixun/2795.html

为您推荐

制作电音的软件|电音创作软件KORG将于明年登录Switch

如果你经常关注我们对任天堂Switch的报道,你可能还记得有家公司正在为Switch制作学习编程的软件,接下来要告诉各位,Switch不单可以用来编程,而且还可以作曲!日本知名的电子音乐作曲工作站软件游戏资讯

2020-12-05 17:04:48   做电音的软件   电音软件手机版  

【支付宝小程序在哪里找】支付宝小程序开发者公测地址 支付宝小程序申请公测网址

支付宝小程序目前已经开始公测了,为大家带来支付宝小程序开发者公测地址,支付宝小程序是手机应用嵌入支付宝客户端的一种方法,下面是支付宝小程序申请公测网址! 支付宝小程序开发者公测地址 特色能力开发服务成编程开发

2020-11-22 11:04:37   支付宝小程序怎么建立   支付宝小程序怎么开发  

[c罗]c++ vector用法详解 c++ vector用法总结

c++ vector是在c++中开发过程中c++ vector作为一个十分有用的容器,许多朋友还不是很清楚c++ vector用法,不知道c++ vector到底有什么优秀的用法,不用着急一起来看看编程开发

2020-11-22 11:04:37   pcba   c盘满了怎么清理  

【eclipse如何导出项目】eclipse怎么导出项目 eclipse导出项目教程

eclipse作为用户量十分大的编程开发软件,有许多新手用户朋友或者刚开始接触这款软件的朋友经常会出现在使用eclipse的时候不知道该怎么导出已经读取到软件中的项目,其实很简单,一起来看看ecli教你一招

2020-11-10 07:04:06   eclipse怎么导入项目   eclipse怎么打开项目  

jdk环境变量配置win10|JDK环境变量配置WIN7 WIN7JDK环境变量配置教程

JDK怎么进行环境变量配置一直是困扰着许多入门编程员的问题,许多用户朋友们如果重新换了一台设备,很容易出现不知道怎么进行环境配置的情况,不用担心,小编为大家带来了详细的在WIN7系统下如果进行JDK教你一招

2020-11-07 11:05:38   jdk安装与环境变量配置   安装jdk并配置环境变量