yehao's Blog

Windows+Mobile平台应用与开发初步

 

1.    Windows Mobile平台应用与开发初步

注意:原创内容,用于交流,严禁商业用途     联系:backylee@gmail.com

概述:

详细分析了Windows Mobile 5.0的架构,总结了它的新特性,成功搭建和配置了Windows Mobile 5.0开发环境,并在搭建的Visual Studio 2005下采用C#语言,开发实现了手机终端无线信号测试软件,从而对基于Windows Mobile平台的软件开发过程有更深入的理解。

1.1  Windows Mobile系统概述

Windows MobileMicrosoft公司针对手持终端开发的操作平台,其包括底层操作系统Windows CE及上层驱动和应用等,Windows Mobile的几个版本都内置一系列针对Windows Mobile开发用户应用程序和系统硬件驱动。基于Windows Mobile的移动设备为企业提供了优秀的行业应用平台,它可以提供广泛的可选硬件、强大的开发工具和长效的电池使用时间。基于Windows Mobile的设备让企业用户在外出时仍然可以处理自己的工作,让用户能够通过扩充设备满足不断变化的企业需求。现在,移动用户对数据信息访问的需求增长非常明显。包括Internet在内的新型数据源,可以通过移动的网络连接供给更多用户访问。

作为一个开放的操作系统,Windows Mobile为开发人员提供了很多便利。开发人员可以基于Windows Mobile开发自己的Windows Mobile应用程序。Windows Mobile 5.0彻底消除了Smart phonePocket PC以及其他不同的移动设备之间的差距,不论硬件的速度、屏幕分辨率和存储器容量有多大差别,Windows Mobile 5.0都可以为其方便地进行定制,以适应各种不同的应用场合。基于Windows MobilePocket PCSmartphone为用户提供了熟悉并且可以自定义的用户应用。

1.1.1  Windows Mobile家族

Windows Mobile商标如图3-1所示。

Windows Mobile家族主要包括掌上电脑(Pocket PC)、智能手机(Smart Phone)、便携式娱乐中心(Media Center)三种,掌上计算机又根据是否有电话模块分为掌上计算机普通版和掌上计算机电话版。     3-1

3-1 所示为Microsoft Windows Mobile 商标。

3-2所示为Windows Mobile家族及其特性。

 (1)掌上计算机(Pocket PC)主要的特点是以数据处理为中心,继承了以前PDA设备的特点,并能方便地处理邮件,Pocket PC还带有触摸屏以及可选的完整键盘,非常适合商业应用。

掌上计算机通常使用32MB128MB内存,使用200MHz600MHzCPU,能提供流畅的电影播放、幻灯片浏览、文字处理、游戏等。而且,这些能力还在不断提高,在Windows Mobile 6.0中,系统支持最高2GB的内存。

2)掌上计算机电话版(Pocket PC Phone)在掌上计算机上增加了手机模块,并安装了拨号应用程序,这样在掌上计算机上能完成所有手机的功能,包括电话、短信、彩信服务。

3)智能手机主要的特点是以语音为中心,以电话功能为主,提供键盘和操纵杆输入,所有的功能都能优化为单手操作。

智能手机和掌上计算机电话版是典型的3G移动终端实例。

4)便携式娱乐中心主要的特点是以娱乐为中心,配备专门的多媒体设备。有优化的用户界面,但没有触摸屏,通过指定的功能键操作,使用方法和电视操作相似。而且提供视频输出能力,能轻松地与电视、音箱等家用电器进行互联。

所有的Windows Mobile系列都是以移动信息为中心的,提供了Microsoft Outlook Mobile软件,通过这些设备可以轻松地收发邮件、短信以及彩信。对于Pocket PC来说,里面还预装了Word MobileExcel MobilePowerPoint Mobile,使得用户可以在手机上处理工作。而且Windows Mobile设备都支持多媒体,都内置安装了多媒体播放软件Media Player以及Pocket Internet Explorer浏览器软件。Windows Mobile上开发用户应用,用户可以自由地安装或删除Windows Mobile上的应用,具备非常好的平台扩展性。

