分享
 
 
 

Pocket PC Phone Edition SMS编程入门

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

适用于:

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有