手持式移动设备嵌入式WinCE开发(5)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

手持式移动设备嵌入式WinCE开发MTSE1.05EVC开发工具简介第章MTSE1.0本章目标掌握SDK的导出方法熟悉EVC集成开发环境掌握远程调试工具的使用MTSE1.05.1SDK使用eMbeddedVisualC++工具编写WindowsCE应用程序时,必须知道自己所开发的程序运用在什么样的硬件目标平台上,以及目标平台具有什么操作系统功能,否则,开发者开发的应用程序很可能不能在目标平台上运行通过PlatformBuilder向eMbeddedVisualC++导出应用程序要运行平台的SDK,可以使EVC开发出的应用程序能够很好的运行在特定的目标平台上应用程序开发主要包括三各方面的内容:从PB中导出SDK(软件开发工具包)安装SDK到EVC++Win32编程,MFC编程MTSE1.05.1SDK下面我们重点介绍SDK的导出以及安装过程。导出SDK主要有如下几个步骤:导出新的SDKSDK的配置SDK的编译下面将在前面创建的内核myce2基础上进行SDK的导出SDK的导出启动PB,并打开前面创建的WinCE内核myce2(可以选择创建一个基于某个BSP的内核)MTSE1.05.1SDKMTSE1.05.1SDK点击PB-Platform-ConfigureSDK,如下图所示MTSE1.05.1SDK点击下一步,如下图所示MTSE1.05.1SDK输入SDK名称和制造商名称,点击下一步,如下图所示MTSE1.05.1SDK导出在eVC++环境开发的SDK,点击下一步,如下图所示MTSE1.05.1SDKSDK导出完成,点击Finish,如下图所示MTSE1.05.1SDKSDK的配置再次点击PB-Platform-ConfigureSDK,如下图所示MTSE1.05.1SDK如下图所示选项,视图表示导出的SDK存储在开发者创建内核的路径下的SDK目录里,创建的内核平台名称为MYCE2,导出的SDK是一个标准的安装文件,名称为MYCE2_SDK.msiMTSE1.05.1SDK点击Emulation,对模拟器设置,如下图所示,设置后点击“确定”退出如果不需要导出应用于模拟器的SDK,可在Emulation下拉表中选择None。在此setting项,还需要根据先前内核定制的平台,进行CPU的选择。同时还可以在install项进行安装信息的填写。MTSE1.05.1SDKSDK的编译点击PB-Platform-BuildSDK,如下图所示MTSE1.05.1SDKSDK编译结束,如下图所示MTSE1.05.1SDK若编译过程没有错误,导出的SDK保存到开发者指定的目录,文件名为MYCE2_SDK.msiMTSE1.05.1SDKSDK的安装双击MYCE2_SDK.msi文件,就可以安装,如下图所示MTSE1.05.1SDK点击”Next”,如下图所示MTSE1.05.1SDK安装过程,如下图所示MTSE1.05.1SDK至此,我们就已经完成了SDK的导出,设置,编译,安装过程。后续我们就需要在EVC的开发中根据我们的程序应用平台选择我们定制的SDKMTSE1.05.2EVC集成开发环境WindowsCE开发工具WindowsCE与Windows编程有何不同•处理器:–CE:支持多种处理器–Xp等:支持X86系列处理器•屏幕或键盘等输入设备:–CE:支持触摸屏(非标准分辨率大小)或无显示器,可能无鼠标或键盘–Xp等:支持标准显示器,必须有鼠标和标准键盘•存储设备:–CE:可能没有硬盘等大容量存储器,可能无法存储大量文件,可能无法实现虚拟内存,内存访问受限(由于内存容量通常较小,又无法实现虚拟内存),内存是稀缺资源–Xp等:大容量硬盘,虚拟内存,大容量内存等配置决定了程序员通常不用考虑内存是否够用。MTSE1.05.2EVC集成开发环境•字符编码–CE:支持Unicode,而且通常都是以Unicode为字符的编码标准,即以两个字节来表示任何一个字符(不论是中文字符还是标准ASCII字符),这样在编写程序时,与字符串相关的处理需要特别注意这一点–XP等:通常是使用ASCII字符,同时支持Unicode•CE的其他主要特性–界面紧凑、配置多样化、API函数的精简等等•开发工具的选择–CE系统通常使用EVC或.NET等开发工具,同时支持模拟器及模拟器的调试MTSE1.05.2EVC集成开发环境我们的第一个WinCE应用程序:HelloWorld•打开EVC4,创建一个工作空间MTSE1.0•在对话框中选择Workspaces标签•在Workspacename对话框中填入工作空间的名称以及存储位置5.2EVC集成开发环境MTSE1.0•向刚创建的hello工作空间添加文件或项目•在对话中选择Files标签,然后选择C++SourceFile5.2EVC集成开发环境MTSE1.0•在File处填入文件名•在hello.c中编写你的程序5.2EVC集成开发环境MTSE1.05.2EVC集成开发环境•hello.c的代码/********************************************************///Hello-AsimpleapplicationforWindowsCE//#includewindows.h////Programentrypoint//intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){printf(HelloWorld\n);return0;}MTSE1.05.2EVC集成开发环境•这个文件包含了一组文件,它们中定义了WindowsAPI及其用到的结构和常量•程序的入口点是本程序和标准C程序之间最大的差别#includewindows.hC标准入口:intmain(char**argv,intargc)WindowsCE标准入口点:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow)MTSE1.05.2EVC集成开发环境•这个文件包含了一组文件,它们中定义了WindowsAPI及其用到的结构和常量•程序的入口点是本程序和标准C程序之间最大的差别#includewindows.hC标准入口:intmain(char**argv,intargc)WindowsCE标准入口点:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow)MTSE1.05.2EVC集成开发环境•第1个参数,hInstance为其它应用程序指明程序实例,也为需要验证这个EXE的WindowsAPI函数提供了程序实例•参数hPrevInstance是从旧的Win16API(Windows3.1及更早的系统)遗留下来的。包括WindowsCE在内的所有Win32操作系统中,hPrevInstance始终是0,可以忽略掉。•参数lpCmdLine指向一个Unicode字符串,包含了命令行文本。从微软WindowsCE浏览器启动的应用程序没有命令行参数,但在某些情况下,例如当系统自动启动一个程序时,系统包含一个命令行参数来说明程序为什么被启动MTSE1.05.2EVC集成开发环境•参数lpCmdLine是WindowsCE与XP出现差异的情况之一,在WindowsCE里,命令行字符串是Unicode字符串,在其它版本的Windows里,命令行字符串总是ASCII的•最后一个参数,nCmdShow,指明了程序主窗口的初始状态。由父进程,通常是浏览器传递这个参数到程序里。它对应用程序如何配置主窗口给出了说明,在WindowsCE里,这个参数的值被限制成3个状态:普通(SW_SHOW)、隐藏(SW_HIDE)和非激活显示(SW_SHOWNOACTIVATE)。除非应用程序需要强制它的窗口预先确定状态,在程序主窗口被创建后,这个值是不加修改,只是简单的传递给ShowWindow函数MTSE1.05.2EVC集成开发环境•这个应用程序唯一的功能行•WindowsCE支持大部分标准C库,包括printf,getchar等等。这一行有趣的地方在于它不像WindowsCE其它任何地方,这个串不是Unicode而是ANSI。下面是对这个现象的合理解释:对于用ANSI标准编译的C标准库,printf和诸如strcpy等其它字符串库函数用的是ANSI字符串。当然,WindowsCE支持这些标准函数的Unicode版,例如wprintf,getwchar,和wcscpy编译hello.c•选择应用程序将运行的目标平台,注意CPU和SDK的选择。在此,我们选择基于emulator平台进行实验。如果是要运行在特定的硬件平台,必须按照前面讲述的内容导出SDK并安装到EVC中去,然后进行应用程序的开发printf(HelloWorld\n);MTSE1.05.2EVC集成开发环境MTSE1.05.2EVC集成开发环境•在EVC中,选择Build菜单下的Compilehello.c进行编译•如果弹出下面的提示,点击yes即可MTSE1.05.2EVC集成开发环境•如果没有错误,将在输入窗口(Output)中输出如下内容•在EVC中,创建可执行文件MTSE1.05.2EVC集成开发环境•在执行完后,会出现下面的提示•在Workspace的存储目录下将生成hello.exe文件MTSE1.05.2EVC集成开发环境运行程序•导出一个基于模拟器的WinCE界面•在开发工作站的C盘下创建soft目录,将C:\test\hello\emulatorDbg目录下的hello.exe拷贝到C:\soft目录下•在Emulator的Emulator菜单下,选择FolderSharing共享本机的目录MTSE1.05.2EVC集成开发环境•在共享目录中填入C:\soft(或者使用浏览选择)•在WinCE系统中打开“我的电脑”,选择StorageCard:MTSE1.05.2EVC集成开发环境•双击打开StorageCard,在双击hello.exe执行即可•将看到WindowsCE打开一个命令行窗口,打印一个HelloWorld之后退出•上述运行过程是通过路径共享的方式,使得WinCE系统能访问WinXP系统上的可执行文件•应用程序的执行有时候可以直接在EVC下的模拟器执行,但是它只适合调试基于emulator:X86编译的内核。所以,我们要用模拟器调试程序时,要注意先前开发过程中的SDK的配置以及编译平台的选择。当然,对于应用程序到开发板的调试,我们还可以用前面提到过的activesync工具MTSE1.05.2EVC集成开发环境消息窗口的使用下面的程序Welcome创建一个消息框而不是用printf来显示文字#includewindows.h//ProgramentrypointintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){MessageBox(NULL,TEXT(欢迎使用移动平台),TEXT(欢迎),MB_OK);return0;}MTSE1.05.2EVC集成开发环境•编译并运行Welcome,可以看到如图所示的小窗口:•MessageBox函数原型如下:•intMessageBox(HWNDhWnd,LPCTSTRlpTex

1 / 60
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功