平台

3-2 Windows Mobile家族及其特性

1.1.2  Windows Mobile全球市场发展状况

Windows Mobile掌上计算机在全球市场有着较高的市场占有率,其中在我国占有率也非常高,产品覆盖48个国家的68个运营商,其中有41家移动终端生产厂商。

Windows Mobile具有很好的优势,全球有超过700万的Microsoft Visual Studio开发人员,有超过38万的Windows Mobile开发人员和超过9000Microsoft合作伙伴。使用Windows Mobile许可的设备数量每天都在高速增长。

1.1.3 Windows Mobile 5.0的新特性

Windows Mobile 5.0是基于Windows CE 5.1核心的,主要有以下三个特性

1)高效率的移动办公能力,Windows Mobile 5.0提供了一些用于提升用户工作效率的软件,如直推E-mailDirect Push),较好地满足了用户特别是移动用户对即时性信息的需求,通过直推E-mail,邮件更新信息会先到达手机。另外,Mobile WordMobile Excel也有很大的改善,可以支持在文档中添加图像和图表,基本上和PC上的WordExcel功能一致。Mobile PowerPoint虽然暂时不支持编辑功能,但作为查看工具,已经可以满足用户会议放映的需求。

2)硬件方面,主要是指对海量存储设备的支持和对永久内存存储的支持。Windows Mobile 5.0的设备可以支持以GB为单位的数据,可以存储大容量的音频、视频数据,并且通过对USB 2.0的支持,使传输大容量数据更加快捷和方便。Windows Mobile 5.0还采用了新的存储结构空间的分配,把用户的重要数据和资料存储在ROM里面,这样即使电池长时间掉电数据也不会丢失。

3)娱乐方面更加丰富,主要体现为游戏和音乐。Windows Mobile 5.0支持DirectXDirectShow,为开发包括3D在内的游戏提供了平台支持。这不仅仅是软件上的支持,还有更多游戏硬件厂商也支持Windows Mobile 5.0,开发了适合Mobile 5.03D硬件加速卡。对音乐来说,Windows Mobile 5.0预装了Media Player 10,在Media Player 10中音乐压缩的体积只有不到MP3格式的一半,因此,Windows Mobile 5.0的终端能够存储更多歌曲,并且支持和PC机同步媒体库。

最后,除了媒体中心之外,其他的Windows Mobile设备都将电话功能作为基本的功能之一。虽然Pocket PC设备分为带有电话功能和不带电话功能两个版本,但对绝大多数用户(尤其是个人用户)来说,他们还是偏爱带有电话功能的Pocket PC设备。而对于Smartphone设备来说,电话功能更是设备的固有特征。Windows Mobile 5.0还在电话功能上进行了极大的改进。除了更快的连接速度和更高的通话质量外,Windows Mobile 5.0还丰富了电话拨号程序的用户界面,给用户带来了很好的体验。

1.1.4 Microsoft ActiveSync 4.5应用程序

为支持Windows Mobile 5.0的发布,Microsoft公司也发布了新版本的ActiveSync,目前最新版本是ActiveSync 4.5,支持USB 2.0、支持海量数据的传输,并且增强了对多媒体数据的同步支持。在Windows Mobile 5.0的设备应用中,可以利用ActiveSync作以下操作:

(1)      同步移动设备和PC机的文件、音乐或者其他数字媒体;

(2)      通过PC机的网络与Exchange Server进行Outlook数据的信息同步;

(3)      添加或删除移动设备中的应用程序;

(4)      PC机与移动设备共享对方的网络资源。             

