![EVC开发工具介绍课件_第1页](http://file4.renrendoc.com/view/1c43bdbcce4422ec9c9716a9a19b06db/1c43bdbcce4422ec9c9716a9a19b06db1.gif)
![EVC开发工具介绍课件_第2页](http://file4.renrendoc.com/view/1c43bdbcce4422ec9c9716a9a19b06db/1c43bdbcce4422ec9c9716a9a19b06db2.gif)
![EVC开发工具介绍课件_第3页](http://file4.renrendoc.com/view/1c43bdbcce4422ec9c9716a9a19b06db/1c43bdbcce4422ec9c9716a9a19b06db3.gif)
![EVC开发工具介绍课件_第4页](http://file4.renrendoc.com/view/1c43bdbcce4422ec9c9716a9a19b06db/1c43bdbcce4422ec9c9716a9a19b06db4.gif)
![EVC开发工具介绍课件_第5页](http://file4.renrendoc.com/view/1c43bdbcce4422ec9c9716a9a19b06db/1c43bdbcce4422ec9c9716a9a19b06db5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
手持式移动设备嵌入式WinCE开发手持式移动设备嵌入式WinCE开发15EVC开发工具简介第章5EVC开发工具简介第章2本章目标掌握SDK的导出方法熟悉EVC集成开发环境掌握远程调试工具的使用本章目标掌握SDK的导出方法熟悉EVC集成开发环境掌握远程调35.1SDK使用eMbeddedVisualC++工具编写WindowsCE应用程序时,必须知道自己所开发的程序运用在什么样的硬件目标平台上,以及目标平台具有什么操作系统功能,否则,开发者开发的应用程序很可能不能在目标平台上运行通过PlatformBuilder向eMbeddedVisualC++导出应用程序要运行平台的SDK,可以使EVC开发出的应用程序能够很好的运行在特定的目标平台上应用程序开发主要包括三各方面的内容:从PB中导出SDK(软件开发工具包)安装SDK到EVC++Win32编程,MFC编程5.1SDK使用eMbeddedVisualC++工具45.1SDK下面我们重点介绍SDK的导出以及安装过程。导出SDK主要有如下几个步骤:导出新的SDKSDK的配置SDK的编译下面将在前面创建的内核myce2基础上进行SDK的导出SDK的导出启动PB,并打开前面创建的WinCE内核myce2(可以选择创建一个基于某个BSP的内核)5.1SDK下面我们重点介绍SDK的导出以及安装过程。导出55.1SDK5.1SDK65.1SDK点击PB->Platform->ConfigureSDK,如下图所示
5.1SDK点击PB->Platform->Configu75.1SDK点击下一步,如下图所示
5.1SDK点击下一步,如下图所示85.1SDK输入SDK名称和制造商名称,点击下一步,如下图所示
5.1SDK输入SDK名称和制造商名称,点击下一步,如下95.1SDK导出在eVC++环境开发的SDK,点击下一步,如下图所示
5.1SDK导出在eVC++环境开发的SDK,点击下一步105.1SDKSDK导出完成,点击Finish,如下图所示
5.1SDKSDK导出完成,点击Finish,如下图所示115.1SDKSDK的配置再次点击PB->Platform->ConfigureSDK,如下图所示
5.1SDKSDK的配置125.1SDK如下图所示选项,视图表示导出的SDK存储在开发者创建内核的路径下的SDK目录里,创建的内核平台名称为MYCE2,导出的SDK是一个标准的安装文件,名称为MYCE2_SDK.msi
5.1SDK如下图所示选项,视图表示导出的SDK存储在开135.1SDK点击Emulation,对模拟器设置,如下图所示,设置后点击“确定”退出如果不需要导出应用于模拟器的SDK,可在Emulation下拉表中选择None。在此setting项,还需要根据先前内核定制的平台,进行CPU的选择。同时还可以在install项进行安装信息的填写。
5.1SDK点击Emulation,对模拟器设置,如下图145.1SDKSDK的编译
点击PB->Platform->BuildSDK,如下图所示
5.1SDKSDK的编译155.1SDKSDK编译结束,如下图所示
5.1SDKSDK编译结束,如下图所示165.1SDK若编译过程没有错误,导出的SDK保存到开发者指定的目录,文件名为MYCE2_SDK.msi
5.1SDK若编译过程没有错误,导出的SDK保存到开发者175.1SDKSDK的安装双击MYCE2_SDK.msi文件,就可以安装,如下图所示
5.1SDKSDK的安装185.1SDK点击”Next”,如下图所示
5.1SDK点击”Next”,如下图所示195.1SDK安装过程,如下图所示5.1SDK安装过程,如下图所示205.1SDK至此,我们就已经完成了SDK的导出,设置,编译,安装过程。后续我们就需要在EVC的开发中根据我们的程序应用平台选择我们定制的SDK5.1SDK至此,我们就已经完成了SDK的导出,设置,编21
5.2EVC集成开发环境
WindowsCE开发工具WindowsCE与Windows编程有何不同处理器:CE:支持多种处理器Xp等:支持X86系列处理器屏幕或键盘等输入设备:CE:支持触摸屏(非标准分辨率大小)或无显示器,可能无鼠标或键盘Xp等:支持标准显示器,必须有鼠标和标准键盘存储设备:CE:可能没有硬盘等大容量存储器,可能无法存储大量文件,可能无法实现虚拟内存,内存访问受限(由于内存容量通常较小,又无法实现虚拟内存),内存是稀缺资源Xp等:大容量硬盘,虚拟内存,大容量内存等配置决定了程序员通常不用考虑内存是否够用。5.2EVC集成开发环境Windows22
5.2EVC集成开发环境字符编码CE:支持Unicode,而且通常都是以Unicode为字符的编码标准,即以两个字节来表示任何一个字符(不论是中文字符还是标准ASCII字符),这样在编写程序时,与字符串相关的处理需要特别注意这一点XP等:通常是使用ASCII字符,同时支持UnicodeCE的其他主要特性界面紧凑、配置多样化、API函数的精简等等开发工具的选择CE系统通常使用EVC或.NET等开发工具,同时支持模拟器及模拟器的调试5.2EVC集成开发环境字符编码23
5.2EVC集成开发环境我们的第一个WinCE应用程序:HelloWorld打开EVC4,创建一个工作空间5.2EVC集成开发环境我们的第一个Win24在对话框中选择Workspaces标签
在Workspacename对话框中填入工作空间的名称以及存储位置
5.2EVC集成开发环境在对话框中选择Workspaces标签25向刚创建的hello工作空间添加文件或项目
在对话中选择Files标签,然后选择C++SourceFile
5.2EVC集成开发环境向刚创建的hello工作空间添加文件或项目26在File处填入文件名
在hello.c中编写你的程序
5.2EVC集成开发环境在File处填入文件名5.2EVC集27
5.2EVC集成开发环境hello.c的代码/********************************************************///Hello-AsimpleapplicationforWindowsCE//#include"windows.h"////Programentrypoint//intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){printf("HelloWorld\n");return0;}5.2EVC集成开发环境hello.c28
5.2EVC集成开发环境这个文件包含了一组文件,它们中定义了WindowsAPI及其用到的结构和常量程序的入口点是本程序和标准C程序之间最大的差别
#include"windows.h"C标准入口:intmain(char**argv,intargc)WindowsCE标准入口点:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow)5.2EVC集成开发环境这个文件包含了29
5.2EVC集成开发环境这个文件包含了一组文件,它们中定义了WindowsAPI及其用到的结构和常量程序的入口点是本程序和标准C程序之间最大的差别
#include"windows.h"C标准入口:intmain(char**argv,intargc)WindowsCE标准入口点:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow)5.2EVC集成开发环境这个文件包含了30
5.2EVC集成开发环境第1个参数,hInstance为其它应用程序指明程序实例,也为需要验证这个EXE的WindowsAPI函数提供了程序实例参数hPrevInstance是从旧的Win16API(Windows3.1及更早的系统)遗留下来的。包括WindowsCE在内的所有Win32操作系统中,hPrevInstance始终是0,可以忽略掉。参数lpCmdLine指向一个Unicode字符串,包含了命令行文本。从微软WindowsCE浏览器启动的应用程序没有命令行参数,但在某些情况下,例如当系统自动启动一个程序时,系统包含一个命令行参数来说明程序为什么被启动5.2EVC集成开发环境第1个参数,h31
5.2EVC集成开发环境参数lpCmdLine是WindowsCE与XP出现差异的情况之一,在WindowsCE里,命令行字符串是Unicode字符串,在其它版本的Windows里,命令行字符串总是ASCII的最后一个参数,nCmdShow,指明了程序主窗口的初始状态。由父进程,通常是浏览器传递这个参数到程序里。它对应用程序如何配置主窗口给出了说明,在WindowsCE里,这个参数的值被限制成3个状态:普通(SW_SHOW)、隐藏(SW_HIDE)和非激活显示(SW_SHOWNOACTIVATE)。除非应用程序需要强制它的窗口预先确定状态,在程序主窗口被创建后,这个值是不加修改,只是简单的传递给ShowWindow函数5.2EVC集成开发环境参数lpCmd32
5.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");5.2EVC集成开发环境这个应用程序33
5.2EVC集成开发环境5.2EVC集成开发环境34
5.2EVC集成开发环境在EVC中,选择Build菜单下的Compilehello.c进行编译如果弹出下面的提示,点击yes即可5.2EVC集成开发环境在EVC中,35
5.2EVC集成开发环境如果没有错误,将在输入窗口(Output)中输出如下内容
在EVC中,创建可执行文件
5.2EVC集成开发环境如果没有错误36
5.2EVC集成开发环境在执行完后,会出现下面的提示在Workspace的存储目录下将生成hello.exe文件
5.2EVC集成开发环境在执行完后,37
5.2EVC集成开发环境运行程序导出一个基于模拟器的WinCE界面在开发工作站的C盘下创建soft目录,将C:\test\hello\emulatorDbg目录下的hello.exe拷贝到C:\soft目录下在Emulator的Emulator菜单下,选择FolderSharing共享本机的目录
5.2EVC集成开发环境运行程序38
5.2EVC集成开发环境在共享目录中填入C:\soft(或者使用浏览选择)在WinCE系统中打开“我的电脑”,选择StorageCard:
5.2EVC集成开发环境在共享目录中39
5.2EVC集成开发环境双击打开StorageCard,在双击hello.exe执行即可将看到WindowsCE打开一个命令行窗口,打印一个HelloWorld之后退出上述运行过程是通过路径共享的方式,使得WinCE系统能访问WinXP系统上的可执行文件应用程序的执行有时候可以直接在EVC下的模拟器执行,但是它只适合调试基于emulator:X86编译的内核。所以,我们要用模拟器调试程序时,要注意先前开发过程中的SDK的配置以及编译平台的选择。当然,对于应用程序到开发板的调试,我们还可以用前面提到过的activesync工具5.2EVC集成开发环境双击打开St40
5.2EVC集成开发环境消息窗口的使用下面的程序Welcome创建一个消息框而不是用printf来显示文字
#include"windows.h"//ProgramentrypointintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){MessageBox(NULL,TEXT("欢迎使用移动平台"),TEXT("欢迎"),MB_OK);return0;}5.2EVC集成开发环境消息窗口的使41
5.2EVC集成开发环境编译并运行Welcome,可以看到如图所示的小窗口:MessageBox函数原型如下:intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTuType);第1个参数是顶层窗口的句柄,它是消息窗口的父窗口。目前我们把这个参数置为NULL,因为Welcome还没有任何其它窗口第2个参数是准备显示在窗口里的文字。注意传入的字符串是用TEXT宏包裹的,确保它能够编译成Unicode版本第3个参数lpCaption是显示在窗口标题栏的文字。最后一个参数uType是一系列标志位,规定消息框如何显示在屏幕上。标志位规定了消息框中按扭的数量和类型,规定了图标的类型以及消息框窗口的风格设置5.2EVC集成开发环境编译并运行W42
5.3远程调试工具EVC远程调试工具主要用于在开发平台与实际平台间执行一些调试工作利用远程调试工具可以在开发平台运行,得到实际平台上的文件、监视实际平台上进程或线程的状况、测试实际平台上应用程序的性能等一部分远程调试工具是我们在开发应用程序时常用的,还有一部分是开发内核时常用的5.3远程调试工具EVC远程调试工具主要用于在开43
5.3远程调试工具远程调用评测程序(RemoteCallProfiler)远程调用评测程序包含评测和分析工具。利用图形图像显示出你的代码中算法的效率或者占用资源情况。远程调用评测程序包含一系列接口函数。在你想要评测的代码中调用这些接口函数,然后运行你编写的程序。远程调用评测程序就能够接收你编写的程序的数据并记录。最后利用图形显示出来通过实例hello来体验远程调用评测程序5.3远程调试工具远程调用评测程序(Remote44
5.3远程调试工具运行远程文件浏览程序,先弹出一个对话框,要选择访问哪个平台,如图所示选择"DefaultDevice"后。主窗口就显示出来了,如图所示。左边目录数列出的是模拟器运行的内核的所有目录。右边是指定目录下的文件。工具栏最右边是导入和导出按钮。这里的导入和导出是相对开发平台而言的远程文件浏览程序(RemoteFileViewer)
远程文件浏览程序是最常用、最易操作的工具之一。它的作用就是向实际平台导入或导出文件5.3远程调试工具运行远程文件浏览程序,先弹出一个对45
5.3远程调试工具要将一个位图文件传到模拟器中。先单击导出按钮(上箭头),在弹出的对话框中选择一个位图文件,确定后,这个文件就出现在远程文件浏览程序的右边文件窗口中了。导入也简单,先选择一个文件,再单击导入按钮,再选择路径,保存即可
5.3远程调试工具要将一个位图文件传到模拟器中。先单46
5.3远程调试工具远程堆查看程序(RemoteHeapWalker)从名字就可以看出它是用来查看操作系统中每个进程使用的堆的情况利用“远程堆查看程序”能够查看到:内核中正运行的进程的名字、ID、及使用的所有的堆的ID如图所示进程的一个堆中的首地址、结束地址、及标志(Fixed、Free)堆中每块(Block)的实际内容
5.3远程调试工具远程堆查看程序(RemoteHe47
5.3远程调试工具CE下每个进程启动时,系统会自动分配192KB的局部堆给这个进程。要是不够你就通过调用堆管理函数自己再分配自定义大小的堆。自己分配的堆,包括系统给你分配的堆,都由ID来标识“Flag”只有一个值“HF32_DEFAULT”,表示系统默认分配的堆
图中的“device.exe”,有四个都一样。但从进程ID就可以看出这是一个进程,而不是一个应用程序的四个实例。因为列表是以堆为单位,“device.exe”分配了四个堆,就显示了四个双击列表中任何一项,弹出这个堆的包含的块的列表。列出块的首地址、大小、标志。我们分配了一个堆,就可以在堆中分配数组、结构等。这个块就指每个分配的元素。标志中“Fixed”表示不能释放这个块占据的内存空间。而“Free”则相反,表示能够释放这个块占据的内存空间5.3远程调试工具CE下每个进程启动时,系统会自动分48
5.3远程调试工具远程内核跟踪程序(RemoteKernelTracker)
远程内核跟踪程序用于跟踪实际平台内核的执行情况,一般使用它跟踪内核的启动情况,搜集相关数据并在开发平台上以图表形式显示出来5.3远程调试工具远程内核跟踪程序(RemoteK49
5.3远程调试工具这个程序能够跟踪所有的进程和进程中的所有线程。从开始运行起跟踪,跟踪结束的时间由数据接收缓冲区的大小决定。缓冲区的大小从1MB到100MB,由用户自己设定跟踪内容为进程的运行、不运行,线程的运行、阻塞、睡眠。还有在线程中所有发生的同步事件。在此程序的右边有所有能够跟踪的事件对应的图标个程序提供了查找功能和过滤功能。查找功能可以查找你想要找的事件,而过滤功能可以让此程序只记录你想要的事件
5.3远程调试工具这个程序能够跟踪所有的进程和进程中50
5.3远程调试工具远程性能监视程序(RemotePerformanceMonitor)
这个程序和其它Windows操作系统中附带的性能监视器界面非常相似它能够监视RemoteAccessServer(RAS)、InternetControlMessageProtocol(ICMP)、TCP/IP、UserDatagramProtocol(UDP)、Memory、Battery、System、Process、Thread
5.3远程调试工具远程性能监视程序(RemoteP51
5.3远程调试工具远程进程浏览程序(RemoteProcessViewer)
此程序共三个窗口,分别显示当前内核中所有进程、进程中的线程、及进程中所有加载的DLL在显示进程的窗口中,分别显示进程名、进程ID、基本优先级级别、拥有的线程总数、基地址、访问键值、主窗口名在显示线程的窗口中,分别显示线程ID、当前进程ID、线程优先级、访问键在显示DLL模块的窗口中,分别显示模块名、模块ID、当前进程使用计数、全局使用计数、基地址、大小、模块句柄、路径5.3远程调试工具远程进程浏览程序(RemoteP52
5.3远程调试工具5.3远程调试工具53
5.3远程调试工具远程注册表编辑程序(RemoteRegistryEditor)
此程序和其它Windows操作系统下的注册表编辑器非常相似
它能够显示、编译开发平台下的注册表和实际平台下的注册表
5.3远程调试工具远程注册表编辑程序(Remote54
5.3远程调试工具远程消息监视程序(RemoteSpy++)这个程序和VC下附带的工具spy非常相似,和PB的spy工具几乎相同能够列出所有实际平台下的窗口和窗口消息5.3远程调试工具远程消息监视程序(RemoteS55
5.3远程调试工具远程系统信息(RemoteSystemInformation)
这个工具能够查看实际平台的系统信息,包括硬件和软件的信息
5.3远程调试工具远程系统信息(RemoteSys56
5.3远程调试工具远程屏幕截图程序(RemoteZoom-in)此工具能够截取实际平台屏幕图像错误查看程序(ErrorLookup)错误查看工具可以捕捉基于输入值的系统错误信息或者模块错误信息。开发者可以通过拖拽EVC工程中的十进制或者十六进制数值进来,进而看到提示的错误信息。5.3远程调试工具远程屏幕截图程序(RemoteZ57
5.3远程调试工具如果要调试实际平台,必须先通过串口、网卡把开发平台和实际平台连接起来。在“Target”-“ConfigureRemoteConnection”中设置。实际设备最好有网卡,串口的速度比较慢。5.3远程调试工具如果要调试实际平台,必须先通过串口58总结工欲善其事,必先利其器。熟悉EVC各个开发工具的功能与作用对我们后面的开发大有裨益。总结工欲善其事,必先利其器。熟悉EVC各个开发工具的功能与作59作业1.在实验中加强对各个工具的了解。作业1.在实验中加强对各个工具的了解。60演讲完毕,谢谢观看!演讲完毕,谢谢观看!61手持式移动设备嵌入式WinCE开发手持式移动设备嵌入式WinCE开发625EVC开发工具简介第章5EVC开发工具简介第章63本章目标掌握SDK的导出方法熟悉EVC集成开发环境掌握远程调试工具的使用本章目标掌握SDK的导出方法熟悉EVC集成开发环境掌握远程调645.1SDK使用eMbeddedVisualC++工具编写WindowsCE应用程序时,必须知道自己所开发的程序运用在什么样的硬件目标平台上,以及目标平台具有什么操作系统功能,否则,开发者开发的应用程序很可能不能在目标平台上运行通过PlatformBuilder向eMbeddedVisualC++导出应用程序要运行平台的SDK,可以使EVC开发出的应用程序能够很好的运行在特定的目标平台上应用程序开发主要包括三各方面的内容:从PB中导出SDK(软件开发工具包)安装SDK到EVC++Win32编程,MFC编程5.1SDK使用eMbeddedVisualC++工具655.1SDK下面我们重点介绍SDK的导出以及安装过程。导出SDK主要有如下几个步骤:导出新的SDKSDK的配置SDK的编译下面将在前面创建的内核myce2基础上进行SDK的导出SDK的导出启动PB,并打开前面创建的WinCE内核myce2(可以选择创建一个基于某个BSP的内核)5.1SDK下面我们重点介绍SDK的导出以及安装过程。导出665.1SDK5.1SDK675.1SDK点击PB->Platform->ConfigureSDK,如下图所示
5.1SDK点击PB->Platform->Configu685.1SDK点击下一步,如下图所示
5.1SDK点击下一步,如下图所示695.1SDK输入SDK名称和制造商名称,点击下一步,如下图所示
5.1SDK输入SDK名称和制造商名称,点击下一步,如下705.1SDK导出在eVC++环境开发的SDK,点击下一步,如下图所示
5.1SDK导出在eVC++环境开发的SDK,点击下一步715.1SDKSDK导出完成,点击Finish,如下图所示
5.1SDKSDK导出完成,点击Finish,如下图所示725.1SDKSDK的配置再次点击PB->Platform->ConfigureSDK,如下图所示
5.1SDKSDK的配置735.1SDK如下图所示选项,视图表示导出的SDK存储在开发者创建内核的路径下的SDK目录里,创建的内核平台名称为MYCE2,导出的SDK是一个标准的安装文件,名称为MYCE2_SDK.msi
5.1SDK如下图所示选项,视图表示导出的SDK存储在开745.1SDK点击Emulation,对模拟器设置,如下图所示,设置后点击“确定”退出如果不需要导出应用于模拟器的SDK,可在Emulation下拉表中选择None。在此setting项,还需要根据先前内核定制的平台,进行CPU的选择。同时还可以在install项进行安装信息的填写。
5.1SDK点击Emulation,对模拟器设置,如下图755.1SDKSDK的编译
点击PB->Platform->BuildSDK,如下图所示
5.1SDKSDK的编译765.1SDKSDK编译结束,如下图所示
5.1SDKSDK编译结束,如下图所示775.1SDK若编译过程没有错误,导出的SDK保存到开发者指定的目录,文件名为MYCE2_SDK.msi
5.1SDK若编译过程没有错误,导出的SDK保存到开发者785.1SDKSDK的安装双击MYCE2_SDK.msi文件,就可以安装,如下图所示
5.1SDKSDK的安装795.1SDK点击”Next”,如下图所示
5.1SDK点击”Next”,如下图所示805.1SDK安装过程,如下图所示5.1SDK安装过程,如下图所示815.1SDK至此,我们就已经完成了SDK的导出,设置,编译,安装过程。后续我们就需要在EVC的开发中根据我们的程序应用平台选择我们定制的SDK5.1SDK至此,我们就已经完成了SDK的导出,设置,编82
5.2EVC集成开发环境
WindowsCE开发工具WindowsCE与Windows编程有何不同处理器:CE:支持多种处理器Xp等:支持X86系列处理器屏幕或键盘等输入设备:CE:支持触摸屏(非标准分辨率大小)或无显示器,可能无鼠标或键盘Xp等:支持标准显示器,必须有鼠标和标准键盘存储设备:CE:可能没有硬盘等大容量存储器,可能无法存储大量文件,可能无法实现虚拟内存,内存访问受限(由于内存容量通常较小,又无法实现虚拟内存),内存是稀缺资源Xp等:大容量硬盘,虚拟内存,大容量内存等配置决定了程序员通常不用考虑内存是否够用。5.2EVC集成开发环境Windows83
5.2EVC集成开发环境字符编码CE:支持Unicode,而且通常都是以Unicode为字符的编码标准,即以两个字节来表示任何一个字符(不论是中文字符还是标准ASCII字符),这样在编写程序时,与字符串相关的处理需要特别注意这一点XP等:通常是使用ASCII字符,同时支持UnicodeCE的其他主要特性界面紧凑、配置多样化、API函数的精简等等开发工具的选择CE系统通常使用EVC或.NET等开发工具,同时支持模拟器及模拟器的调试5.2EVC集成开发环境字符编码84
5.2EVC集成开发环境我们的第一个WinCE应用程序:HelloWorld打开EVC4,创建一个工作空间5.2EVC集成开发环境我们的第一个Win85在对话框中选择Workspaces标签
在Workspacename对话框中填入工作空间的名称以及存储位置
5.2EVC集成开发环境在对话框中选择Workspaces标签86向刚创建的hello工作空间添加文件或项目
在对话中选择Files标签,然后选择C++SourceFile
5.2EVC集成开发环境向刚创建的hello工作空间添加文件或项目87在File处填入文件名
在hello.c中编写你的程序
5.2EVC集成开发环境在File处填入文件名5.2EVC集88
5.2EVC集成开发环境hello.c的代码/********************************************************///Hello-AsimpleapplicationforWindowsCE//#include"windows.h"////Programentrypoint//intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){printf("HelloWorld\n");return0;}5.2EVC集成开发环境hello.c89
5.2EVC集成开发环境这个文件包含了一组文件,它们中定义了WindowsAPI及其用到的结构和常量程序的入口点是本程序和标准C程序之间最大的差别
#include"windows.h"C标准入口:intmain(char**argv,intargc)WindowsCE标准入口点:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow)5.2EVC集成开发环境这个文件包含了90
5.2EVC集成开发环境这个文件包含了一组文件,它们中定义了WindowsAPI及其用到的结构和常量程序的入口点是本程序和标准C程序之间最大的差别
#include"windows.h"C标准入口:intmain(char**argv,intargc)WindowsCE标准入口点:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow)5.2EVC集成开发环境这个文件包含了91
5.2EVC集成开发环境第1个参数,hInstance为其它应用程序指明程序实例,也为需要验证这个EXE的WindowsAPI函数提供了程序实例参数hPrevInstance是从旧的Win16API(Windows3.1及更早的系统)遗留下来的。包括WindowsCE在内的所有Win32操作系统中,hPrevInstance始终是0,可以忽略掉。参数lpCmdLine指向一个Unicode字符串,包含了命令行文本。从微软WindowsCE浏览器启动的应用程序没有命令行参数,但在某些情况下,例如当系统自动启动一个程序时,系统包含一个命令行参数来说明程序为什么被启动5.2EVC集成开发环境第1个参数,h92
5.2EVC集成开发环境参数lpCmdLine是WindowsCE与XP出现差异的情况之一,在WindowsCE里,命令行字符串是Unicode字符串,在其它版本的Windows里,命令行字符串总是ASCII的最后一个参数,nCmdShow,指明了程序主窗口的初始状态。由父进程,通常是浏览器传递这个参数到程序里。它对应用程序如何配置主窗口给出了说明,在WindowsCE里,这个参数的值被限制成3个状态:普通(SW_SHOW)、隐藏(SW_HIDE)和非激活显示(SW_SHOWNOACTIVATE)。除非应用程序需要强制它的窗口预先确定状态,在程序主窗口被创建后,这个值是不加修改,只是简单的传递给ShowWindow函数5.2EVC集成开发环境参数lpCmd93
5.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");5.2EVC集成开发环境这个应用程序94
5.2EVC集成开发环境5.2EVC集成开发环境95
5.2EVC集成开发环境在EVC中,选择Build菜单下的Compilehello.c进行编译如果弹出下面的提示,点击yes即可5.2EVC集成开发环境在EVC中,96
5.2EVC集成开发环境如果没有错误,将在输入窗口(Output)中输出如下内容
在EVC中,创建可执行文件
5.2EVC集成开发环境如果没有错误97
5.2EVC集成开发环境在执行完后,会出现下面的提示在Workspace的存储目录下将生成hello.exe文件
5.2EVC集成开发环境在执行完后,98
5.2EVC集成开发环境运行程序导出一个基于模拟器的WinCE界面在开发工作站的C盘下创建soft目录,将C:\test\hello\emulatorDbg目录下的hello.exe拷贝到C:\soft目录下在Emulator的Emulator菜单下,选择FolderSharing共享本机的目录
5.2EVC集成开发环境运行程序99
5.2EVC集成开发环境在共享目录中填入C:\soft(或者使用浏览选择)在WinCE系统中打开“我的电脑”,选择StorageCard:
5.2EVC集成开发环境在共享目录中100
5.2EVC集成开发环境双击打开StorageCard,在双击hello.exe执行即可将看到WindowsCE打开一个命令行窗口,打印一个HelloWorld之后退出上述运行过程是通过路径共享的方式,使得WinCE系统能访问WinXP系统上的可执行文件应用程序的执行有时候可以直接在EVC下的模拟器执行,但是它只适合调试基于emulator:X86编译的内核。所以,我们要用模拟器调试程序时,要注意先前开发过程中的SDK的配置以及编译平台的选择。当然,对于应用程序到开发板的调试,我们还可以用前面提到过的activesync工具5.2EVC集成开发环境双击打开St101
5.2EVC集成开发环境消息窗口的使用下面的程序Welcome创建一个消息框而不是用printf来显示文字
#include"windows.h"//ProgramentrypointintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPWSTRlpCmdLine,intnCmdShow){MessageBox(NULL,TEXT("欢迎使用移动平台"),TEXT("欢迎"),MB_OK);return0;}5.2EVC集成开发环境消息窗口的使102
5.2EVC集成开发环境编译并运行Welcome,可以看到如图所示的小窗口:MessageBox函数原型如下:intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTuType);第1个参数是顶层窗口的句柄,它是消息窗口的父窗口。目前我们把这个参数置为NULL,因为Welcome还没有任何其它窗口第2个参数是准备显示在窗口里的文字。注意传入的字符串是用TEXT宏包裹的,确保它能够编译成Unicode版本第3个参数lpCaption是显示在窗口标题栏的文字。最后一个参数uType是一系列标志位,规定消息框如何显示在屏幕上。标志位规定了消息框中按扭的数量和类型,规定了图标的类型以及消息框窗口的风格设置5.2EVC集成开发环境编译并运行W103
5.3远程调试工具EVC远程调试工具主要用于在开发平台与实际平台间执行一些调试工作利用远程调试工具可以在开发平台运行,得到实际平台上的文件、监视实际平台上进程或线程的状况、测试实际平台上应用程序的性能等一部分远程调试工具是我们在开发应用程序时常用的,还有一部分是开发内核时常用的5.3远程调试工具EVC远程调试工具主要用于在开104
5.3远程调试工具远程调用评测程序(RemoteCallProfiler)远程调用评测程序包含评测和分析工具。利用图形图像显示出你的代码中算法的效率或者占用资源情况。远程调用评测程序包含一系列接口函数。在你想要评测的代码中调用这些接口函数,然后运行你编写的程序。远程调用评测程序就能够接收你编写的程序的数据并记录。最后利用图形显示出来通过实例hello来体验远程调用评测程序5.3远程调试工具远程调用评测程序(Remote105
5.3远程调试工具运行远程文件浏览程序,先弹出一个对话框,要选择访问哪个平台,如图所示选择"DefaultDevice"后。主窗口就显示出来了,如图所示。左边目录数列出的是模拟器运行的内核的所有目录。右边是指定目录下的文件。工具栏最右边是导入和导出按钮。这里的导入和导出是相对开发平台而言的远程文件浏览程序(RemoteFileViewer)
远程文件浏览程序是最常用、最易操作的工具之一。它的作用就是向实际平台导入或导出文件5.3远程调试工具运行远程文件浏览程序,先弹出一个对106
5.3远程调试工具要将一个位图文件传到模拟器中。先单击导出按钮(上箭头),在弹出的对话框中选择一个位图文件,确定后,这个文件就出现在远程文件浏览程序的右边文件窗口中了。导入也简单,先选择一个文件,再单击导入按钮,再选择路径,保存即可
5.3远程调试工具要将一个位图文件传到模拟器中。先单107
5.3远程调试工具远程堆查看程序(RemoteHeapWalker)从名字就可以看出它是用来查看操作系统中每个进程使用的堆的情况利用“远程堆查看程序”能够查看到:内核中正运行的进程的名字、ID、及使用的所有的堆的ID如图所示进程的一个堆中的首地址、结束地址、及标志(Fixed、Free)堆中每块(Block)的实际内容
5.3远程调试工具远程堆查看程序(RemoteHe108
5.3远程调试工具CE下每个进程启动时,系统会自动分配192KB的局部堆给这个进程。要是不够你就通过调用堆管理函数自己再分配自定义大小的堆。自己分配的堆,包括系统给你分配的堆,都由ID来标识“Flag”只有一个值“HF32_DEFAULT”,表示系统默认分配的堆
图中的“device.exe”,有四个都一样。但从进程ID就可以看出这是一个进程,而不是一个应用程序的四个实例。因为列表是以堆为单位,“device.exe”分配了四个堆,就显示了四个双击列表中任何
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文山2025年云南文山市公安局第一批警务辅助人员招聘47人笔试历年参考题库附带答案详解
- 怒江2025年云南怒江州财政局公益性岗位招聘笔试历年参考题库附带答案详解
- 广州2024年广东广州市海珠区江海街道基层公共就业创业服务岗位招募笔试历年参考题库附带答案详解
- 2025年纳豆香菇丝项目可行性研究报告
- 2025年电动桥式圆角挡闸项目可行性研究报告
- 2025至2031年中国洁净吹淋传递窗行业投资前景及策略咨询研究报告
- 2025至2031年中国朱雀系列外墙砖行业投资前景及策略咨询研究报告
- 2025年插件式铝基板项目可行性研究报告
- 2025年定柱悬臂起重机项目可行性研究报告
- 2025至2031年中国保尔塑像行业投资前景及策略咨询研究报告
- 2023-2024学年九年级三调语文试卷(含答案)
- 医学教程 常见急腹症的超声诊断课件
- DB11T 1481-2024生产经营单位生产安全事故应急预案评审规范
- 《氓》教学设计 2023-2024学年统编版高中语文选择性必修下册
- 《网店运营与管理》第3版 课件全套 白东蕊 第1-11章 网上开店概述- 移动网店运营
- 2024年全国国家电网招聘之电网计算机考试历年考试题(附答案)
- 化学元素周期表注音版
- 药物过敏性休克
- T-GDASE 0042-2024 固定式液压升降装置安全技术规范
- 2024福建省厦门市总工会拟录用人员笔试历年典型考题及考点剖析附答案带详解
- 四川省康定市大槽门金矿资源储量核实报告
评论
0/150
提交评论