ActiveSync的应用非常简单,用户可以通过界面友好的同步设置向导来完成终端设备与Exchange ServerPC之间的信息同步。在PC端安装好ActiveSync 4.5之后,可以选择通过串行电缆、USB电缆、蓝牙或者红外线把移动设备和PC连接起来。连接方法如下:

(1)      串行电缆指通过串行电缆将移动设备和PC机的USB端口建立连接;

(2)      USB电缆是指通过USB 2.0接口将移动设备和PC机的USB端口建立连接;

蓝牙和红外线都是无线连接的方法,两者不需要更换电缆或适配器,所以在多台设备之间切换时,此方法具有一定优势,其中由于蓝牙的传输速度和相对距离都比红外有绝对优势,所以蓝牙连接的方式更为普及;      

在通过ActiveSync连接后,终端设备可以通过PC端网络环境进行网络访问。

1.1.5 .NET Compact Framework简介

.NET Compact Framework.NET Framework的精简版,它独立于硬件的环境,可用于在资源受限制的计算设备上运行程序,这些设备包括类似Pocket PC的个人数字助理(PDA)、移动电话、机顶盒、自动计算设备和用Windows Mobile .NET操作系统生成的定制嵌入设备。

.NET Compact Framework.NET Framework类库的子集,还包含专门为它设计的类。它继承了公共语言运行库和托管代码执行的.NET  Framework全功能版的体系结构。

.NET Compact Framework提供以下主要功能:

(1)      运行独立于硬件和操作系统的程序;

(2)      支持常见的网络协议,并与XML Web services无缝连接;

(3)      为开发人员提供一种模型,使他们的应用程序和组件面向各种设备或面向具体某种设备;

(4)      提供设计和优化有限系统资源的优点;

(5)      使用实时编译获得生成本机代码时的最佳性能;

(6)      支持通过ADO.NET访问SQL Mobile

.NET Compact Framework继承.NET Framework全功能版的公共语言运行库体系结构用于运行托管代码。它提供与设备的Windows Mobile操作系统的互操作性,应此,用户能够访问本机函数并将最喜欢的本机组件集成到应用程序中。

.NET Compact Framework平台结构如图3-3所示。

              3-3 .NET Compact Framework平台结

1.2  Visual Studio 2005简介

Windows Mobile 5.0 SDK.NET Compact Framework为移动设备应用程序的开发提供了基本的原材料,然而要形成完善、高效的Mobile解决方案,还需要强大的开发工具的支持。

Visual Studio 2005Microsoft推出的最新的解决方案开发平台,它为ASP.NET Web应用程序、XML Web Services、桌面应用程序和智能(移动)设备应用程序的开发提供了完善的开发工具。无论是使用Visual BasicVisual C++Visual C #还是Visual J #语言,都可以在同一个集成开发环境中完成开发任务,并且还可以开发跨语言的解决方案。

本文的软件开发介绍以及下面的软件开发实例都是在Visual Studio 2005中文版中开发的。

1.      开发环境概况

用户界面

打开如图所示的Visual Studio 2005开发环境。其用户界面由菜单栏、工具栏、各种各样的工具窗口以及工作区构成。刚开始打开,会出现初始页。

3-5 Visual Studio 2005开发环境

2.      支持的项目类型

Visual Studio 2005中,可以使用各种语言在各种设备上开发应用程序,并混合各种应用程序形成强大的解决方案。使用的语言不同、针对的目标平台不同,就形成了各种不同的项目类型。

在一个较高的层次上,Visual Studio 2005将应用程序分成两大类,即客户端项目和ASP.NET Web项目。客户端项目通过依次选择文件/新建/项目菜单项创建,而ASP.NET Web项目通过依次选择文件/新建/网站菜单项来创建。

对于客户端项目,根据使用的语言不同贺针对的平台不同,Visual Studio 2005还提供了不同的项目类型以供选择。依次选择文件/新建/项目菜单项,弹出新建项目对话框如图3-6所示。

3-6 “新建项目对话框

新建项目对话框左侧有一个标记有项目类型的树状视图,其中列出了Visual Studio 2005所支持的所有项目类型。Visual Studio 2005所有项目类型按层次进行了划分,首先是按照语言的不同进行划分,接下来是按目标平台的不同进行划分。

如果使用C #语言进行开发,需要展开其他语言的Visual C #节点在其中进行选择。如果要开发桌面应用程序,则选择其Windows子节点;如果是创建以数据库操作为主的应用程序,就选择数据库字节点。

本文是针对移动设备的程序开发,移动设备和嵌入式设备在Windows Mobile平台中被统一称为智能设备Visual Studio 2005将这些类型的应用程序放在了智能设备节点下,在这里还可以分别选择不同的目标设备。Visual Studio 2005直接支持Smartphone 2003Pocket PC 2003应用程序,如果安装了Windows Mobile 5.0 SDK,还会出现Windows CE 5.0Windows Mobile 5.0 Pocket PCWindows Mobile 5.0 Smartphone几个节点,用于开发不同的Windows Mobile 5.0平台上的应用程序。

新建项目对话框的右侧,还有一个标记有模板的列表视图,可以根据不同的项目类型选择不同的模板。对于各种不同的应用程序,都可以通过不同的配置而使其生成不同的输出。例如,对于用Visual C#开发的Windows Mobile 5.0 Pocket PC应用程序而言,可以通过不同的配置而生成可执行文件(EXE)和类型库(DLL)。Visual Studio 2005将这些常见的配置事先设置好,作为模板展现在新建项目对话框中。这样一旦从这里创建了新的项目,则项目已经具有这些设置,能够生成特定的输出内容。

在新建对话框的下部,可以为项目指定类型和路径,并可以指定解决方案的名字。

Web应用程序类型的创建类似于客户端项目的建立过程。这里不做重点。

3.      获取帮助

Visual Studio 2005不仅提供了强大的开发支持功能,还为开发者提供了非常全面的帮助体系。Visual Studio 2005的帮助文档集成在MSDN Library中,并通过动态帮助和外部帮助的形式展现给开发者。

1.3测试环境的搭建和客户端的部署

1.3.1  Windows Mobile 5.0开发环境搭建

环境要求与配置:

操作系统:Windows 2000SP3以上),或者Windows XP

开发环境: Visual Studio 2005Windows Mobile 5.0 SDK

同步软件:ActiveSync 4.1及以上

仿真模拟器:Windows Mobile 5.0 Emulator Images

相关软件的先后安装步骤如下:

a) 安装Visual Studio 2005 TRM(开发主工具)

b) 安装ActiveSync 4.5 Developer Preview (微软的同步软件可以同时支持Pocket PCSmartphone与计算机之间通信,用于仿真机数据传输测试)

c) 安装Windows Mobile 5.0 SDK for Pocket PCPocket PC开发SDK

d) 安装Windows Mobile 5.0 Emulator Images Windows Mobile 5.0中文仿真模拟器)

安装成功后可以打开Visual Studio 2005编译器,在新建工程/职能设备中找到windows mobile 5.0 pocket PC的新建项目选择。如图3-10所示。

3-10

在工具的设备仿真管理器中可以找到Windows Mobile 5.0 中文模拟器。

3-11

重起机器后,在计算机任务栏右下角会发现灰色的ActiveSync标志http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246273.JPG ,在计算机硬盘列表页面会出现移动设备标志http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246274.JPG

1.3.2 测试环境的搭建

双击右下角ActiveSync标志http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246273.JPG  ,弹出ActiveSync配置窗口,点击连接设置设置连接参数。如图3-12所示。

 

3-12

其中重要设置:

允许USB连接:选中时可以支持真实测试机的测试。

允许连接到以下其中一个端口:当用模拟器测试时,这里一定要选择DMA

这台机器连接到:用模拟器测试这里选择单位网络

选择Visual Studio 2005编译器中的仿真管理器中可以找到Windows Mobile 5.0 中文模拟器,右键连接,弹出模拟器。如图3-13所示。

3-13

这时点击仿真管理器中的刷新按钮,查看连接情况,如果成功,选中的模拟器前面会有绿色箭头符号,这时选中点击插入底座 。如图3-14所示。

3-14

稍等片刻,这时任务栏ActiveSync端口符号会变成绿色http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246550.JPG ,则说明已经连接成功,这时候双击计算机硬盘列表页面会出现移动设备标志http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246274.JPG ,会看到模拟器中内部文件结构,如图3-15所示。

         

3-15

1.3.3 设置移动设备网络连接

点击模拟器开始/设置/连接/网卡,设置网卡信息。

http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246552.JPGhttp://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246551.JPG

  3-16

网卡连接到选择默认单位设置,点击下面的NE2000兼容Ethernet驱动程序,如图3-16所示。

设置局域网连接参数包括IP地址和服务器DNS,填写完成后点击右上角ok后退出,如图3-17所示。

http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246554.JPGhttp://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246553.JPG

   3-17

网卡设置成功后,点击模拟器开始/设置/连接/连接,设置连接信息。

选择连接/高级/选择网络

http://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246556.JPGhttp://blog.5d.cn/user1/pineapple/upload/2007-08/2007861246555.JPG 

3-18

程序自动连接Internet自动连接专用网络都使用单位设置,点击右上角ok后保存退出。如图3-18所示。

我们可以打开模拟器自带的IE浏览器,打开一个网页如果设置成功则可以连接到Internet和局域网。如图3-19所示。

3-19

1.3.4 客户端的部署

当在开发机(通常是桌面计算机)上完成了Windows Mobile应用程序的开发和测试工作后,就需要将其部署到实际的设备中去。

.NET Compact Framework是所有基于.NET技术的移动设备应用程序得以运行的基础,因此,每一个需要运行.NET程序的移动设备客户端,都必须安装.NET Compact Framework

如果系统中安装了.NET Framework 2.0 SDK或者Visual Studio 2005.NET Compact Framework的安装文件就会被部署到桌面计算机上,这个安装文件的名称是netcfsetupv2.msi。如果安装的是Visual Studio 2005,则这个文件位于\Program Files\Microsoft Visual Studio 8\SDK\v2.0\CompactFramework目录下。

netcfsetupv2.msi是一个运行于桌面计算机的Windows Installer数据文件,它可以将.NET Compact Framework通过ActiveSync部署到移动设备上。当使用Visual Studio 2005运行一个Windows Mobile应用程序是,.NET Compact Framework会被自动地部署到模拟器或是真实设备中。但对于客户来说,让它们安装Visual Studio 2005并通过运行程序来安装.NET Compact Framework是不现实的,这时可以使用netcfsetupv2.msi来将.NET Compact Framework部署到设备上。

运行netcfsetupv2.msi,将启动.NET Compact Framework 2.0安装向导,先移除计算机里的.NET Compact Framework安装记录,然后安装.NET Compact Framework。如图3-20所示。

3-20

当设备上安装了.NET Compact Framework以后,任何使用.NET技术开发的移动设备应用程序,都可以通过直接将可执行文件以及相关辅助文件复制到设备中来运行。

程序部署较常用的是CAB安装包。CAB安装包小巧,适合于内存有限的移动设备。Visual Studio 2005CAB安装包的制作提供了良好的支持,开发者只需进行一些操作,无需编写代码就能完成安装包的制作。具体的制作过程将在下一章的软件开发中做详细的介绍。这里不做过多介绍。


 

2.Windows Mobile 5.0平台的软件开发

2.1 需求分析概述

移动运营商每年在基站的维护和检测上花费了很多的人力、物力和财力,检测无线信号的分布情况,以便减少无线覆盖的盲区,实时检测基站的工作状况,以便及时修复基站发生的错误,基于这一需求,这里我们开发一款软件,将手机所在位置的无线信号反馈给移动运营商,运营商则通过这些数据,获得各个区域的信号强弱并且分析和判断基站的覆盖情况和基站的工作情况,本章中,我们用Visual C #语言在Visual Studio 2005开发环境里开发一款基于Windows Mobile 5.0的无线信号检测软件。

可以看到,预备知识包括对Visual C #基本语法的了解,了解Visual Studio 2005环境,熟悉Windows Mobile 5.0软件部署的详细过程,能够通过MSDN Library获得自己想要的API的信息。这里,我们的开发环境是:Visual Studio 2005ActiveSync 4.5 Developer PreviewWindows Mobile 5.0 SDK for Pocket PCWindows Mobile 5.0 Emulator Images中文版。

2.2. 软件设计分析

软件要获得手机信号的强弱,可以通过Microsoft.WindowsMobile.Status命名空间里的两个函数来实现,分别是int SystemState.PhoneSignalStrengthstring SystemState.PhoneOperatorNameSystemState.PhoneSignalStrength获得当前手机所在地的无线信号强度,表示为int型的百分比(0--100);SystemState.PhoneOperatorName获得当前手机的无线运营商的名称,返回string型。

获得想要的数据之后,可以通过发送短信息的方式向运营商发送出去,短消息的接收方可以是运营商给出的一个固定的号码,这里我们用到了Microsoft.WindowsMobile.PocketOutlook.dll程序集。使用POOM中的SmsAccount类可以方便地完成短信息的发送。SmsAccount类提供了一个名为Send的方法,这个方法的原型如下面的代码所示:

             public void Send(SmsMessage message)

接收唯一的一个参数messagemessage参数的类型是SmsMessage,表示一条SMS消息,当调用了Send方法后,该消息将被发送。因此,在发送短消息之前,还需要构造SmsMessage的对象。

SmsMessage类提供了三个实例构造器,其中最有用的一个构造器可以构造一个完全可以直接发送的SMS消息对象:

             public  SmsMessage(

                     string recipientPhoneNumber,String message);

其中recipientPhoneNumber参数为字符串形式的收信方电话号码,message参数就是用户需要发送的消息主体了。

以上发送过程循环进行,这样就可以实时发送,这里可以加入一个timer控件,计时时间间隔我们假定为20秒。作为提示,可以加入一个Notification,用于发送成功时的提示。

2.3 程序的设计

打开Visual Studio 2005,选择文件”/“新建”/“项目,在项目类型栏里选择Visual C #下面的智能设备Windows Mobile 5.0 for Pocket PC,在右侧的模板里选

4-1

择设备应用程序,项目名称和解决方案名称可以任意,这里,名为:AutoSending,如图4-1所示。点击确定,出现新建界面,如图4-2所示。

4-2

为项目添加对Microsoft.WindowsMobile.PocketOutlook.dll程序集的引用,并为窗体添加一个OutloookSession类型的私有域(名为m_outlookSession)。

构造如图4-3所示的用户界面。

4-4

窗口name属性改为“mainForm”Text属性改为“Signal Monitor By XUST”。加入的Label1Text属性改为“Base station Number”Name属性改为“m_lblReceiver”,添加Text1name属性改为“m_txtReceiver”Text属性我们假定基站ID为:13709268816。添加到俄Label2Text属性改为“Information:”添加的Text2Name属性改为“m_txtMesage”Text属性改为空。添加Label3作为说明,将其Text属性改为:NOTE: This Application will automatically send Information to the base station as SMS , information about the operator and signal strength in the location now.

添加一个timer控件,name属性为“timer1”Interval属性改为“20000”,即20秒,Enabled属性改为“True”。双击timer1,编辑代码如下:

   private void timer1_Tick(object sender, EventArgs e)

        {

            try

            {

                timer1.Interval = 20000;

                int st;

                string str;

                st = SystemState.PhoneSignalStrength;

                str = Convert.ToString(st);

                m_txtMesage.Text = SystemState.PhoneOperatorName;

                m_txtMesage.Text += ":";

                m_txtMesage.Text+= str;

                // 构造短信息对象

                SmsMessage msg = new SmsMessage(

                    m_txtReceiver.Text,

                    m_txtMesage.Text);

                // 使用OutlookSession中的SMS帐户进行发送,SMSAccount类提供的Send方法

                m_outlookSession.SmsAccount.Send(msg);

                //修改消息文本框,显示发送成功,并且准备填写下一条记录

               m_txtMesage.Text = "Sent";

                //显示气球提示Notification

                m_notification.Caption = "Information";

                m_notification.Text = "Phone Signal Strength has been Sent to BaseStation. Thanks! -----by XUST";

                m_notification.InitialDuration = 3;

                m_notification.Visible = true ;  //如若设置为不显示气球提示可改为false

            }

            catch (Exception ex)

            {

                MessageBox.Show(

                    String.Format("Error: {0}", ex.Message),

                    "Send",

                    MessageBoxButtons.OK,

                    MessageBoxIcon.Hand,

                    MessageBoxDefaultButton.Button1);

            }

        }

添加的Notification控件name“m_notification”,其他属性在上面的代码里已经设置。

MainForm.cs文件的完整代码如下:

   using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Microsoft.WindowsMobile.Status;

using Microsoft.WindowsMobile.PocketOutlook;

namespace SendingSms

{

public partial class MainForm : Form

{

           OutlookSession m_outlookSession;

           public MainForm()

           {

                    InitializeComponent();

                    m_outlookSession = new OutlookSession();

             m_txtReceiver.Text = "13709268816";

           }

        private void timer1_Tick(object sender, EventArgs e)

        {

            try

            {

                timer1.Interval = 20000;

                int st;

                string str;

                st = SystemState.PhoneSignalStrength;

                str = Convert.ToString(st);

                m_txtMesage.Text = SystemState.PhoneOperatorName;

                m_txtMesage.Text += ":";

                m_txtMesage.Text+= str;

                // 构造短信息对象

                SmsMessage msg = new SmsMessage(

                    m_txtReceiver.Text,

                    m_txtMesage.Text);

                // 使用OutlookSession中的SMS帐户进行发送,SMSAccount类提供的Send方法

                m_outlookSession.SmsAccount.Send(msg);               

                //修改消息文本框,显示发送成功,并且准备填写下一条记录

               m_txtMesage.Text = "Sent";

                //显示气球提示Notification

                m_notification.Caption = "Information";

                m_notification.Text = "Phone Signal Strength has been Sent to BaseStation. Thanks!     --by XUST";

                m_notification.InitialDuration = 3;

                m_notification.Visible = true ;  //如若设置为不显示气球提示可改为false

            }

            catch (Exception ex)

            {

                MessageBox.Show(

                    String.Format("Error: {0}", ex.Message),

                    "Send",

                    MessageBoxButtons.OK,

                    MessageBoxIcon.Hand,

                    MessageBoxDefaultButton.Button1);

             }

               }

           }

  }

由于SystemState.PhoneSignalStrength返回的是一个int型的数据,而短信息发送时只能接收到String类型,这里用Convert.ToString(int  )int型转换成string类型的。

程序中用了PocketOutlookSystemState空间的函数,所以要添加如下两个程序集的引用:Microsotf.WindowsMobile.PocketOutlook.dllMicrosoft.WindowsMobile.Status.dll。引用如图4-5所示

4-5

考虑到程序的完整性,考虑到程序运行时可能发生的异常(如基站接收的号码有更换等),加入了程序的异常处理,因此整个过程被放入了一个try-catch语句块中。

调试这个程序,选择调试”/“启动调试或者直接按F5。这时,会弹出一个部署程序的设备的选择框的,如图4-5所示。

4-5

要选择有PhonePocket PC,可以选择Windows Mobile 5.0 Pocket PC Phone Square VGA模拟器。点击部署。稍等片刻,会显示Windows Mobile模拟器界面,紧接着程序将会在模拟器中运行。如图4-6所示。

4-6

2.4 安装包的制作

制作cab包的方式进行部署。首先在刚才的AutoSending解决方案中,右键解决方案名字,选择文件”/“添加”/“新建项目,在添加新建项目的窗口中,选择其他项目类型”/“安装和部署,在模板中选择智能设备CAB项目,名称任意,这里命名为AutoSendingcab,点击确定。如图4-7所示。

4-7

新建完后,出现配置界面如图4-8所示。

4-8

文件系统中可以添加不同的文件夹,在不同的文件夹内可以添加相应的处理。默认的情况会有应用程序文件夹和Program Files文件夹这2个文件夹,但里面内容都是空的。为了在设备上的Start Menu菜单内有快捷方式,添加Start Menu文件夹。

应用程序文件夹中添加程序主体:

4-9

应用程序文件夹中添加一个项目输出,选择主输出,如图4-9所示。

快捷方式的添加:

选择Start Menu文件夹,在旁边一栏,右键选择创建新的快捷方式,在对话框中选择应用程序文件夹,将主输出添加进来。这时会有一个“Shortcut to 主输出来自AutoSending(活动)”的快捷方式,这里一定要把快捷方式的名称改成全英文的,不能出现汉字,否则调试会出错。我把快捷方式改为“AutoSending”

4-10

属性窗口显示了该CAB包的信息。如图4-10所示。

这里可以更改厂家名称,我改为XUST,软件安装的操作系统版本默认最低4.0最高5.99。产品名称为AutoSendingcab

以上各个信息正确之后,右键解决方案资源管理器AutoSendingcab项目,选择生成,CAB安装包就成功制作了。一般在\Program Files\Microsoft Visual Studio 8\workspace\AutoSending\AutoSendingcab\Release下面,AutoSendingcab.CAB就是生成的cab安装包。如图4-10所示。

4-10

2.5 程序安装包cab的部署

cab安装包制作成之后,就可以在模拟器里或者真机里安装部署了。

打开ActiveSync程序,打开设备仿真管理器,选择一个仿真器,这里可以选 CHS Windows Mobile 5.0 Pocket PC Phone Square VGA Emulator,右键选择连接,然后再右键选择插入底座,此时ActiveSync会探测到该机连接到了计算机,如果设备无法连接到计算机,可以打开ActiveSync,选择文件”/“连接设置,设置按照第三章的方法设置成功之后,点击右上的连接按钮,ActiveSync会尝试连接设备。连接成功之后,点击ActiveSync浏览,如图4-11所示。

 

 

 

 

4-11

此时,可以将cab复制到设备中,可以放在任意一个文件夹,这里选择个人文件夹,将AutoSendingcab.CAB复制到里面。然后打开设备,选择开始的程序”/资源管理器,在个人文件夹里运行此安装包安装程序。如图4-12所示。

4-12                                4-13

安装完之后,在开始的程序里会出现AutoSending程序的运行图标。如图4-13所示。

单击该图标运行程序。如图4-14所示。

4-14 程序在模拟器里成功运行

到这里整个软件开发就算完成。其实,程序还有很多可以改进的地方,但是作为Windows Mobile 5.0平台的软件开发实例来说,完全可以将程序从前期的构思到最后的安装包的部署讲述清楚。

 

 

 

 

 

 

 

 

 

 

BK原创,联系:backylee@gmail.com

 

 

posted on 2011-06-10 13:37 厚积薄发 阅读(1520) 评论(0)  编辑 收藏 引用 所属分类: Windows Mobile


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿

随笔分类

文章分类

文章档案

搜索

最新评论