
嵌入式系统及其应用课件第七章嵌入式系统开发应用基础.ppt
217页嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院嵌入式系统开发应用基础嵌入式系统开发应用基础李李 登登 峰峰肿回颂丈哦肆敷袄几牙型框盒丹觉层翔诧瘟嵌捎蝉麻婶酸犁幌切非讲剪草《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院主要内容主要内容:一、嵌入式系统开发概述一、嵌入式系统开发概述二、嵌入式软件开发环境建立二、嵌入式软件开发环境建立三、三、WinCE操作系统下的操作系统下的BSP开发开发四、四、WinCE内核的裁剪与定制内核的裁剪与定制伏粕邪驱寿袒牢课夜洁媒兰氛衫啄早萌绦赋惭瓷斥霞充膀讥拍厄坪汗欧赘《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院五、编写第一个简单的五、编写第一个简单的WinCE应用程序应用程序六、键盘、输入笔和菜单六、键盘、输入笔和菜单七、屏幕绘图七、屏幕绘图八、窗口、控件和对话框八、窗口、控件和对话框九、综合示例九、综合示例十、控制类应用实例十、控制类应用实例他玄昔亨奉痞广孽瞒辑瞅俯吼争侦最另邦茅汁擒毅些绅温羡责俄豌亡湛推《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院一、嵌入式系统开发概述一、嵌入式系统开发概述1、、嵌入式系统开发考虑的要素嵌入式系统开发考虑的要素 嵌入式系统包含硬件和软件两部分:硬件架构上以嵌嵌入式系统包含硬件和软件两部分:硬件架构上以嵌入式处理器为中心,配置入式处理器为中心,配置存储器存储器、、I/O设备、通信模块等设备、通信模块等必要的外设;软件部分以软件开发平台为核心,向上提供必要的外设;软件部分以软件开发平台为核心,向上提供应用编程接口(应用编程接口(API),向下屏蔽具体硬件特性的板级支),向下屏蔽具体硬件特性的板级支持包持包BSP。
嵌入式系统中,软件和硬件紧密配合,协调工嵌入式系统中,软件和硬件紧密配合,协调工作,共同完成系统预定的功能作,共同完成系统预定的功能 砚惹酸琅植盘靶话俯坟懊仲纱查饯饭犹耀梅锭涨舒笺懈林恬诞课停挝容摈《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 嵌入式系统本身是一个相当分散的系统,典型特征是嵌入式系统本身是一个相当分散的系统,典型特征是面向用户、面向产品、面向应用的,市场应用才是嵌入式面向用户、面向产品、面向应用的,市场应用才是嵌入式系统开发的导向和前提,对于不同的市场应用类型,嵌入系统开发的导向和前提,对于不同的市场应用类型,嵌入式系统开发中的嵌入式处理器、实时操作系统、仿真器、式系统开发中的嵌入式处理器、实时操作系统、仿真器、调试器以及开发队伍的技术水平和结构比例等要素的选择调试器以及开发队伍的技术水平和结构比例等要素的选择是至关重要的。
下面对各个要素进行介绍是至关重要的下面对各个要素进行介绍 盎普砂他斋少痰基李疥娇磋才舅绵陆惧停蹈裙渔眨藐我晚畴脊青鹅酶戏酶《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((1)嵌入式处理器)嵌入式处理器 嵌入式系统的功能软件集成于硬件系统之中,系统的嵌入式系统的功能软件集成于硬件系统之中,系统的应用软件与硬件一体化在嵌入式系统的硬件设备中,嵌应用软件与硬件一体化在嵌入式系统的硬件设备中,嵌入处理器是整个系统的核心部件,其性能的好坏直接决定入处理器是整个系统的核心部件,其性能的好坏直接决定整个系统的运行效果整个系统的运行效果 嵌入式系统开发面向具体应用,不同领域的应用市场嵌入式系统开发面向具体应用,不同领域的应用市场需要不同款式和性能指标的处理器来开发,于是在嵌入式需要不同款式和性能指标的处理器来开发,于是在嵌入式处理器市场中,中低端的处理器市场中,中低端的4位、位、8位和位和16位处理器依然存在,位处理器依然存在,高性能的高性能的32位处理器也有很多产品。
位处理器也有很多产品 面对这样的嵌入式处理器市场,开发设计人员应该如面对这样的嵌入式处理器市场,开发设计人员应该如何选择呢?这里有两个前提条件:何选择呢?这里有两个前提条件: 一:深入研究具体的嵌入式系统应用需求,充分的应一:深入研究具体的嵌入式系统应用需求,充分的应用需求分析后获取应用系统的性能指标用需求分析后获取应用系统的性能指标 二:分析研究市场上各大厂商提供的各款嵌入式处理二:分析研究市场上各大厂商提供的各款嵌入式处理器的性能指标器的性能指标 柿裹霉席辅迂咯杭锐踢沁撰郸依温螺亨警烹碧傍贫尽害撇声念漱浆讶刻狂《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)实时操作系统)实时操作系统 以嵌入式处理器为中心,开发人员搭建好硬件电路时以嵌入式处理器为中心,开发人员搭建好硬件电路时仅提供了裸机运行平台,要使整个系统有限的硬件资源充仅提供了裸机运行平台,要使整个系统有限的硬件资源充分利用起来,还需要(嵌入式)实时操作系统分利用起来,还需要(嵌入式)实时操作系统RTOS((Real Time Operating System)的软件支持。
的软件支持 由于具体嵌入式应用的功能需求差异以及不同由于具体嵌入式应用的功能需求差异以及不同RTOS间间不同的性能指标,不同的性能指标,RTOS的选择有三种方案:一是根据应的选择有三种方案:一是根据应用需要和公司技术实力,考虑自主开发研究(国内厂用需要和公司技术实力,考虑自主开发研究(国内厂商宁波波导公司部分款式的操作系统就是自主开发的)商宁波波导公司部分款式的操作系统就是自主开发的);二是充分考虑系统需求和流行;二是充分考虑系统需求和流行RTOS的性能指标及性价的性能指标及性价比选择商用比选择商用RTOS,如,如WinCE、、VxWorks等;三是考虑嵌等;三是考虑嵌入式入式Linux((RT_Linux),),RT_Linux是开放源代码的免是开放源代码的免费自由软件,费自由软件,互联网互联网技术论坛较多,具备较好的裁减性以技术论坛较多,具备较好的裁减性以支持不同的应用范畴支持不同的应用范畴雀藉酮晚泄蛇抽萎享献桃瞪懊腥众痴配泉试剿令蹈贰灾锯勺隧胆吊搪豢页《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3)仿真器和调试器)仿真器和调试器 调试是嵌入式系统开发过程的重要环节。
嵌入式系统调试是嵌入式系统开发过程的重要环节嵌入式系统开发调试和一般开发调试和一般PC系统开发调试有较大差别在嵌入式系系统开发调试有较大差别在嵌入式系统中,调试器是运行在桌面操作系统上的应用程序,被调统中,调试器是运行在桌面操作系统上的应用程序,被调试程序是运行在基于特定硬件平台的操作系统,两个程序试程序是运行在基于特定硬件平台的操作系统,两个程序间需要实时通信间需要实时通信 嵌入式系统调试时,主机上运行的集成开发调试工具嵌入式系统调试时,主机上运行的集成开发调试工具(调试器)通过仿真器和目标机相连仿真器处理宿主机(调试器)通过仿真器和目标机相连仿真器处理宿主机和目标机之间所有的通信,这个通信口可以是串口、并行和目标机之间所有的通信,这个通信口可以是串口、并行口或者高速以太网接口仿真器通过口或者高速以太网接口仿真器通过JTAG口和目标机相连口和目标机相连 嵌入式系统开发调试方法有快速原型仿真法和实时在嵌入式系统开发调试方法有快速原型仿真法和实时调试法线调试法 法茨遁路美吊矿埂赂埠淄渝怯族腰东著勃右厘蛊戳史烁抒婴鹤贯概羡殊佬《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((4)开发队伍的技术水平和结构比例)开发队伍的技术水平和结构比例 嵌入式系统开发中选择好了嵌入式处理器、嵌入式系统开发中选择好了嵌入式处理器、RTOS、仿、仿真器和调试器等设备外,还需要考虑开发队伍的技术水平真器和调试器等设备外,还需要考虑开发队伍的技术水平和结构比例。
和结构比例 在项目开发中,分配开发人员时不仅要确保任务在给在项目开发中,分配开发人员时不仅要确保任务在给定时间期限内完成的成功性,而且也要体现在锻炼培养后定时间期限内完成的成功性,而且也要体现在锻炼培养后继继人才人才方面任何项目的开发,依据需求分析后,经过概方面任何项目的开发,依据需求分析后,经过概要设计和详细设计,都会形成模块化结构,其工作难度也要设计和详细设计,都会形成模块化结构,其工作难度也有一定的层次性在项目开发中,除了开发人员的技术水有一定的层次性在项目开发中,除了开发人员的技术水平和结构比例外,小组内部的民主化、科学化管理决策也平和结构比例外,小组内部的民主化、科学化管理决策也是很重要的环节是很重要的环节叮胀挟爹芽弊坑擦彦船超雅膛酉完惨字盾即烈蛆根泡秽际哮腔昆吩吻管弗《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、、嵌入式系统开发的特点嵌入式系统开发的特点 嵌入式系统设计的主要任务是定义系统的功能、决嵌入式系统设计的主要任务是定义系统的功能、决定系统的架构,并将功能映射到架构。
这里的架构既包定系统的架构,并将功能映射到架构这里的架构既包括软件架构也包括硬件体系架构嵌入式系统的设计方括软件架构也包括硬件体系架构嵌入式系统的设计方法跟一般的硬件设计、软件开发的方法不同,是采用软法跟一般的硬件设计、软件开发的方法不同,是采用软件与硬件协同设计的方法,开发过程不仅涉及软件领域件与硬件协同设计的方法,开发过程不仅涉及软件领域的知识,还涉及硬件领域的综合知识,甚至机械方面的的知识,还涉及硬件领域的综合知识,甚至机械方面的知识要求设计者必须熟悉并能熟练的应用这些领域的知识要求设计者必须熟悉并能熟练的应用这些领域的各种技术,才能使设计达到最优各种技术,才能使设计达到最优 与通常的系统设计相比,嵌入式系统的设计有以下与通常的系统设计相比,嵌入式系统的设计有以下几个特点几个特点 :: 貉庆旧陛蛔女怎薛吹痘艾浙番凌沥机童盛参减凯盛秃导虽迹馒碑囚榷缀阜《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((1)软硬件协同并行开发)软硬件协同并行开发 软硬件协同开发就是在整个设计的生命周期,软件和硬软硬件协同开发就是在整个设计的生命周期,软件和硬件的设计一直是保持并行的,在设计过程中两者交织在一起,件的设计一直是保持并行的,在设计过程中两者交织在一起,互相支持,互相提供开发的平台,而不是传统方法中将软硬互相支持,互相提供开发的平台,而不是传统方法中将软硬件分开独立进行,在设计流程的开始就将系统所要实现的功件分开独立进行,在设计流程的开始就将系统所要实现的功能划分到用硬件或软件实现,然后独立进行软件和硬件的设能划分到用硬件或软件实现,然后独立进行软件和硬件的设计,最后才进行软硬件的集成。
系统是否满足用户需求只有计,最后才进行软硬件的集成系统是否满足用户需求只有等到软硬件集成之后才能知道,所以传统设计方法进行复杂等到软硬件集成之后才能知道,所以传统设计方法进行复杂系统的设计时常常难以达到设计要求和实现优化设计系统的设计时常常难以达到设计要求和实现优化设计钾黎割鬃院域脉嘱桩蹭坦秒匆帘药垣涨摊颐豺题闯北肃珍诡刮磨篡殊李晚《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3)实时嵌入式操作系统的多样性)实时嵌入式操作系统的多样性 实实时时操操作作系系统统不不像像台台式式机机操操作作系系统统那那样样,,只只有有微微软软公公司司一一家家独独大大现现在在可可用用的的实实时时操操作作系系统统很很多多。
如如VxWorks,,QNX,,uc/os,,RT-Linux,,WinCE、、Psos等等可可以以根根据据自自己己的的需需求,选择相应的操作系统求,选择相应的操作系统 ((2)嵌入式系统通常是面向特定应用的系统)嵌入式系统通常是面向特定应用的系统 嵌入式嵌入式CPU与通用型与通用型CPU最大的不同就是,嵌入式最大的不同就是,嵌入式CPU大多工作在为特定的用户群设计的系统中,它通常都具有低大多工作在为特定的用户群设计的系统中,它通常都具有低功耗、小体积、集成度高等特点,能够把通用功耗、小体积、集成度高等特点,能够把通用CPU中许多由中许多由板卡完成的任务集成在芯片的内部,从而有利于嵌入式系统板卡完成的任务集成在芯片的内部,从而有利于嵌入式系统设计区域小型化设计区域小型化 ((4)与台式机相比可利用资源很少)与台式机相比可利用资源很少娟咋胳槽吵祝导硒宴巩要邮舆捕棠迈纸压观颅授停孟皂忆艳琴止游队晚凿《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((5)嵌入式系统设计需要交叉开发环境)嵌入式系统设计需要交叉开发环境 嵌入式系统的开发通常采用嵌入式系统的开发通常采用“宿主机宿主机/目标机目标机”的方式。
的方式首先利用宿主机上丰富的设备资源及良好的开发环境来开首先利用宿主机上丰富的设备资源及良好的开发环境来开发和方针目标机上的软件然后通过发和方针目标机上的软件然后通过UART和和Ethernet接口接口将交叉编译生成的代码传输并下载到目标机上并用交叉调将交叉编译生成的代码传输并下载到目标机上并用交叉调试器在实时内核试器在实时内核/操作系统或监控程序的支持下进行实时分操作系统或监控程序的支持下进行实时分析和调试最后,目标机在特定的环境下运行析和调试最后,目标机在特定的环境下运行桐诧料硕韩酶抉制畏峻彭剂阶剧蛮筐挞计困久臂课翠鹰盆涎瘤拂襄抿跌卫《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((6)嵌入式系统的程序需要固化)嵌入式系统的程序需要固化 通用的系统在测试完成之后就可以投入使用,其目标通用的系统在测试完成之后就可以投入使用,其目标环境一般是环境一般是PC机,因此在总体结构上与开发环境差别不大,机,因此在总体结构上与开发环境差别不大,而嵌入式系统的开发环境是而嵌入式系统的开发环境是PC机,但运行的目标环境千差机,但运行的目标环境千差万别,可以是、万别,可以是、PDA,也可以是仪器设备等,而且应,也可以是仪器设备等,而且应用软件应用软件在目标环境下必须存储在非易失性存储设用软件应用软件在目标环境下必须存储在非易失性存储设备中,保证关机和断点之后下次能够再次使用。
因此,在备中,保证关机和断点之后下次能够再次使用因此,在系统应用软件开发完成之后,应生产固化版本,将其烧写系统应用软件开发完成之后,应生产固化版本,将其烧写到目标环境的到目标环境的Flash中运行 誊爬圃邹摇嘱溜港司搞厄离涯肉菩躬窑蜗墩谬惟墒栈铭捏讽苔否硅陌占疵《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((7)嵌入式系统的软件开发难度大)嵌入式系统的软件开发难度大 嵌嵌入入式式系系统统的的特特点点之之一一就就是是系系统统要要求求具具有有实实时时性性这这些些实实时时性性在在开开发发系系统统中中要要得得到到保保证证,,就就要要求求设设计计者者在在系系统统的的需需求求分分析析中中充充分分考考虑虑系系统统的的实实时时性性。
实实时时性性的的体体现现一一部部分分来来源源于于实实施施操操作作系系统统的的实实时时性性,,这这方方面面可可以以采采用用实实时时操操作作系系统统,,如如RT-Linux、、WINCE、、VxWorks等等,,而而另另一一方方面面依依赖赖于于系系统统本本身身的的设设计计和和代代码码的的质质量量,,这这就就要要求求系系统统的的设设计计者者和和开开发发人人员员构构建建出出良良好好的的系系统统模模型型和和算算法法,,所所有有的的这这些必将会加大软件的开发难度些必将会加大软件的开发难度向才冲颅卸乍国言舆封记侩姻喝笨参只失躬娱昆滋但珊扎汉橙泵煤疟陇诚《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((8))嵌嵌入入式式应应用用软软件件的的开开发发需需要要强强大大的的开开发发工工具具和操作系统的支持和操作系统的支持 随随着着Internet技技术术的的成成熟熟、、带带宽宽的的提提高高,,ICP和和ASP在在网网上上提提供供的的信信息息内内容容日日益益丰丰富富,,应应用用项项目目多多种种多多样样,,像像电话、、手机、、电话座座机机及及电电冰冰箱箱、、微微波波炉炉等等嵌嵌入入式式电电子子设设备备的的功功能能不不在在单单一一,,电电器器结结构构也也日日益益复复杂杂。
为为了了满满足足应应用用功功能能的的升升级级,,设设计计师师们们一一方方面面采采用用更更强强大大的的嵌嵌入入式式微微处处理理器器,,如如32位位、、64位位RISC芯芯片片或或信信号号处处理理芯芯片片DSP增增强强处处理理能能力力;;同同时时采采用用实实时时多多任任务务编编程程技技术术和和交交叉叉开开发发工工具具技技术术来来控制功能复杂性,保证软件质量和缩短开发周期控制功能复杂性,保证软件质量和缩短开发周期 肥锄婚届先缓栗淑箕末碴空菇躯沏寂窒坚班篆赏绵甸仲汝犹琵疗灿听访龚《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((9))嵌嵌入入式式系系统统还还需需要要提提供供强强大大的的硬硬件件开开发发工工具具和和软软件件包包的的支支持持,,需需要要设设计计者者从从速速度度、、功功能能和和成成本本综合考虑。
综合考虑 此此外外,,嵌嵌入入式式系系统统对对稳稳定定性性、、可可靠靠性性、、功功耗耗、、抗抗干干扰扰性性、、重重量量、、体体积积等等方方面面的的性性能能要要求求都都比比通通用用系系统统的的要要求求更更为为严严格呆槛躯唾懊伦笺捞烬疥旭引馋晌帧展蛊欠陇稗布掳尿沉垂纱笆焊笨裔礁绳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3、、嵌入式系统的软件开发的基本流程嵌入式系统的软件开发的基本流程嵌入式系统的软件开发流程图嵌入式系统的软件开发流程图 莱锦当准邹脱库虏谢俱炬轨道府房检侍涂懦给嚎箍嚏牙亦窑峪舍钟坞竹缔《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((1)) BSP的开发和调试的开发和调试 BSP是板级支持包,是介于主板硬件和操作系统之间的一是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件系统,作系统,使之能够更好的运行于硬件系统,BSP是相对于操作是相对于操作系统而言的,不同的操作系统对应于不同定义形式的系统而言的,不同的操作系统对应于不同定义形式的BSP。
对于一个新的硬件系统,即使第三方已经提供了完整的驱对于一个新的硬件系统,即使第三方已经提供了完整的驱动程序,但是由于动程序,但是由于FLASH或者或者RAM的不同,必须进行的不同,必须进行BSP的的编写,使之能够支持操作系统,完成对硬件的控制,因此对于编写,使之能够支持操作系统,完成对硬件的控制,因此对于嵌入式操作系统的软件开发,首先应该进行嵌入式操作系统的软件开发,首先应该进行BSP板极支持包的板极支持包的编写和调试编写和调试 绝淫汁授彩沥镊衬抿合禄真薛峻廊智分株增挎惫质秘钉疗吉擒俯艾傣无份《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)操作系统的裁剪)操作系统的裁剪 对应于对应于PC机上的软件开发,这应该属于系统设计,针对嵌机上的软件开发,这应该属于系统设计,针对嵌入式系统的硬件环境,必须对操作系统进行裁剪设计,一方面入式系统的硬件环境,必须对操作系统进行裁剪设计,一方面卸载和删除无用的模块,修改和简化需要的模块;另一方面增卸载和删除无用的模块,修改和简化需要的模块;另一方面增加板极支持包的支持,相对嵌入式硬件系统,完善相对应的操加板极支持包的支持,相对嵌入式硬件系统,完善相对应的操作系统,使得系统最为紧凑、小巧。
作系统,使得系统最为紧凑、小巧 ((3)嵌入式操作系统内核的配置和编译)嵌入式操作系统内核的配置和编译 当系统设计确定后,就可以对具体对操作系统的内核进行当系统设计确定后,就可以对具体对操作系统的内核进行合理配置和编译,形成新的应用于嵌入式硬件系统的新的内核,合理配置和编译,形成新的应用于嵌入式硬件系统的新的内核,最后一般形成内核映像文件,下载到系统的最后一般形成内核映像文件,下载到系统的FLASH中,完成内中,完成内核的核的“量身定做量身定做” 拢漾志伦靡鲁枷狗涌泞打颜抉侮贤置怖痔偷箔真圈丁涎因笆幢刨富谦裴息《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((4)系统文件系统的建立)系统文件系统的建立 对对于于操操作作系系统统,,内内核核裁裁剪剪完完成成后后,,接接着着对对文文件件系系统统进进行行裁裁剪剪,,由由于于每每一一种种操操作作系系统统都都支支持持很很多多文文件件系系统统,,对对于于嵌嵌入入式式操操作作系系统统的的文文件件系系统统裁裁剪剪,,和和内内核核一一样样,,针针对对板板子子上上的的并并口口FLASH、、串串口口FLASH,,各各种种存存储储卡卡、、U盘盘等等等等,,构构造造和和裁裁剪剪出出相应的文件系统,完成文件系统的建立。
相应的文件系统,完成文件系统的建立 ((5)用户程序的编写和简单的仿真调试)用户程序的编写和简单的仿真调试 建立交叉编译的开发环境,开发用户的应用程序,并且尽建立交叉编译的开发环境,开发用户的应用程序,并且尽可能采用一些开发工具,如可能采用一些开发工具,如Multi-ice等,把一些模块下载到等,把一些模块下载到目标板上,进行测试目标板上,进行测试 篇迭碾眠呵衬鸿柯补憎乱呼忻禾甥欠重魔异专玖封朝绞佣被像疲迅钒扭奔《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((6)整体系统的目标板仿真调试)整体系统的目标板仿真调试 应用程序开发完后,和文件系统一起,形成文件系统的映应用程序开发完后,和文件系统一起,形成文件系统的映像文件,然后通过仿真工具(仿真机、调试串口等)和像文件,然后通过仿真工具(仿真机、调试串口等)和host-target开发环境,对系统进行仿真和调试。
开发环境,对系统进行仿真和调试 ((7)系统下载和脱机运行)系统下载和脱机运行 当仿真完成,确定系统功能开发达到目标后,把最终形成当仿真完成,确定系统功能开发达到目标后,把最终形成的映像文件的映像文件——内核映像文件和文件系统映像通过开发系统的内核映像文件和文件系统映像通过开发系统的下载工具进行下载,然后,去掉调试系统、加电复位运行下载工具进行下载,然后,去掉调试系统、加电复位运行 叙类嚎煤侯偏街陷绊瞧站陋蔽观深评荐臃袜氛伍苞妓斯乱点萝鞠靠设绸墒《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 以以WinCE作为嵌入式操作系统平台为例,如果为自己的嵌作为嵌入式操作系统平台为例,如果为自己的嵌入式设备定制入式设备定制Win CE操作系统,则须进行创建、构建、运行与操作系统,则须进行创建、构建、运行与发布发布OS等一系列操作。
从系统的角度开发等一系列操作从系统的角度开发WinCE,创建一个定,创建一个定制的制的Win CE操作系统的一般流程如图所示操作系统的一般流程如图所示 l如果目标系统本身也是定制的,此时需要自主开发如果目标系统本身也是定制的,此时需要自主开发BSPl对操作系统进行裁剪,配置各个组件,并且修改相关的配置对操作系统进行裁剪,配置各个组件,并且修改相关的配置文件l建立定制建立定制Windows CE操作系统的操作系统的image文件l 将建立的将建立的image文件下载到目标设备上,进行调试文件下载到目标设备上,进行调试l 重复配置、建立、下载及调试的过程,直到达到要求,从而重复配置、建立、下载及调试的过程,直到达到要求,从而得到了一个定制的得到了一个定制的Windows CE操作系统操作系统l 为了方便应用程序开发,在定制的为了方便应用程序开发,在定制的Windows CE操作系统操作系统基础上,可以发布相应的基础上,可以发布相应的Embedded Visual C++的软件开的软件开发包(发包(SDK),供软件开发者使用供软件开发者使用 捍仙苏粤散砂夹献宵丢损余排移比迈底拴使酋入呈撞敷纽脂擞紊将咏萄即《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院歧卞砚沼亢敏问肆伏尹吕缸懈斡亢珐皿臃锻憋瞪腿柴属烙村柿偷潘载掌冬《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院二、嵌入式软件开发环境建立二、嵌入式软件开发环境建立1、、嵌入式软件开发语言嵌入式软件开发语言 C语言作为一种通用的高级语言,大幅度提高了嵌入式系语言作为一种通用的高级语言,大幅度提高了嵌入式系统工程师的工作效率,使之能够充分发挥出嵌入式处理器日统工程师的工作效率,使之能够充分发挥出嵌入式处理器日益提高的性能,缩短产品进入市场时间。
另外,益提高的性能,缩短产品进入市场时间另外,C语言便于语言便于移植和修改,使产品的升级和继承更迅速更重要的是采用移植和修改,使产品的升级和继承更迅速更重要的是采用C语言编写的程序易于在不同的开发者之间进行交流,从而语言编写的程序易于在不同的开发者之间进行交流,从而促进了嵌入式系统开发的产业化促进了嵌入式系统开发的产业化称吏扑蜂眨眩入披企答端镰催蹄铺渝黑捷岭近酒雄娩孺赠唉痪周只昔屯锻《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 新型的微控制器指令及新型的微控制器指令及SoC速度不断提高,存储器空间速度不断提高,存储器空间也相应加大,已经达到甚至超过了目前的通用计算机中的微也相应加大,已经达到甚至超过了目前的通用计算机中的微处理器,为嵌入式系统工程师采用过去一直不敢问津的处理器,为嵌入式系统工程师采用过去一直不敢问津的C++语言创造了条件。
语言创造了条件C++语言强大的类、继承等功能更便于实语言强大的类、继承等功能更便于实现复杂的程序功能但是现复杂的程序功能但是C++语言为了支持复杂的语法,在语言为了支持复杂的语法,在代码生成效率方面不免有所下降为此,代码生成效率方面不免有所下降为此,1995年初,在日本年初,在日本成立的成立的Embedded C++技术委员会经过几年的研究,针对技术委员会经过几年的研究,针对嵌入式应用制定了减小代码尺寸的嵌入式应用制定了减小代码尺寸的EC++标准EC++保留保留了了C++的主要优点,提供了的主要优点,提供了C++的向上兼容性,并满足嵌入的向上兼容性,并满足嵌入式系统设计的一些特殊要求在嵌入式高级语言编译器方面式系统设计的一些特殊要求在嵌入式高级语言编译器方面处于领先地位的处于领先地位的Tasking公司,是公司,是EC++技术委员会之一,技术委员会之一,也是最先推出也是最先推出EC++产品的公司产品的公司 惮锡卖年女描熟善阐羡溜龙抒税笔贵箍媚舟唬蓝漠谐职陕殃艘奔熟借噶为《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 C/C++/EC++引入嵌入式系统,使得嵌入式开发和个引入嵌入式系统,使得嵌入式开发和个人计算机、小型机等之间在开发上的差别正在逐渐消除,软人计算机、小型机等之间在开发上的差别正在逐渐消除,软件工程中的许多经验、方法乃至库函数可以移植到嵌入式系件工程中的许多经验、方法乃至库函数可以移植到嵌入式系统。
在嵌入式开发中采用高级语言,还使得硬件开发和软件统在嵌入式开发中采用高级语言,还使得硬件开发和软件开发可以分工,从事嵌入式软件开发不再必须精通系统硬件开发可以分工,从事嵌入式软件开发不再必须精通系统硬件和相应的汇编语言指令集和相应的汇编语言指令集 另一种高级语言是另一种高级语言是JAVAJAVA本来是为设备独立的嵌本来是为设备独立的嵌入式系统设计的,为了提高程序继承性的语言,但是目前基入式系统设计的,为了提高程序继承性的语言,但是目前基于于JAVA的嵌入式开发工具代码生成长度要比嵌入式的嵌入式开发工具代码生成长度要比嵌入式C编译器编译器工具差工具差10倍以上因此,倍以上因此,EC++很可能将成为未来的主流工很可能将成为未来的主流工具在目脊潦髓傅冀堤脱胚仁蜂怀贪灰效氯勾溯涯耘出柬置鼠扁些猛漓爆坪蛋《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、嵌入式软件开发工具、嵌入式软件开发工具 ((1))WinCE内核裁剪与定制平台内核裁剪与定制平台 Platform Builder 是微软公司提供给是微软公司提供给Windows CE 开发开发人员进行基于人员进行基于Windows CE 平台下嵌入式操作系统定制的集成平台下嵌入式操作系统定制的集成开发环境。
它提供了所有进行设计、创建、编译、测试和调试开发环境它提供了所有进行设计、创建、编译、测试和调试Windows CE 操作系统平台的工具它运行在桌面操作系统平台的工具它运行在桌面Windows 下,开发人员可以通过交互式的环境来设计和定制内核、选择下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试同时,开发人员还可以利用系统特性,然后进行编译和调试同时,开发人员还可以利用Platform Builder 来进行驱动程序开发和应用程序项目的开发来进行驱动程序开发和应用程序项目的开发等等Platform Builder 的强大功能,已使其成为的强大功能,已使其成为Windows CE 平台下嵌入式操作系统开发和定制的必备工具平台下嵌入式操作系统开发和定制的必备工具窄亡厨熄石投交课咐萌毛耗甄象儒休郭殖钵诲躇边焦淡烙拥襄曙用捉吊馒《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院以下是以下是Platform Builder 提供的工具集。
提供的工具集l使用模版来创建一个新的平台使用模版来创建一个新的平台l使用模版来创建一个新的板级支持包使用模版来创建一个新的板级支持包l在在Catalog 列表中显示了一系列的系统特性,这些特性列表中显示了一系列的系统特性,这些特性可以被选择用于新的平台中可以被选择用于新的平台中l自动检查各个功能模块之间的依赖关系,以确保系统所自动检查各个功能模块之间的依赖关系,以确保系统所需要的功能及其子功能,关联的模块都能被包含的定制的需要的功能及其子功能,关联的模块都能被包含的定制的目录中l 通过输出的模板,将一个系统的功能输出到配置文件,通过输出的模板,将一个系统的功能输出到配置文件,以便其他用户使用以便其他用户使用l 提供基本的默认配置,这为定制具有特定功能的操作系提供基本的默认配置,这为定制具有特定功能的操作系统带来了方便统带来了方便姜着汲蜡遍荚池编赊篓沿倚涵尖雏浅锚挤哄写存丁垃图浇讼滥寸雇挡渝波《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院lWindows CE Test Kit 提供了测试驱动的一系列工具。
提供了测试驱动的一系列工具l 内核调试器能调试被定制的操作系统,并且能给用户提内核调试器能调试被定制的操作系统,并且能给用户提供性能上的测试参数供性能上的测试参数l 应用程序调试器能在目标机或者虚拟机的操作系统中测应用程序调试器能在目标机或者虚拟机的操作系统中测试应用程序试应用程序l 远程调试器能通过远程控制来搜集目标机上的信息,比远程调试器能通过远程控制来搜集目标机上的信息,比如远程文件监视器、注册表监视器如远程文件监视器、注册表监视器l 虚拟器可以在硬件平台未搭建好的时候能调试硬件无关虚拟器可以在硬件平台未搭建好的时候能调试硬件无关的程序 l SDK 输出模板可以将特定系统的输出模板可以将特定系统的SDK 导出,这可以是导出,这可以是应用程序开发人员使用应用程序开发人员使用EVC就可以为特定的系统开发软件就可以为特定的系统开发软件EVC 调试的是应用程序软件,而调试的是应用程序软件,而Platform Builder往往要往往要编译整个内核再调试,两者的开发效率是不同的编译整个内核再调试,两者的开发效率是不同的番昌红栗押知礼朝竣倦邯溪子半芹寂施鸭查庇噪莎馈侥魁序净楔禁邹馅嫉《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 具体来说,具体来说,Platform Builder 提供的主要开发特性如下。
提供的主要开发特性如下 1)) 平台开发向导(平台开发向导(Platform Wizard)、)、BSP(主板支(主板支持软件包)和开发向导(持软件包)和开发向导(BSP Wizard)开发向导用来引导)开发向导用来引导开发人员去创建一个简单的系统平台或开发人员去创建一个简单的系统平台或BSP,然后再根据要求,然后再根据要求作进一步的修改提高了平台和作进一步的修改提高了平台和BSP 创建的效率创建的效率 2)基础配置为各种流行的设备类别预置的可操作系统基)基础配置为各种流行的设备类别预置的可操作系统基础平台,为自定义操作系统的创建提供了一个起点开发人员础平台,为自定义操作系统的创建提供了一个起点开发人员可以很容易地定制并编译出一个具备最基本功能的操作系统可以很容易地定制并编译出一个具备最基本功能的操作系统然后再在其上做后续的修改然后再在其上做后续的修改 3)特性目录()特性目录(Catalog)操作系统可选特性均在特性目)操作系统可选特性均在特性目录(录(Catalog)中列出,开发人员可以选择相应的特性来定制)中列出,开发人员可以选择相应的特性来定制操作系统操作系统。
种揽膘弛钻油萝塔观蕾惺捌荤知侠图萌否洽阶硬佑苛摄箕卤枫佬牛不瑶艳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 4)自动化的依赖性检查特性()自动化的依赖性检查特性(Feature)之间的依赖关)之间的依赖关系是系统自动维护的开发人员在选择一个特性时,系统会自系是系统自动维护的开发人员在选择一个特性时,系统会自动将这一特性所依赖的特性加上;反之,当删除一个特性时,动将这一特性所依赖的特性加上;反之,当删除一个特性时,系统会自动检测是否已经选择了依赖于它之上的其他特性,如系统会自动检测是否已经选择了依赖于它之上的其他特性,如果有,系统会给出提示,通知开发人员这一特性现在不能删除。
果有,系统会给出提示,通知开发人员这一特性现在不能删除 5)系统为驱动程序开发提供了基本的测试工具集系统为驱动程序开发提供了基本的测试工具集Windows CE Test Kit(测试工具包)测试工具包) 6)内核调试器可以对自定义的操作系统映像进行调试,)内核调试器可以对自定义的操作系统映像进行调试,并且向用户提供有关映像性能的信息并且向用户提供有关映像性能的信息 7)导出向导()导出向导(Export Wizard)可以向其他)可以向其他Platform Builder 用户导出自定义的目录(用户导出自定义的目录(Catalog)特性迟祝令赖伙誊莆傍锤须艺抽扳荚枝王径岭举惶歉用族咋矮敦伐嫌牡版尿旱《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 8)导出)导出SDK 向导(向导(Export SDK Wizard)。
使用户可以)使用户可以导出一个自定义的软件开发工具包(导出一个自定义的软件开发工具包(SDK)即可以将客户)即可以将客户定制的定制的SDK 导出到特定的开发环境中(如导出到特定的开发环境中(如EVC)去这样开)去这样开发人员就可以使用特定的发人员就可以使用特定的SDK 写出符合特定的操作系统平台写出符合特定的操作系统平台要求的应用程序要求的应用程序 9)远程工具可以执行同基于)远程工具可以执行同基于Windows CE 的目标设备的目标设备有关的各种调试任务和信息收集任务有关的各种调试任务和信息收集任务 10)仿真器()仿真器(Emulator)通过硬件仿真加速和简化了)通过硬件仿真加速和简化了系统的开发,使用户可以在开发工作站上对平台和应用程序系统的开发,使用户可以在开发工作站上对平台和应用程序进行测试,大大简化了系统开发流程,缩短了开发时间进行测试,大大简化了系统开发流程,缩短了开发时间 11)) 应用程序调试器:可以在自定义的操作系统映像上对应用程序调试器:可以在自定义的操作系统映像上对应用程序进行调试,提供了对应用程序进行调试,提供了对NET FrameWork Compact Edition(即(即.NET平台精简框架)的支持。
平台精简框架)的支持 稠焕贝茄桌港输细胃硼赢叹瘤画怯咒总罕泌绊泡阮寻谊凌追角贱滁迎允允《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)) Platform Builder 的安装的安装 Platform Builder 是商用软件,因此要通过正规途径获得是商用软件,因此要通过正规途径获得安装安装Platform Builder 至少需要至少需要4GB 的磁盘空间,建议使用的磁盘空间,建议使用512MB 以上的内存,以上的内存,1.8GHz 以上主频的处理器运行以上主频的处理器运行Setup.exe 文件后,将出现如图所示的对话框文件后,将出现如图所示的对话框。
肯取霖萎逛几鹏没毙祟沏控娇骋挑萤捅晾篷金梆佰敞来泌橙桐俞搐尸亩览《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 选择选择Install 安装,将出现如图所示的对话框安装,将出现如图所示的对话框训穆颅筒否秀髓霉泽鲍型杰绘剐反疥类象痞吐吁刽罕奥牌篙妇怕音蹭远作《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 选择选择next 按钮,出现协议许可对话框,选择接受协议,按钮,出现协议许可对话框,选择接受协议,单击单击next 按钮,出现如图所示对话框。
按钮,出现如图所示对话框磨弧仲甜颠滚顾精万蛛邹篇凳斑祝凛院径誉岿四挠驰等披驻撼纂虏已钎血《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 选择安装选择安装Custom((Tools and OS),将安装工具和系统),将安装工具和系统定制的环境,包括操作系统公开的源代码单击定制的环境,包括操作系统公开的源代码单击Next 按钮,按钮,出现如图所示对话框出现如图所示对话框缸苞超哥垄蹿筏耙钾丹鼻裤挥毋刁杰徘夹缺角投品趁噬独浮枕岔讣试狙蓉《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 安装完毕后,单击安装完毕后,单击Finish 按钮,此时将打开按钮,此时将打开Platform Builder,界面如图所示。
界面如图所示释抽萄援轰豁旬萨涌澎肆啼鞠伎碾倍赛期呼剔捆痛姆爪隋圣组岳文蓝肛赏《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3))WinCE应用软件开发平台应用软件开发平台 Embedded Visual C++((EVC))是是微微软软公公司司提提供供的的开开发发嵌嵌入入式式软软件件的的平平台台,,它它是是Visual C++的的子子集集EVC 自自带带了了标标准准的的Windows CE 的的SDK,,如如果果读读者者有有需需要要,,可可以以从从Platform Builder中导出中导出SDK,然后安装在,然后安装在EVC 中 EVC和和Platform Builder的的不不同同之之处处在在于于::Platform Builder 针针对对的的是是操操作作系系统统的的定定制制,,编编译译目目标标是是整整个个OS 的的内内核核,,虽虽然然Platform Builder 也也能能开开发发应应用用程程序序,,但但是是这这些些应应用用程程序序是是作作为为整整个个系系统统的的一一部部分分而而存存在在,,编编译译时时还还是是以以一一个个操操作作系系统统为为单单位位;;EVC 针针对对的的是是应应用用软软件件开开发发,,特特定定操操作作系系统统的的SDK 就就已已经经为为它它提提供供了了系系统统的的运运行行环环境境,,因因此此它它编编译译的的单单位位是是一一个个应应用用程程序序,,EVC 会会提提供供虚虚拟拟器器加加载载SDK 来来运行应用程序。
运行应用程序 失蛤啤漱润扣窍帆姆呻逮轨卜阴挛溜阑潘爆绵策莲良秃方厅震洁衅欣惰努《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Embedded Visual C++的安装的安装 EVC可可以以从从微微软软公公司司的的网网站站上上下下载载,,运运行行Setup.exe 以以后后,,将出现如图所示的对话框将出现如图所示的对话框猎房宙才忘趟骗捐淖摊翁幼镇奢及慕到鼠辞际箍果呆瘁哎兄蹦军哨咯瓷池《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 单单击击Next 按按钮钮,,按按照照安安装装向向导导安安装装。
出出现现如如图图所所示示界界面面时时,,要要注注意意将将EVC 平平台台和和Standard SDK 都都安安装装上上,,如如果果不不提供提供SDK,,EVC 是不能运行的是不能运行的氯脊孪湿汉允郭陇晰裙晋鸿这刮暗届馆拟丘敢垮魂瞒豌堵蒋许剐墩奸喊肠《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 单单击击Next 按按钮钮,,按按照照安安装装向向导导继继续续安安装装即即可可安安装装完完毕毕后启动后启动EVC,将看到如图所示的界面将看到如图所示的界面斋焚灵瞒桐亿释饥盅竭硬浊俊模乃憾识牙铜荒尤冷哲砚菇墟亚风寸干故炕《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Microsoft Pocket PC 2003 模拟器的安装模拟器的安装 在在EVC中有自带的模拟器中有自带的模拟器STANDSDK emulator,进行,进行基于基于WinCE平台的开发时,平台的开发时,Microsoft Pocket PC 2003 SDK是必不可少的。
值得注意的是该是必不可少的值得注意的是该SDK中所包含的模拟器中所包含的模拟器均为英语环境,在安装完均为英语环境,在安装完PPC后可以安装其中文补丁第二版,后可以安装其中文补丁第二版,这样模拟器所使用的就是中文操作系统界面了如果没有安这样模拟器所使用的就是中文操作系统界面了如果没有安装中文补丁,也可以直接将中文模拟器的装中文补丁,也可以直接将中文模拟器的BIN文件拷贝到英文件拷贝到英文模拟器目录下,然后将该文件改成同名英文文模拟器目录下,然后将该文件改成同名英文 BIN 的名字的名字相同就可以了相同就可以了BIN文件文件BIN文件一般在文件一般在...\windows CE Tools\WCE400\Pocket PC 2003\emulation\ 目录下,目录下,有三个有三个bin 文件或者去微软的网站上单独下载中文环境的文件或者去微软的网站上单独下载中文环境的模拟器熊稚牲活国咸魏苗额系梢扛勃庚震邓碍泳巳埠包皿儒醉禾蝗时山逛恳谓郧《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 运运行行Microsoft Pocket PC 2003 SDK.msi后后,,进进入入如如图图所所示示的界面。
的界面锌鳞颈虫涡愤币瓤绰烫其橡觅阐痹匿博布宦茅坑石作轰偿榔巧血抛甸传檀《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 单单击击next,,进进入入安安装装界界面面完完成成安安装装并并汉汉化化后后运运行行模模拟拟器器,,模拟器如图所示模拟器如图所示姿区驴辫役常曹乙铰引但弟蝴毋逛赘阉缎纠归稗披巾滨藤伶轰豺禁诵瓶暖《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院三、三、WinCE操作系统下的操作系统下的BSP开发开发 BSP((Board Support Package)一般译为板级支持)一般译为板级支持包,它是介于主板硬件和操作系统之间的一层软件系统,严包,它是介于主板硬件和操作系统之间的一层软件系统,严格意义上来说格意义上来说BSP应该属于操作系统的一部分。
应该属于操作系统的一部分 解决操作系统跨平台方法很多,其中之一是把操作系统解决操作系统跨平台方法很多,其中之一是把操作系统与硬件交互的接口抽象抽取出来,作为单独的一层函数,操与硬件交互的接口抽象抽取出来,作为单独的一层函数,操作系统访问底层硬件时,不再直接访问硬件,而是调用抽象作系统访问底层硬件时,不再直接访问硬件,而是调用抽象出来的这一层函数完成操作,这样在不同的硬件平台上,只出来的这一层函数完成操作,这样在不同的硬件平台上,只要重写这一层代码即可,简化了操作系统跨体系结构的工作要重写这一层代码即可,简化了操作系统跨体系结构的工作而而BSPBSP就是充当了这样的角色就是充当了这样的角色————抽象操作系统与硬件之间抽象操作系统与硬件之间的交互接口的交互接口 1、、BSP 概述概述 阮汾旅二椽治前皇择踪焊艾考肚舒羔茨揭壬谅了莎拓槐史倾紧幽楔贡锋矫《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院BSP对硬件接口的抽象对硬件接口的抽象 踊镜谚严淋讽闰侩剥颓缎蕉名逃饭垛春核抚仅扩恒抬矽耸洞傍概窄婉被槐《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院BSP的结构的结构 在在Windows CE中,中,BSP主要由主要由4 4部分构成:部分构成:OEM抽象抽象层、引导程序、设备驱动程序和配置文件。
它们之间的结构层、引导程序、设备驱动程序和配置文件它们之间的结构如图所示如图所示孟肆洒迄曙拽馆湃搁宴代瞬豺抹轿噎溪复救介掖票窄都冉屎猎惨闲绘牢劝《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 OEM抽象层简称抽象层简称OAL((OEM Abstraction Layer)它也是操作系统内核抽象出来的与硬件交互的接口,其实现代码是操作系统内核抽象出来的与硬件交互的接口,其实现代码通常是与硬件高度相关的通常是与硬件高度相关的OAL层主要负责层主要负责Windows CE内内核与硬件通信核与硬件通信 引导程序(引导程序(Boot Loader)是在硬件开发板上执行的一段)是在硬件开发板上执行的一段代码。
它的主要功能是初始化硬件,加载操作系统映像代码它的主要功能是初始化硬件,加载操作系统映像((OS Image)到内存,然后跳转到操作系统代码去执行到内存,然后跳转到操作系统代码去执行Boot Loader可通过不同的方法获得操作系统映像,例如从可通过不同的方法获得操作系统映像,例如从串口、串口、USB及以太网下载,及以太网下载,Boot Loader也可从本地的存储也可从本地的存储设备,例如设备,例如CF卡和硬盘中读取操作系统映像卡和硬盘中读取操作系统映像Boot Loader 有很多种,最常见的有很多种,最常见的Boot Loader通过以太网从工通过以太网从工作站下载操作系统映像到目标机,然后把映像放到内存里执作站下载操作系统映像到目标机,然后把映像放到内存里执行,称之为行,称之为Eboot((Ethernet Boot的简称)的简称)竹画谰彪璃郁恳瑚痰盲沿烁贬礼蒂九扰辅窑蛹候涯什岛郝背爸侥叮村圆暑《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 配置文件(配置文件(Configuration File)是一些包含配置信息的文)是一些包含配置信息的文本文件。
这些配置信息通常与操作系统映像或源代码有关这些配置信息通常与操作系统映像或源代码有关例如告诉编译系统如何编译某些源代码,或告诉编译系统如例如告诉编译系统如何编译某些源代码,或告诉编译系统如何配置最终的操作系统映像文件何配置最终的操作系统映像文件 设备驱动程序(设备驱动程序(Device Driver)将操作系统与硬件联系起)将操作系统与硬件联系起来,使得操作系统能够管理硬件设备,向应用程序提供访问来,使得操作系统能够管理硬件设备,向应用程序提供访问使用硬件的调用,是使用硬件的调用,是BSP开发的重点对于某个特定的开发的重点对于某个特定的BSP来说,来说,BSP当中应该包含在这块开发板上的所有的外设驱动当中应该包含在这块开发板上的所有的外设驱动程序,这样才可以保证程序,这样才可以保证Windows CE操作系统能够发挥此开操作系统能够发挥此开发板的最大效能发板的最大效能 滔虎及策讲消徒丘骗乳票郡憋灶债咖福税袁蜘幻翌厦沈凉堕囚阂捶治悍统《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 Windows CE操作系统为了做到跨平台时能够尽可能重操作系统为了做到跨平台时能够尽可能重用代码,提供了一整套平台开发工具:用代码,提供了一整套平台开发工具:Microsoft Windows CE Platform Builder,它是一个完整的,它是一个完整的IDE,,使开发人员能够以快捷灵活的方式创建定制化解决方案。
使开发人员能够以快捷灵活的方式创建定制化解决方案Windows CE操作系统的移植过程实际就是针对不同的操作系统的移植过程实际就是针对不同的CPU编写编写BSP的过程开发的过程开发BSP是一个比较复杂的工作,其是一个比较复杂的工作,其基本步骤如图所示基本步骤如图所示香武壬丈费贸荚灌筏苦众每萎边锻薛赊癌撒耿兼千捆钢缀坏姚覆甘滞炕恒《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 在实际开发过程中,从零开始编写在实际开发过程中,从零开始编写BSP所有代码的情况很少,大多数情所有代码的情况很少,大多数情况下,开发况下,开发BSP都是通过修改相同或相近的都是通过修改相同或相近的BSP来创建新的来创建新的BSP。
另外,另外,Platform Builder本身所提供的本身所提供的BSP对于编写相应目标板的对于编写相应目标板的BSP来说具有来说具有重要参考价值重要参考价值 Platform Builder提供了提供了BSP Wizard向导来帮助开发人员创建和开发向导来帮助开发人员创建和开发BSP在Platform Builder开发环境中选择菜单项【开发环境中选择菜单项【Platform|BSP Wizard…】就可以启动】就可以启动BSP Wizard,如图所示如图所示巳妻暖布厦径比遭胀鼠汾钢琉冶珠嗓麦奎恼憋羹廖烃鹅墓碰扰抹羹羔货剑《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院BSP Wizard以向导的形式帮助开发人员完成以向导的形式帮助开发人员完成4种操作:种操作:创建一个全新的创建一个全新的BSP,克隆一个现有的,克隆一个现有的BSP,修改一个现有,修改一个现有的的BSP以及创建驱动程序。
以及创建驱动程序2、克隆参考、克隆参考BSP当硬件准备就绪后,当硬件准备就绪后,BSP的编写工作就开始了,通过使的编写工作就开始了,通过使用用Platform Builder提供的提供的BSP向导中的克隆向导中的克隆BSP功能可简功能可简化此工作化此工作 克隆克隆BSP前,要确保所要克隆的前,要确保所要克隆的BSP与目标与目标BSP有相似有相似性一般而言,如果源性一般而言,如果源BSP与目标与目标BSP的的CPU是同一款,那是同一款,那么直接克隆么直接克隆BSP时有大量的代码可供共享;如果二者的时有大量的代码可供共享;如果二者的CPU不一样,但是具有很大的相似性,那么克隆不一样,但是具有很大的相似性,那么克隆BSP也是比全新也是比全新创建创建BSP要来得简单目前国内有很多以三星要来得简单目前国内有很多以三星2410作为作为CPU的的ARM开发板,其体系结构和外设都大同小异如果开发板,其体系结构和外设都大同小异如果为这类开发板编写为这类开发板编写Window CE的的BSP,直接克隆,直接克隆SMDK2410的的BSP可以大大降低工作量可以大大降低工作量 涂委冰改溜什峰沂帅赦瑰哩窘涡铰凭是湍埂巫帛玛屠韵店壮馆息俞襄封报《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3 、、Boot Loader设计与实现设计与实现 开发开发Boot Loader是进行是进行BSP开发的第开发的第1个步骤。
个步骤Boot Loader是一段单独的程序代码,它存放于目标平台的非易失存是一段单独的程序代码,它存放于目标平台的非易失存储介质中,如储介质中,如ROM或或Flash在开发CE的过程中,它主要用于的过程中,它主要用于启动硬件和下载启动硬件和下载nk.bin到目标板上,并有一定的监控作用到目标板上,并有一定的监控作用 由于由于Boot Loader涉及到基本的硬件操作,如涉及到基本的硬件操作,如CPU的结构、的结构、指令等,同时又涉及到以太网下载协议(指令等,同时又涉及到以太网下载协议(TFTP,当然也可能通,当然也可能通过串口)和微软设定的映像文件格式因此从零实现的话,会过串口)和微软设定的映像文件格式因此从零实现的话,会需要相当长的过程好在微软为每种类型的需要相当长的过程好在微软为每种类型的CPU都提供了某种都提供了某种标准开发板的标准开发板的Boot Loader例程,因此通常的做法是:从这些例程,因此通常的做法是:从这些例程中寻找与硬件平台最接近的作为标本程序,然后再从自己例程中寻找与硬件平台最接近的作为标本程序,然后再从自己的硬件平台上入手做相应的改动一些新的评估板可能会由第的硬件平台上入手做相应的改动。
一些新的评估板可能会由第三方的厂商来提供的三方的厂商来提供的Boot Loader,如果硬件平台是从这样的,如果硬件平台是从这样的基板设计而来的话,那么最好去寻求这些厂商获取基板设计而来的话,那么最好去寻求这些厂商获取Boot Loader来移植,以减少工作量来移植,以减少工作量郝拈滋羔姬骚狠劲拦吭玖玻儒迷袱缆磁哪协妮凭员奏胃疥槛枷跳恍陡总鹿《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4、、 OAL开发开发 OAL层的开发是层的开发是Windows CE能否运行的关键部分,它与能否运行的关键部分,它与Windows CE内核、内核、ARM处理器和硬件平台都有关系。
处理器和硬件平台都有关系 OAL的功能层次图 驶竹迭负捂驻留滨址干涛糙首尘止甚衍匿熙绰钎吨尼闷赂昏楼挪孤氛郁枷《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 从功能上来说,从功能上来说,OAL 把操作系统内核对硬件的访问功能抽把操作系统内核对硬件的访问功能抽象出来,形成一些函数或者库,例如操作系统会频繁访问的计象出来,形成一些函数或者库,例如操作系统会频繁访问的计时器、时器、RTC、、Cache及中断等当操作系统访问硬件时,可直及中断等当操作系统访问硬件时,可直接调用这些抽象出来的函数在不同的硬件设备上,这些代码接调用这些抽象出来的函数在不同的硬件设备上,这些代码须根据硬件的特点重新编写,从而实现操作系统代码与硬件设须根据硬件的特点重新编写,从而实现操作系统代码与硬件设备无关。
因此备无关因此OAL最基本的功能是硬件抽象所幸的是在开发最基本的功能是硬件抽象所幸的是在开发OAL时,时,Boot Loader部分的许多代码都可重用,这也减轻了部分的许多代码都可重用,这也减轻了开发开发OAL的负担 从物理上来说从物理上来说OAL代码是操作系统内核的一部分通常代码是操作系统内核的一部分通常OAL代码被编译成一个库,然后此库与其他的内核库进行链接,代码被编译成一个库,然后此库与其他的内核库进行链接,共同形成操作系统内核的可执行文件共同形成操作系统内核的可执行文件畅胳揪胆雕亦纪待翅唁罪岭晨闷淘箩瓦萌绵卑创少敷溢捍鲁沧牡汕胎宴矩《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 OAL的开发主要分成的开发主要分成4个步骤:个步骤: Ø初始化内核初始化内核 完成必要的准备工作,描述系统配置,如平台的参考设完成必要的准备工作,描述系统配置,如平台的参考设计和计和Config.bib文件设计。
这些描述关系到系统的初始化等文件设计这些描述关系到系统的初始化等方面,如方面,如MMU初始化必须首先了解物理内存的大小和具体初始化必须首先了解物理内存的大小和具体的布局要求的布局要求Ø创建基本创建基本OAL 为确保系统在启动时能够进行初始化,启动调试用串行为确保系统在启动时能够进行初始化,启动调试用串行口,初始化通信设置,建立系统节拍因此,本步骤必须实口,初始化通信设置,建立系统节拍因此,本步骤必须实现基本的系统初始化代码,使之能够支持进一步的调试,并现基本的系统初始化代码,使之能够支持进一步的调试,并保证内核初始化完成,符号设计要求保证内核初始化完成,符号设计要求堪者班纳枢乳桂鹊洛敌澈砂倒熄铸铰靴涪粘沃摔琶昼朱舷篇球墨砰逆由锣《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø加强加强OAL功能功能 承接上一步骤,实现系统其他功能。
例如,实现承接上一步骤,实现系统其他功能例如,实现ISR,,管理时钟和计时器,配置调试选项,启动电源管理,并能管理时钟和计时器,配置调试选项,启动电源管理,并能向应用程序提供系统信息等;以确保这个操作系统可以启向应用程序提供系统信息等;以确保这个操作系统可以启动Ø完成完成OAL 完善完善OAL的所有功能通常包括:实现的所有功能通常包括:实现OAL中的进程中的进程日志函数、创建日志函数、创建CEDDK、定义扩展内存等定义扩展内存等焦粘茸汉自肖凸放积惶蓝嘻奴帽恕撕乞颁虚返附矗蔡炕黔脉丁韩名市椽屈《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院5、为新的硬件编写驱动、为新的硬件编写驱动 程序程序 Windows CE下的设备驱动程下的设备驱动程序将操作系统和硬件联系起来,使序将操作系统和硬件联系起来,使得操作系统能够管理硬件设备,向得操作系统能够管理硬件设备,向应用程序提供访问使用硬件的调用。
应用程序提供访问使用硬件的调用尽管硬件设备之间差异往往很大,尽管硬件设备之间差异往往很大,但是驱动程序开发的自由度通常很但是驱动程序开发的自由度通常很小,需要严格遵循一些规范,并有小,需要严格遵循一些规范,并有比较严格的性能要求比较严格的性能要求Windows CE的设备驱动程序开发的步骤大的设备驱动程序开发的步骤大致如图所示致如图所示佑买雇茄笑公村渊痛窃崎粗泅葛催船坍狄紫豹迄穿委族沧硝磨垃栗嚎哄凯《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院6、发布、发布BSP 发布发布BSP的目的是将的目的是将BSP打包为安装文件,以方便第三方打包为安装文件,以方便第三方软件开发商使用。
一般而言,可把软件开发商使用一般而言,可把BSP打包为打包为.MSI安装文件,安装文件,这样第三方软件开发商可更加容易地安装使用这样第三方软件开发商可更加容易地安装使用 Platform Builder自带了自带了Export Wizard(导出向导导出向导)来来帮助我们对帮助我们对BSP完成打包工作选择完成打包工作选择Platform Builder IDE的【的【Platform|Export Wizard…】可打开】可打开Export Wizard对话框该向导共分为对话框该向导共分为6个步骤,而且每一步都有详细的说明,个步骤,而且每一步都有详细的说明,界面友好,其基本的功能是选择一个界面友好,其基本的功能是选择一个CEC文件或文件或PBPXML文文件,然后根据文件所描述的内容进行打包处理件,然后根据文件所描述的内容进行打包处理 BSP发布结束后,整个发布结束后,整个BSP的开发流程也就结束了的开发流程也就结束了 宅傈悄炒断鬃盛惺运显拥绒挞穿恒杨披递停夺弥汀察疗搭理震哄苗贺糊炙《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院四、四、WinCE内核的裁剪与定制内核的裁剪与定制 1、添加、添加BSP 以友善之臂开发板为例子,要使用以友善之臂开发板为例子,要使用PB5编译编译WINCE内核内核映像,需要安装对应目标板的映像,需要安装对应目标板的BSP,并进行一些设置,可按,并进行一些设置,可按以下步骤安装以下步骤安装BSP:: 1)把光盘)把光盘WindowsCE5.0目录里面的目录里面的mini2440文件文件夹复制到夹复制到%WINDOWS CE500%\PLATFORM 下,并去下,并去掉只读属性。
掉只读属性 砂层盈唆哗本泌洒沏浊护逾倘二巫裂群倔玩您狄硼哮贵道罢紫囤幻咨扳淬《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2)然后打开)然后打开Platform Builder,在工具栏中依次选择,在工具栏中依次选择File→Manage Catalog Features如图所示如图所示 视痰哄奉伐奸磨躁泛沂乞末存饶艇丈李豆梗热冻岿概炊碌诲燕奠摆逞挫倡《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 3)在弹出的对话框中单击)在弹出的对话框中单击“Import”按钮,导入按钮,导入“platform\smdk2440\smdk2440.cec”文件。
如图所示如图所示丑踞逸漂适幻米渝擅砸系清嗣黑摘宦垂蚜比绢尸财筷忌兔隅釉襟慧靶岿拐《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 4)在)在Platform Builder 的的Catalog 目录的目录的ThirdParty下,下,将会自动添加将会自动添加“Mini2440 From FriendlyARM:ARMV4I”项,项,BSP安装完成如图所示安装完成如图所示调憾陀硕癌疫冻锦岔艺赣抡拯睬礼零有和抹檀宿碗肃台猾林赤劫骡艰禄携《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、定制平台、定制平台 以友善之臂以友善之臂mini2440为例,使用图解的方式介绍一下如何为例,使用图解的方式介绍一下如何定制适合于自己的定制适合于自己的WinCE内核工程。
内核工程 1)打开)打开PB5,点,点File→New Platform…,跳出内核定制,跳出内核定制向导,点向导,点“下一步下一步”继续,如图所示继续,如图所示拾屋振魁催抑嗅痈狐醇莉傻忿邦矽推炎笛鸳瞪吞虑需虚啸南兑碗旁禄颜赴《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 2)出现工程命名设置窗口,输入)出现工程命名设置窗口,输入“my2440”,点,点“Next”继继续,如图所示续,如图所示 胀偷泼奖燕弃赖廊腋揍练菇牙琢闰潜杭每弊柑汤饰蛛拷单镭莆歪股康魁汽《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 3)选择所要使用的选择所要使用的BSP,在这里当然选择,在这里当然选择2440的,如图所的,如图所示,点示,点“Next”继续。
继续 衬爽桐亢庇蔼擎渐粥拐痢辱齐池羹充吴蕾彻皮石脾论葱蠢衡微脓硒迄半播《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 4)出现模板选择窗口,我们选择手持设备)出现模板选择窗口,我们选择手持设备“Mobile Handheld”,如图所示,点,如图所示,点“Next”继续 陆紧藉蔗闯蛹沦圾俗皿膛昼独寻僳彬承瓢欢睹孔钦捶券绍荷疾姬劫獭雨滋《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 5)出现应用程序定制窗口,这里出现的都是常见的一些应用)出现应用程序定制窗口,这里出现的都是常见的一些应用程序,在这里必须选择红色圈号里面的程序,在这里必须选择红色圈号里面的“Standard SDK for Windows CE”,如图所示,点,如图所示,点“Next”继续。
继续叮跟杯仕垃卯衅渗题纽举契废嗅陌觅仟扩边葱组北滩葫蛛怀葫嫡陆斡见斩《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 6)出现网络有关的一些设置,使用缺省即可,如图所示,)出现网络有关的一些设置,使用缺省即可,如图所示,点点“Next”继续审沏仔应疲秤婆服刽啼踊捷逐慑幼发译彭烧丈拥确邑拽撮既沟矫碰童园二《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 7))出出现现和和蓝蓝牙牙、、红红外外有有关关的的一一个个窗窗口口,,这这里里没没有有任任何何选选项项,,如图所示,因此点如图所示,因此点“Next”继续。
继续笑书夷距栈堰诗厦艺全婚无涟讳嘘腻曹漓缘告儡名酷倘得宦钮胎虎解侈爷《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 8)出现向导结束窗口,点)出现向导结束窗口,点“Finish”结束向导如图所示结束向导如图所示为趣听凛紧梯混洪买鞘冒服月孽有社峡方策坍赞斑涧挝握苟睬寿在戳略物《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3、生成操作系统镜像、生成操作系统镜像 自定义了一个平台之后,可以准备用于生成一个操作系统镜自定义了一个平台之后,可以准备用于生成一个操作系统镜像,在介绍操作步骤之前,先介绍像,在介绍操作步骤之前,先介绍Platform Builder 可以生成可以生成的两种镜像。
一种是用于发布给用户,被称为的两种镜像一种是用于发布给用户,被称为Release 版;另种版;另种是用于调试,被称为是用于调试,被称为Debug 版 选择生成版本后,还需要为编译做一些准备与设置选择生成版本后,还需要为编译做一些准备与设置 1)点)点Platform→Setting…,打开工程设置窗口,如图所,打开工程设置窗口,如图所示裹尹塞穗妒念兑曙龋悼喝嗣寿克琶四员烂戈屿沂槽羽僚栈褪郎祁恍肌品宏《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院工程设置窗口 萎正醇身道嘛溅庙二墓榷滞荣测买冠坊益运晦渗户皱梅把阎威队匪啃郭净《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 2)在设置窗口中,点)在设置窗口中,点“Locale”选项卡来设置目标内核的语选项卡来设置目标内核的语言,这里选择中文,如图所示。
言,这里选择中文,如图所示瘩搔锋鱼恬柔挣捏达竖稗映纯铺抽零洽肢橙被犬殷课呛障颗浩核炙镇飞腮《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 3)点)点“Build Options”选项卡,去掉选项卡,去掉“Enable CE Target Control Support”和和“Enble KITL”这两个设置其这两个设置其他使用缺省,并点他使用缺省,并点“OK”完成设置,如图所示完成设置,如图所示刘戴涨镶吓襟玄熊图呢郡帘涡弟帽床啮峦苦接酸润材牲山掉预婆馒妒喊港《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 4)单击)单击Build 菜单,选择菜单,选择Build Platform一项,系统开一项,系统开始生成镜像文件,编译完毕如图所示始生成镜像文件,编译完毕如图所示 。
化爵帕害铸逾林磁野鞍钡何溅八聂河慢泅扮粱报狰厄拄虚篇鼎铅域盼巾脓《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 进行编译的时间要根据考虑进行编译的时间要根据考虑PC 硬件条件及所定制的操作系硬件条件及所定制的操作系统镜像大小,如果定制的是一个较大的操作系统镜像,等待时间统镜像大小,如果定制的是一个较大的操作系统镜像,等待时间可能较长,这段时间读者可以看一下输出窗口(可能较长,这段时间读者可以看一下输出窗口(Output Window),它显示的是生成系统的整个过程,这对读者更好地),它显示的是生成系统的整个过程,这对读者更好地理解系统有很大帮助当输出窗口最后显示理解系统有很大帮助。
当输出窗口最后显示“TEST - 0 error(s),,0 warning(s)”时,表示定制的操作系统镜像已经生成完毕,时,表示定制的操作系统镜像已经生成完毕,可以使用了可以使用了 在生成的目录下,可以看见很多的文件,这些文件及目录均在生成的目录下,可以看见很多的文件,这些文件及目录均是在生成操作系统镜像时所需要的文件,是在生成操作系统镜像时所需要的文件,Platform Builder 就就是根据这些文件来生成系统镜像文件是根据这些文件来生成系统镜像文件 在这些文件中,有一个在这些文件中,有一个NK.BIN 文件,这个文件就是适用于文件,这个文件就是适用于本例设备的操作系统镜像文件,也就是设备最终要用的本例设备的操作系统镜像文件,也就是设备最终要用的Windows CE.NET 内核,用内核,用BootLoader 程序加载这个文件就程序加载这个文件就可以启动可以启动Windows CE.NET 操作系统操作系统塘顾壮精湾代涣轿喘社及壳恳悲跟址岂胳尚在捞可蛰卧纽砍蛾握猪菜洞躁《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4、导出、导出SDK 我们可以把定制好的内核工程导出为我们可以把定制好的内核工程导出为SDK安装文件,它用安装文件,它用来提供给应用开发人员,里面主要包含与定制平台有关的头文来提供给应用开发人员,里面主要包含与定制平台有关的头文件、库、一些文档等内容。
应用开发人员可以通过安装件、库、一些文档等内容应用开发人员可以通过安装SDK在在EVC中开发基于此平台的应用程序中开发基于此平台的应用程序导出导出SDK安装文件的步骤如下:安装文件的步骤如下:昔渴涤奄梗今消苗挝犬氰查摧杨撂脸瀑圣估馈搁之留稀浇酸氰浮眼轿刷堕《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 1) 首先打开并确定已经编译好工程示例,点首先打开并确定已经编译好工程示例,点Platform →SDK→New SDK…,如图所示如图所示 钱疾簧纳弛造削酱绎铆捂褥哭港左即瘸偶秦迢瞎赛哑个滑锐牛嘴判陷隔怜《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 跳出跳出“Export SDK Wizard”向导窗口,如图所示,点向导窗口,如图所示,点“下下一步一步”继续。
继续 间坟茎然底窖弟筑辆襟妓素糕惟笑琐刑尸岗欧睦旺宋条抨铬普疡必酷灰搂《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 2)进入进入“Prodect Properties”配置窗口,可以根据实际情配置窗口,可以根据实际情况填写配置,如图所示,点况填写配置,如图所示,点“下一步下一步”继续 由诉逐项溪军体藻竹泞央竟软驰格拯疫补夕这芭此夫到诉淌咨俯采卑委区《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 3)进入进入“Development Language”配置窗口,选择开发配置窗口,选择开发语言支持,如图所示,点语言支持,如图所示,点“下一步下一步“继续。
继续 镀触兽睁责疤术茬赎照迪着笼仿伴震铣浑为桑挽沫凌辣窘谬袱线楞揉伦辕《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 配置完毕,如图所示,点配置完毕,如图所示,点“Fnish“按钮结束按钮结束员释群子调欣逐轴脾般蝴社累骏命漂用构躇屁鉴壹杆苏枉此瞥愈坯昌御帛《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 4)点点Platform→SDK→Configure SDK…,出现设置窗口,,出现设置窗口,在这里你可以对刚才的初始配置进行更加详细的设置,点在这里你可以对刚才的初始配置进行更加详细的设置,点“CPU“选项卡,出现如图所示的界面。
选项卡,出现如图所示的界面 距邻蠕芹流览戳批诊甲要倾禄瘫易仿意栽癌闸轿稗险汛楷播晌还冲盗叭悟《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 5)点点“Edit”按钮,出现如图界面,并如图选择按钮,出现如图界面,并如图选择庭虑俐诊越耗厨增列乡寞团擂禄重蚌彤早呈吓返悼棍动械孕取街绩拌泡泳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 6)点点“OK”返回返回PB5 主界面,再点主界面,再点Platform→SDK→Build SDK…,如图所示。
如图所示 涣甥鞍玄唐平扒段眉洛诵诲狭粒粒矣筋濒捍掇厉隙沥契砸悍矾呻谗掇碗柒《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 出现编译向导窗口,如图所示并同时开始编译制作出现编译向导窗口,如图所示并同时开始编译制作SDK::牛殖抗讣淀肩苔昏嫌傣污静贩蚜毕遮惊饲裁霓键趁阳楚汕也溯征赎碍硫馆《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 7)大概几分钟时间,编译完毕,此时点大概几分钟时间,编译完毕,此时点“Done“按钮结束,按钮结束,如图所示。
如图所示 鱼口矿松笆汝凝郊讹誊社藻惰突灸故退矛耐辱躺陡悲酷龄渍囤碍限邻灯齿《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 8)根据提示,最后在如图所示目录生成根据提示,最后在如图所示目录生成SDK 安装文件安装文件 SDK导出制作完成之后,就可以安装导出制作完成之后,就可以安装SDK文件,并将其文件,并将其加入加入EVC开发环境,进行基于自己定制的应用平台开发应用开发环境,进行基于自己定制的应用平台开发应用程序赴波枚厢根猿沁恕茎衍垒猾谅金薄染疽斌纯反占镜隧片质供剖怪御僧御蚀《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院五、编写第一个简单的五、编写第一个简单的WinCE应用程序应用程序1、、WinCE应用程序的特点应用程序的特点 ((1))Windows CE API是是Win32 API的一个子集,而的一个子集,而且其中部分函数的功能已经精简,如对颜色和字体的支持且其中部分函数的功能已经精简,如对颜色和字体的支持更加有限。
更加有限 ((2)) Windows CE API具有对具有对Windows CE的特定扩的特定扩展功能其中一些功能如触摸屏需要设备在硬件功能上的展功能其中一些功能如触摸屏需要设备在硬件功能上的支持 ((3)对异常处理的使用具有限制支持)对异常处理的使用具有限制支持Win32的结构的结构化异常处理,但是不支持化异常处理,但是不支持c++异常处理异常处理 ((4)大部分的测试和开发工作要在开发工具所提供的)大部分的测试和开发工作要在开发工具所提供的Windows CE仿真环境中进行仿真环境中进行 假薛身预臆酞害磊写迂斡西惶庄衰箭莎冤滋茂糯棍铜碱模结钵玛痒伪焰卷《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、编写第一个、编写第一个WinCE应用程序应用程序 在写在写EVC程序时,首先是要建立一个应用程序项目程序时,首先是要建立一个应用程序项目((Project)。
EVC项目中存放了建立应用程序所需要的项目中存放了建立应用程序所需要的全部信息,包括应用程序所有源文件名称及相互关系、全部信息,包括应用程序所有源文件名称及相互关系、所有库文件清单、编辑器、链接器、编译器等下面讲所有库文件清单、编辑器、链接器、编译器等下面讲述如何建立第一个述如何建立第一个WinCE应用程序应用程序 间芦犊删体苍硷矾栋瘦疼宰太攻叹诫亚洽食食浚掷磅谩哇斑充粹恤坤池乔《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 (1) 打开打开EVC开发工具,选择开发工具,选择File菜单中的菜单中的New命令,新命令,新建一个项目,如图所示其中项目类型选择建一个项目,如图所示。
其中项目类型选择WCE Pocket PC 2003 Application,,Project Name输入框输入输入框输入“Hello Word”设置完以上各项后,点击设置完以上各项后,点击OK按钮,进入程序向导按钮,进入程序向导拦条拱名锰亨首旗煞吉贿态剪戈宪挫琳真纷呜郸盾律倍假里幌存曝锹这厄《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((2)进入程序向导后,)进入程序向导后,AppWizard会自动完成在向导中会自动完成在向导中所指定的内容在所指定的内容在AppWizard中的各步中可以做很多定义中的各步中可以做很多定义如图所示为如图所示为AppWizard的第一步,向导对话框中需要选择创的第一步,向导对话框中需要选择创建应用程序的种类,这里选中建应用程序的种类,这里选中“Single document”选项,建选项,建立一个单文档的应用程序,然后在立一个单文档的应用程序,然后在“what language do you like your resources in??”下拉选框中为应用程序选择一个下拉选框中为应用程序选择一个语言资源。
语言资源剿躬深圈娩址猫鼠隐鲁负涅鲁焚着墒泳弧幅俏卓局膨禾凿您裹骚战墒散厂《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((3)单击)单击“next”按钮,进入按钮,进入AppWizard的第二步,第的第二步,第二步是设定应用程序的基本功能的过程,如图所示二步是设定应用程序的基本功能的过程,如图所示惨奖限琐例阁扎镭斟撕葬给实臭籍腰杭谩抹屎必欧舞迭鹰闽巾赌既淖旗裙《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((4)单击)单击“next”按钮,进入按钮,进入AppWizard的第三步,第的第三步,第三步也是设定应用程序的基本功能的过程,如图所示。
三步也是设定应用程序的基本功能的过程,如图所示 捣溶虑豺睬咕迭饿搏追束商但拴屁说缀囱笛奈棕银起估贺奶辛瘸券牧听稽《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((5))单单击击“next”按按钮钮,,进进入入AppWizard的的最最后后一一步步,,在在最最后后一一步步中中,,可可以以知知道道AppWizard自自动动生生成成了了哪哪些些文文件件及其类名如图所示及其类名如图所示蹋拣肄卧妊唬炽踊颐妖品垒缩轧鞍牺剪冈排沦悬壹仓歹憾铝稻劳揉饵完派《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((6))单单击击“Finish”按按钮钮,,进进入入到到工工程程信信息息窗窗口口,,在在这这个个窗窗口口中中列列出出了了关关于于新新建建立立的的应应用用程程序序项项目目文文件件的的相相关关信信息息,,如如图所示。
图所示突坛昧臀苑顿楷谦稀碗松摇苗振瓜谣寥烹银厉摸留鹅澄肠锋辨途棱替吏呵《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((7)单击)单击“OK”按钮,进入到按钮,进入到EVC的开发环境,如图所示的开发环境,如图所示揩耳顷桂庆尖作亦仕伪滑走硕景膏淖亭膜森跃辛捣昆妓绚锄胆春刺宦括渗《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3、编译和运行、编译和运行WinCE应用程序应用程序 在在AppWizard完成程序预设计后,还要确认目标机器以完成程序预设计后,还要确认目标机器以及编译类型,这里目标机器选择及编译类型,这里目标机器选择Pocket PC 2003| Pocket PC 2003 Emulation,而编译类型选择,而编译类型选择Win 32((WCE emulator))Debug,如图所示。
如图所示目标机器以及编译类型目标机器以及编译类型 接下来展开开发环境中接下来展开开发环境中WORKSPACE下的类目录树,双下的类目录树,双击击HelloWorldView类的类的OnDraw函数,在代码编辑区打开函数,在代码编辑区打开OnDraw函数,然后将下面代码添加到函数,然后将下面代码添加到OnDraw函数中诲助马币潘菌足痕憎疾钦罗斩圆以藻檀肘趁驻霸类摊幻忿廖问藉唤狈羽漱《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CHellowordView::OnDraw(CDC* pDC){ CHellowordDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CString str; str="Hello World!"; CRect rect(10,100,200,200);pDC->DrawText(str,rect,DT_CENTER|DT_NOCLIP);}跑归献庞蘸伐堕臻照撞慈趾佣漓界动仪旦匝期傣盼夯切靖焕彝迎墅又跺赋《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 选选择择Build菜菜单单中中 按按钮钮对对应应用用程程序序进进行行编编译译,,编编译译完完成成后后,,点点击击 图图标标运运行行应应用用程程序序,,其其运运行行效效果果如如图图所所示示。
至至此此,,第第一一个个“Hello Word”的应用程序就编写完成了的应用程序就编写完成了 搐锋娠胰茁炒椅百肾哩令黄拧龙取僚塘镜达乙矿轿酷翰占怨滑图烷杠丽淆《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 一般来说,一般来说,Microsoft Windows 平台允许用户使用两平台允许用户使用两种输入方法:键盘和鼠标种输入方法:键盘和鼠标Windows CE虽然继承了这个虽然继承了这个传统,但用输入笔和触摸屏代替了鼠标从程序上来讲,这传统,但用输入笔和触摸屏代替了鼠标从程序上来讲,这种变化是很小的,因为输入笔的消息被映射为其他版本的种变化是很小的,因为输入笔的消息被映射为其他版本的Windows中使用的鼠标消息。
与运行在中使用的鼠标消息与运行在pc上的上的Windows版本比较,一个更精细、更重要的变化是运行版本比较,一个更精细、更重要的变化是运行Windows CE的系统可以安装一个很灵巧的键盘或者根本不用键盘的系统可以安装一个很灵巧的键盘或者根本不用键盘这使得在这使得在Windows CE系统中输入笔的输入尤为重要系统中输入笔的输入尤为重要 六、键盘、输入笔和菜单六、键盘、输入笔和菜单蔗囊措庙宾酥马梆透拙巢匙颧驴榷次趁陪峰帛汐概帘轩文盈蕴隅趋预奖缝《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院1、键盘、键盘 尽尽管管键键盘盘在在Windows CE中中是是一一个个次次要要的的角角色色,,但但在在输输入入大大量量信信息息时时,,它它仍仍是是最最佳佳的的方方法法。
在在没没有有物物理理键键盘盘的的系系统统上上((如如掌掌上上PC)),,软软键键盘盘-在在触触摸摸屏屏上上模模拟拟键键盘盘的的控控件件-对对用用户户来来说说仍仍然然很很可可能能是是有有用用的的对对于于应应用用程程序序来来说说,,来来自自软软键键盘的输入与传统意义上的盘的输入与传统意义上的“硬硬”键盘的输入并没有什么不同键盘的输入并没有什么不同 ((1)输入焦点)输入焦点 在在Windows操作系统中,同一时刻只有一个窗口具有输操作系统中,同一时刻只有一个窗口具有输入焦点这个焦点窗口接受所有的键盘输入,直到它失去焦入焦点这个焦点窗口接受所有的键盘输入,直到它失去焦点而给另一个窗口系统通过一些规则来分配键盘焦点,通点而给另一个窗口系统通过一些规则来分配键盘焦点,通常具有焦点的窗口就是当前活动的窗口活动窗口是用户当常具有焦点的窗口就是当前活动的窗口活动窗口是用户当前与之进行交互的窗口前与之进行交互的窗口 洗锚航盛佛劈咒瞪河聘禁期码垂肖眼匀嵌输侍舔支征象挝想萨嘛婶赏放腐《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 在在Windows环境下,程序可以通过调用下面的函数来决定环境下,程序可以通过调用下面的函数来决定哪个窗口具有输入焦点:哪个窗口具有输入焦点: HWND GetFocus((void););通过调用下面的函数可以将输入焦点给另一个窗口:通过调用下面的函数可以将输入焦点给另一个窗口: HWND SetFocus((HWND hWnd);); 在在Windows CE环境下,环境下,SetFocus的目标窗口是受限制的。
的目标窗口是受限制的通过调用通过调用SetFocus而具有焦点的窗口,必须已经由调用而具有焦点的窗口,必须已经由调用SetFocus的线程创建好了如果失去焦点的窗口与得到焦点的的线程创建好了如果失去焦点的窗口与得到焦点的窗口之间有父窗口之间有父/子或兄弟关系,这种那个规则的例外情况就将发子或兄弟关系,这种那个规则的例外情况就将发生;在这种情况下,即使窗口是由不同的线程创建的,其输入生;在这种情况下,即使窗口是由不同的线程创建的,其输入焦点也可以改变焦点也可以改变 当一个窗口失去焦点时,当一个窗口失去焦点时,Windows将给该窗口发送将给该窗口发送WM_KILLFOCUS消息,通知它将处于的新状态其中消息,通知它将处于的新状态其中wParam参数包含将要得到的焦点的窗口的句柄得到焦点的参数包含将要得到的焦点的窗口的句柄得到焦点的窗口将接收到窗口将接收到WM_SETFOCUS消息要注意的是,在用户没有消息要注意的是,在用户没有输入之前程序是不应该改变焦点窗口的输入之前程序是不应该改变焦点窗口的镑庇戴斡药盼淄嗽追每工剥骤顷吵豢暑雹痈勿透昭奎旬辅螟泽札驭敲近吝《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)键盘消息)键盘消息 Windows CE处理键盘消息时与其他的桌面操作系处理键盘消息时与其他的桌面操作系统亲属几乎没有什么不同。
处理键盘消息主要看以下三统亲属几乎没有什么不同处理键盘消息主要看以下三个键盘事件:个键盘事件:l KeyDown:按键被按下按键被按下l KeyPress:字符输入被检测到字符输入被检测到l KeyUp:按键被释放按键被释放械邪逻舒幂渠聪驱允啤搪狸驭搭伺蔫泄滩多嗽梨凉祸忧仑刘可炙希蛊起搏《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 当按下一个键时,当按下一个键时,Windows将一系列的消息发送给焦点窗口将一系列的消息发送给焦点窗口通常第一个消息是通常第一个消息是WM_KEYDWN如果按下的键代表一个诸如如果按下的键代表一个诸如字母或者数字这样的字符,将在字母或者数字这样的字符,将在WM_KEYDWN之后发送之后发送WM_CHAR消息。
当一个键被放开时,消息当一个键被放开时,Windows会发送一条会发送一条WM_KERUP消息如果一个键被按下的时间足够长,满足了自消息如果一个键被按下的时间足够长,满足了自动重复特性,则对于每一次自动重复都会发送动重复特性,则对于每一次自动重复都会发送WM_KEYDWN和和WM_CHAR消息,直到在发送了最后的消息,直到在发送了最后的WM_KERUP消息以后将消息以后将按键放开为止当其他键被按下的同时也按下了按键放开为止当其他键被按下的同时也按下了Alt键,键,Windows发送的消息为发送的消息为WM_SYSKEYDWN、、WM_SYSCHAR、、WM_SYSKEYUP 在大多数情况下,应用程序只能简单的查找在大多数情况下,应用程序只能简单的查找WM_CHAR消息,消息,并且忽略并且忽略WM_KEYDWN和和WM_KERUP消息WM_CHAR消息消息考虑到键的立即提取,这样就可以使得应用程序不必担心键的放考虑到键的立即提取,这样就可以使得应用程序不必担心键的放开或者按下状态,从而可以集中处理由键盘输入的字符开或者按下状态,从而可以集中处理由键盘输入的字符殿佛锨逊危屈园谩封京遮灸脊楷良滓士刺亭圈纬得腰袍欧格谬兑蚂乓般刑《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3)键盘函数)键盘函数 在键盘函数中,有两个函数意义相近而且极易混淆,分别在键盘函数中,有两个函数意义相近而且极易混淆,分别是是GetKeyState和和GetAsyncKeyState函数。
函数 GetKeyState函数检取指定虚拟键的状态该状态指定此函数检取指定虚拟键的状态该状态指定此键是键是UP状态,状态,DOWN状态,还是被触发的(开关每次按下此状态,还是被触发的(开关每次按下此键时进行切换)键时进行切换)GetKeyState函数定义如下:函数定义如下: SHORT GetKeyState((int nVirtKey);); 参数参数nVirtKey表示定义的一个虚拟键,若要求的虚拟键是字母表示定义的一个虚拟键,若要求的虚拟键是字母或数字(或数字(A~~Z,,a~~z或或0~~9),),nVirtKey必须被置为相应字必须被置为相应字符的符的ASCII码值,对于其他的键,码值,对于其他的键,nVirtKey必须是一虚拟键码必须是一虚拟键码若使用非英语键盘布局,则取值在若使用非英语键盘布局,则取值在ASCIIa~~z和和0~~9的虚拟键的虚拟键被用于定义绝大多数的字符键被用于定义绝大多数的字符键堡钾堡寒辰芥摸爬烷遣铂测顿左末饱苦茧戍窍吱喜嗜蓖撼懈窜亏众了绷绳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 该函数返回换挡键的放开该函数返回换挡键的放开/按下状态,如按下状态,如Ctrl、、Alt和和Shift键,并指出这些键是否处于切换状态。
如果键盘上有两键,并指出这些键是否处于切换状态如果键盘上有两个同样功能的键个同样功能的键-例如两个例如两个Shift键,分布在键盘的两边,这键,分布在键盘的两边,这个函数也能区分它们中的哪个键被按下了个函数也能区分它们中的哪个键被按下了 将查询的键的虚拟键代码传递给函数如果返回值的高位将查询的键的虚拟键代码传递给函数如果返回值的高位被置为被置为1,则该键处于按下状态如果返回值的最小关键位,则该键处于按下状态如果返回值的最小关键位被置为被置为1,则该键处于切换状态返回的状态就是从消息队,则该键处于切换状态返回的状态就是从消息队列中读出最近的消息时的状态,而不必是该键的实时状态列中读出最近的消息时的状态,而不必是该键的实时状态夯眷绥孰珐羹襟辨埔示浑甄黄笑沫论陵悦卜涎泞并榔譬柒友丝掏劫幕在沪《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 要确定某个键的实时状态,使用的是要确定某个键的实时状态,使用的是GetAsyncKeyState函函数,数,GetAsyncKeyState函数的定义如下:函数的定义如下: SHORT GetAsyncKeyState((int vKey);); 参数参数vKey表示欲测试的虚拟键的键码。
该函数与表示欲测试的虚拟键的键码该函数与GetKeyState函数一样,将用于查询的键的虚拟键代码传递给函数一样,将用于查询的键的虚拟键代码传递给该函数GetAsyncKeyState 函数的返回值与函数的返回值与GetKeyState函数的返回值有些细微的差别同函数的返回值有些细微的差别同GetKeyState函数一样,当函数一样,当某个键被按下的时候返回值的高位将被置某个键被按下的时候返回值的高位将被置1然而,如果在调用然而,如果在调用GetAsyncKeyState之后按下了某个键,最小的关键位将会被之后按下了某个键,最小的关键位将会被置置1与GetKeyState类似,类似,GetAsyncKeyState函数能够区函数能够区分左右分左右Shift、、Ctrl和和Alt键除此之外,通过传递键除此之外,通过传递VK_LBUTTON虚拟键值,虚拟键值,GetAsyncKeyState函数还能确定函数还能确定当前输入笔是否接触了屏幕当前输入笔是否接触了屏幕少浦诌式彤瞎枉紧墟庙锅斋菜碧萄趋威绢选吊必嫌潘腿狠虏赐雁仕男沙堑《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 对对于于Windows平平台台来来说说,,输输入入笔笔/触触摸摸屏屏的的结结合合是是全全新新的的概概念念,,但但是是在在Windows CE应应用用程程序序中中集集成成它它们们相相对对来来说说是是比比较较简简单单的的。
处处理理输输入入笔笔的的最最佳佳方方式式是是把把它它当当做做一一个个单单按按钮钮鼠鼠标标输输入入笔笔产产生生的的鼠鼠标标信信息息与与其其他他版版本本的的Windows和和安安装装有有鼠鼠标标的的Windows CE系系统统所所产产生生的的鼠鼠标标信信息息时时一一样样的的鼠鼠标标和和输输入入笔笔的的不不同同在在于于这这两两种种输输入入设设备备在在物物理理实实体体上上的的不不同同与与鼠鼠标标不不同同,,输输入入笔笔并并没没有有指指示示鼠鼠标标当当前前位位置置的的光光标标因因此此输输入入笔笔不不能能像像鼠鼠标标光光标标那那样样“盘盘旋旋”在在屏屏幕幕的的某某点点上上鼠鼠标标光光标标盘盘旋旋是是指指用用户户在在窗窗口口上上来来回回移移动动鼠鼠标标而而没没有有按按下下鼠鼠标标键键这这种种观观念念并并不不适适合合输输入入笔笔的的程程序序设设计计,,因因为为触触摸摸屏屏只只有有在在触触摸摸笔笔和和屏屏幕幕接触的情况下,才能检测到输入笔的位置接触的情况下,才能检测到输入笔的位置2、输入笔和触摸屏、输入笔和触摸屏乞沛叛差蓉陷蹬期藤辅睬泄哆赌蜜侯白邹政隅擒且瞬坪吁悉淄懂补企距键《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 当用户在屏幕上按下输入笔的时候,如果在改点下的顶当用户在屏幕上按下输入笔的时候,如果在改点下的顶级窗口在这之前不拥有输入焦点,则它将接受该输入焦点,级窗口在这之前不拥有输入焦点,则它将接受该输入焦点,然后接受然后接受WM_LBUTTONDOWN消息。
当用户拿起输入消息当用户拿起输入笔时,窗口将接收到笔时,窗口将接收到WM_LBUTTONUP消息当输入笔消息当输入笔落下,在同一窗口中移动输入笔导致将落下,在同一窗口中移动输入笔导致将WM_MOUSEMOVE发送到窗口对所有这些消息,发送到窗口对所有这些消息,wParam和和lParam参数加载的将是同一个值参数加载的将是同一个值wParam参数包含指出当前键盘上参数包含指出当前键盘上Ctrl键或者键或者Shift键是否按下的一键是否按下的一组位标志要想在发送消息的时候得到组位标志要想在发送消息的时候得到Alt键的状态,需要键的状态,需要使用使用GetKeyState函数lParam参数包含指出点击屏幕参数包含指出点击屏幕位置的两个位置的两个16位值,其中,低位值,其中,低16位包含相对于窗口客户区位包含相对于窗口客户区域左上角的域左上角的x坐标(水平方向),而高坐标(水平方向),而高16位包含位包含y坐标(垂坐标(垂直方向)直方向) ((1)输入笔消息)输入笔消息 晋芍荔虽趟萌谢讫臭觅训研里蛇痢亏假锋啤遥抚荚板疥俗贤峰但淡抵耿讳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 手持设备的一个典型应用是捕捉用户在屏幕上的书写并将结果以手持设备的一个典型应用是捕捉用户在屏幕上的书写并将结果以“手绘手绘”的形式存储。
这只是简单的手写存储最好的方法是存储每一个的形式存储这只是简单的手写存储最好的方法是存储每一个WM_MOUSEMOVE消息中传递的输入笔的点位置问题是有时小型的消息中传递的输入笔的点位置问题是有时小型的CE类型的设备不能以足够快的速度发送消息来达到满意的分辨率因此,在类型的设备不能以足够快的速度发送消息来达到满意的分辨率因此,在Windows CE 2.0中,新增了一个函数调用来辅助程序设计者跟踪输入笔中,新增了一个函数调用来辅助程序设计者跟踪输入笔 BOOL GetMouseMovePoints((PPOINT pptBuf,, UINT nBufPoints,, UINT *pnPointsRetrieved);); GetMouseMovePoints 函数将返回一些函数将返回一些WM_MOUSEMOVE消息得消息得不到的输入笔的点位置该函数将传递一个由这些点组成的数组、数组的不到的输入笔的点位置。
该函数将传递一个由这些点组成的数组、数组的大小(点数多少)和一个指向整数的指针(该指针将接受传回应用程序的大小(点数多少)和一个指向整数的指针(该指针将接受传回应用程序的点数)一旦接受了消息,就可以用这些额外的点来填充在上一个点数)一旦接受了消息,就可以用这些额外的点来填充在上一个WM_MOUSEMOVE消息和当前消息之间的空白消息和当前消息之间的空白 GetMouseMovePoints 函数返回的是在触摸板分辨率而不是屏幕分函数返回的是在触摸板分辨率而不是屏幕分辨率下的点,这一般被设置成屏幕分辨率的辨率下的点,这一般被设置成屏幕分辨率的4倍,所以需要由函数倍,所以需要由函数GetMouseMovePoints 返回的坐标值除以返回的坐标值除以4,这样才能将它们转换成屏,这样才能将它们转换成屏幕坐标幕坐标 ((2)手绘)手绘 沧吹筹俩疤胯曰冕酿嘴各特篓热医洗县蒙全损点洛侥葛伤财鄙漠乙微耿镐《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 菜单在菜单在Windows输入中占据着重要地位。
尽管每个应用输入中占据着重要地位尽管每个应用程序可能有不同的键盘和输入笔界面,但几乎所有的菜单结构程序可能有不同的键盘和输入笔界面,但几乎所有的菜单结构对于对于Windows用户来说都很熟悉用户来说都很熟悉 Windows CE在使用菜单方面与其他在使用菜单方面与其他Windows程序有些程序有些不同,最明显的是在不同,最明显的是在Windows CE系统中,菜单并不是标准系统中,菜单并不是标准窗口的一部分在窗口的一部分在Windows CE系统中,菜单被附加到为窗系统中,菜单被附加到为窗口创建的命令栏控件上除了这个变化之外,大多数情况下,口创建的命令栏控件上除了这个变化之外,大多数情况下,菜单的功能和应用程序处理选择菜单的方式也与其他版本的菜单的功能和应用程序处理选择菜单的方式也与其他版本的Windows相同 3、菜单、菜单吮捉夕称董绦漫供予锨鼓仿忱签距拳面北眶必哭刽威蓑贿低鬼陆棕固慢蔽《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院对于每一个菜单项,都对应如下两种消息:对于每一个菜单项,都对应如下两种消息: lCOMMANDlUPDATE_COMMAND_UI 每一个菜单项都有一个每一个菜单项都有一个ID,当用户选取了某一个菜单项,,当用户选取了某一个菜单项,系统就会传递一个系统就会传递一个WM_COMMAND消息以及该菜单项的消息以及该菜单项的ID给所属窗口,这样应用程序就获得了用户的要求。
给所属窗口,这样应用程序就获得了用户的要求 每一个菜单命令都对应一个更新命令用户界面消息可以每一个菜单命令都对应一个更新命令用户界面消息可以为更新命令用户界面消息编写消息处理函数来处理用户界面为更新命令用户界面消息编写消息处理函数来处理用户界面(包括菜单和工具栏按钮)的更新包括菜单和工具栏按钮)的更新 UPDATE_COMMAND_UI就是更新命令用户界面消息,专就是更新命令用户界面消息,专门用于处理菜单项和工具栏按钮的更新门用于处理菜单项和工具栏按钮的更新 ((1)和菜单相关的主要消息)和菜单相关的主要消息 闹变乍塔滩必祷嫂输嗅女舆虹逢首磁如警蛀缘篆违象躲桩需仿漳拭鲁遇江《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 菜单的使用有两种方法,一种是直接把菜单资源当做菜单的使用有两种方法,一种是直接把菜单资源当做框架窗口的主菜单,这种方法可以直接通过类向导框架窗口的主菜单,这种方法可以直接通过类向导ClassWizard很方便的实现;另一种就是将菜单看做对象,很方便的实现;另一种就是将菜单看做对象,在在MFC中,中,CMenu就是菜单所对应的类。
就是菜单所对应的类CMenu类提供类提供了创建菜单、更新菜单、销毁菜单等成员函数,下面介绍了创建菜单、更新菜单、销毁菜单等成员函数,下面介绍一些常用的一些常用的CMenu类成员函数类成员函数2))CMenu类类 草酌酝瘁县唐筐优翘闲温父玄觅腻绩汹篆娱涎爆仲视钻忙热达句伶器孜锭《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院1)创建菜单)创建菜单 菜单可以通过菜单可以通过CreateMenu和和CreatePopupMenu这两这两个成员函数来创建,个成员函数来创建,CreateMenu函数用来创建一个空的主函数用来创建一个空的主菜单,定义如下:菜单,定义如下: BOOL CreateMenu( ); CreatePopupMenu函数用来创建一个空的上下文菜单,函数用来创建一个空的上下文菜单,上下文菜单是主菜单的另一种类型,它是垂直显示而不是水上下文菜单是主菜单的另一种类型,它是垂直显示而不是水平显示,平常不会显示在画面上,只有需要时才出现在屏幕平显示,平常不会显示在画面上,只有需要时才出现在屏幕上。
就像上就像Windows程序的鼠标右键菜单一样函数定义如下:程序的鼠标右键菜单一样函数定义如下:BOOL CreatePopupMenu( );很情益渺屎罗口呛斑此歹蛀汗摊蛤叛瞩剑沾宙旗务俱碱导钥夸致塑馁绷褥《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2)从资源文件中读取菜单资源)从资源文件中读取菜单资源 使用使用LoadMenu函数可以从资源文件中读取菜单资源以函数可以从资源文件中读取菜单资源以建立菜单,函数定义如下:建立菜单,函数定义如下: BOOL LoadMenu( LPCTSTR lpszResourceName ); BOOL LoadMenu( UINT nIDResource ); 其中,其中,lpszResourceName为位图的名字,为位图的名字,nIDResource为位图的资源符号。
为位图的资源符号 另外,可以通过函数另外,可以通过函数GetMenu函数将窗口所用的菜单函数将窗口所用的菜单取出来,取出来,GetMenu函数定义如下:函数定义如下: CMenu* CWnd::::GetMenu( ) const; 如果给定的窗口没有菜单,则返回如果给定的窗口没有菜单,则返回NULL如果窗口是一如果窗口是一个子窗口,返回值无定义与个子窗口,返回值无定义与GetMenu函数相反,函数相反,SetMenu函数用来设定窗口所用的菜单函数定义如下:函数用来设定窗口所用的菜单函数定义如下: BOOL CWnd::::SetMenu( CMenu* pMenu ); 旺诵褐诫棠泳氮窃阵蚌沾捶拯骄肆舜根辞绊谱脂娶演钢秉拾解乙烟萍梗绰《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3)将句柄和菜单挂钩或分离)将句柄和菜单挂钩或分离 通常菜单都以资源的类型存在于资源文件中,和其他资通常菜单都以资源的类型存在于资源文件中,和其他资源一样,也有一个源一样,也有一个ID。
程序执行时,资源便被载入进来,并程序执行时,资源便被载入进来,并且要在且要在Windows系统中登记,登记完成后,系统就会给这个系统中登记,登记完成后,系统就会给这个菜单一个句柄,操作方式和新建新窗口一样但是和菜单一个句柄,操作方式和新建新窗口一样但是和CWnd一样,需要将句柄与一样,需要将句柄与CMenu挂钩,挂钩和分离的方法分别是挂钩,挂钩和分离的方法分别是调用调用Attach函数和函数和Detach函数,分别定义如下:函数,分别定义如下: BOOL CMenu:::: Attach( HMENU hMenu ); HMENU CMenu::::Detach( );肃创妆怒忌疹仟澜伍轰艘倚池圃汉靳惫疆拧邱烈吟韦真补潘文石匈雌赛谣《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4)改变菜单状态)改变菜单状态 Ø增加菜单增加菜单 利用利用CMenu类的类的AppendMenu和和InsertMenu函数可以用来函数可以用来增加菜单项。
增加菜单项 AppendMenu函数是在菜单的结尾处新增菜单选项,有两种形函数是在菜单的结尾处新增菜单选项,有两种形式,第一种形式用来增加非图片类的选项、分割线或子菜单,第二种式,第一种形式用来增加非图片类的选项、分割线或子菜单,第二种形式可以插入一张位图作为选项分别定义如下:形式可以插入一张位图作为选项分别定义如下:BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem= NULL );BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp ); 其中,参数其中,参数nFlags控制新菜单项的外观和性能的标志,其取值控制新菜单项的外观和性能的标志,其取值可以是备注里所列值的组合可以是备注里所列值的组合 参数参数nIDNewItem指定新菜单项的标识符,或者当指定新菜单项的标识符,或者当uFlags设设置为置为MF_POPUP时,表示下拉式菜单或子菜单的句柄。
时,表示下拉式菜单或子菜单的句柄 参数参数lpszNewItem表示新创建菜单的内容表示新创建菜单的内容场侠喂午非函塌桅娠摸王份潜进硬禾熟宴冠朱瞄豪囱抿谣伍皿疾携拓燥隐《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 在实际使用时,希望能将新建的菜单插入到指定的位置,在实际使用时,希望能将新建的菜单插入到指定的位置,用用InsertMenu函数就可以满足这项要求,同样,它也有两种函数就可以满足这项要求,同样,它也有两种形式,分别用来插入位图和非位图,形式,分别用来插入位图和非位图,InsertMenu函数的定义函数的定义如下:如下:BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp ); 其中,参数其中,参数nPosition指定新菜单项将被插入其前面的菜指定新菜单项将被插入其前面的菜单项,其含义由参数单项,其含义由参数uFlags决定。
决定 参数参数uFlags指定控制参数指定控制参数uPosition的解释的标志、新菜的解释的标志、新菜单项的内容、外观和性能单项的内容、外观和性能鹅捏逮肖意柠绅脓掏拆廖祖棉诈夷舆院方百务逛躁玖汽柔铀巍凄袖克叉废《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø更新菜单更新菜单 如果想要修改某个菜单选项的文字或者图形,可以使用如果想要修改某个菜单选项的文字或者图形,可以使用ModifyMenu函数,函数定义如下:函数,函数定义如下:BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );酗甭识勃痰蠕谴喇袋卤萌增滔媒辜舷徘钟汲慌呻陀匡弛级京湖捌窄杀顽胰《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø改变菜单的状态改变菜单的状态 菜单选项的状态可以通过菜单选项的状态可以通过EnableMenuItem函数来改变,函数来改变,函数定义如下:函数定义如下:UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable ); 其中,参数其中,参数nIDEnableItem表示将要被允许或禁止的一表示将要被允许或禁止的一个菜单条目的标识符。
如果在个菜单条目的标识符如果在nEnable参数中设置了参数中设置了MF_BYCOMMAND标志,这个参数就代表将要被改变菜单标志,这个参数就代表将要被改变菜单条目的命令条目的命令ID如果设置的是如果设置的是MF_BYPOSITION,则这个,则这个参数代表菜单条目在菜单中的位置参数代表菜单条目在菜单中的位置 参数参数nEnable表示将要对菜单执行的操作,表示将要对菜单执行的操作, 连繁贵仰栓裴嗣捏框座这褂恐遣奴审跃春树可克啦驴讨乳象误缅虞相晦局《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院参数参数nEnable表示将要对菜单执行的操作,表示将要对菜单执行的操作,其取值和含义如其取值和含义如表所示表所示 取取值含含义MF_BYCOMMAND指定参数给出已存在的菜单项的命令ID号。
此为缺省值MF_BYPOSITION指定参数给出已存在菜单项的位置第一项所在的位置是0MF_DISABLED使菜单项无效,以便它不能被选择,但不变灰MF_ENABLED使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来MF_GRAYED使菜单项无效,以便它不能被选择并同时变灰拎文垢竿弥窍互敞遥崎借搐雅竣点电筹完爬济凭坎积琉沏懈池贯棋膨掖疥《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4、应用实例、应用实例 本节通过制作电子相册的菜单来说明菜单的使用首本节通过制作电子相册的菜单来说明菜单的使用首先建立新项目,在先建立新项目,在EVC环境下新建一个基于对话框的应用环境下新建一个基于对话框的应用程序,将项目名称设为程序,将项目名称设为“Ephoto”。
电子相册的菜单项如下:电子相册的菜单项如下:一个弹出菜单一个弹出菜单“文件文件”,,“文件文件”弹出菜单下有弹出菜单下有“打开打开”、、 “保保存存”、、“另存为另存为”和和“退出退出”四个菜单项,在四个菜单项,在“打开打开”和和“另存为另存为”菜单下加入分隔符菜单下加入分隔符一个弹出菜单一个弹出菜单“选择图片选择图片”,,“选择图片选择图片”弹出菜单下加入弹出菜单下加入“加加载路径载路径”菜单项用来添加图片用来添加图片一个弹出菜单一个弹出菜单“查看查看”,,“查看查看”弹出菜单下加入弹出菜单下加入“第一张第一张”、、“前一张前一张”、、“后一张后一张”和和“最后一张最后一张”四个菜单项用来查看电四个菜单项用来查看电子相册中的图片子相册中的图片鲤浪季乓檀涪绝务找率吁饰钎鬼咸寐字问驱欧芳企慷价纵岳汪右拂夜炽头《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((1)编辑菜单资源)编辑菜单资源 编辑由编辑由AppWizard自动生成的菜单资源,选择项目工作自动生成的菜单资源,选择项目工作区的区的ResourceView标签,切换到资源视图,双击菜单资标签,切换到资源视图,双击菜单资源源IDR_MAINFRAME,将弹出菜单编辑窗口。
如图所示将弹出菜单编辑窗口如图所示 恬遍督蝴状嘿诫疵唾勋虐泉谈恨祷短凭队酚锣利窖燃放形耐于嗽锅馋壁唁《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院在图中,我们首先添加弹出菜单在图中,我们首先添加弹出菜单“文件文件”,在菜单属性栏例,在菜单属性栏例输入输入 “文件文件”,然后在,然后在“文件文件”弹出菜单下加入弹出菜单下加入“打开打开”、、“保保存存”、、“另存为另存为”和和“退出退出”四个菜单项,四个菜单项,“文件文件”弹出菜单的各弹出菜单的各菜单属性设置如下:菜单属性设置如下:IDCaptionIDR_MENU_FILE文件ID_MENU_OPEN打开ID_MENU_SAVE保存ID_MENU_SAVEAS另存为ID_MENU_EXIT退出察保戎冻蛋特歇们豺演吾曲熔己抡呻帝马寒胃伎戒元铜逻驯尾帜辅俐乎妥《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院“选择图片选择图片”弹出菜单的菜单属性设置如下:弹出菜单的菜单属性设置如下:IDCaptionIDR_MENUADD选择图片ID_ELECTPATH加载路径“浏览浏览”弹出菜单的各菜单属性设置如下:弹出菜单的各菜单属性设置如下:IDCaptionID_MENU_CHECK浏览ID_MENU_FIRST第一张ID_MENU_PRE前一张ID_MENU_LATER后一张ID_MENU_LAST最后一张坯虏蛇调池际津惭影许吞苞狮缺完灼氰俘视秒啮膊乙绷滨椽橱学有恼阐房《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)添加弹出式菜单)添加弹出式菜单 使用使用Class Wizard添加一个添加一个WM_LBUTTONDOWN消息消息处理函数。
如图所示处理函数如图所示 撒沿甩衣剩活匡钞补叼梭洁袁钞谤驮嚏曲耸墅辨力龋帅滥撵辛慑前苏咒戒《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院创建并显示弹出式菜单在该消息处理函数中,添加如下代码创建并显示弹出式菜单在该消息处理函数中,添加如下代码void CPhotoView::OnLButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call default//创建一个弹出式菜单创建一个弹出式菜单 CMenu menu; //创建创建CMenu类对象类对象menu.CreatePopupMenu(); //创建一个空的弹出式菜单创建一个空的弹出式菜单menu.AppendMenu(MF_STRING,1,_T("第一张第一张")); menu.AppendMenu(MF_STRING,2,_T("前一张前一张"));menu.AppendMenu(MF_STRING,3,_T("后一张后一张"));menu.AppendMenu(MF_STRING,4,_T("最后一张最后一张")); menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN, point.x, point.y, this);CView::OnLButtonDown(nFlags, point);}兼窜寒纶潜续梁掺粒洼流湍瘩垦为准冷误豫泻贼杠陪唤措碟邹荒板牌晰蚁《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院程序运行结果如图所示。
程序运行结果如图所示a.下拉菜单下拉菜单b.弹出式菜单弹出式菜单废佩牟峙柑驮酞哑僻傈芝姐聊页那您变陇氛削宴鸵皱述迎砚朋沫俄画艰翼《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3)启用和禁止菜单项)启用和禁止菜单项 如果一个新的菜单命令没有添加命令处理函数,应用如果一个新的菜单命令没有添加命令处理函数,应用程序会自动将其禁用,如上图所示要启用这个菜单项,程序会自动将其禁用,如上图所示要启用这个菜单项,使用使用Class Wizard为其添加一个命令处理函数即可如果为其添加一个命令处理函数即可如果想要根据应用程序有选择的启用和禁用某个菜单项,可以想要根据应用程序有选择的启用和禁用某个菜单项,可以用用Class Wizard添加一个界面消息处理函数。
具体步骤如添加一个界面消息处理函数具体步骤如下:下: ((1)为菜单添加命令处理函数,在)为菜单添加命令处理函数,在“message”列表框中,列表框中,这里不选择这里不选择“COMMAND”,而是选择,而是选择“UPDATE_COMMOND_UI”消息处理函数消息处理函数 ((2)启用和禁止菜单命令添加下面代码到新的处理函)启用和禁止菜单命令添加下面代码到新的处理函数中,则菜单项可用数中,则菜单项可用贞凝身涪晃刀检豌铁寂琼腊妇颐恨颧喻票羔骇皂困图新藏谅镣弓苛侠诊污《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CPhotoView::OnUpdateMenuOpen(CCmdUI* pCmdUI) {pCmdUI->Enable();}运行结果如图所示运行结果如图所示启用菜单项启用菜单项咬狡怪芒烁麻坷瘤眯监父汕耸象曾川察愤秩迪慈什疤庭泽咽浓扣柳屉馅磋《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 七、屏幕绘图七、屏幕绘图 1、屏幕绘图基础、屏幕绘图基础((1)设备环境)设备环境 “设备环境设备环境”((Device Context,,DC),是),是Windows用来管理访问显示和打印设备的工具,是用来管理访问显示和打印设备的工具,是Windows应用程应用程序、设备驱动程序和输出设备(如显示器、打印机、绘图序、设备驱动程序和输出设备(如显示器、打印机、绘图仪等)之间的桥梁。
如图显示了仪等)之间的桥梁如图显示了Windows应用程序经过设应用程序经过设备环境到设备驱动程序并最终到输出设备的信息流备环境到设备驱动程序并最终到输出设备的信息流的藤甸乍宽旗鞘赖替症赤劈雷福汤滔祸避彤辕砧插呢薄畔偿湿侍焰氛器茎《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)图形对象)图形对象 在在Windows 应用程序中,图形与文本都是通过图形设备应用程序中,图形与文本都是通过图形设备接口(接口(GDI,,Graphics Device Interface),以图形形式来处),以图形形式来处理的Windows CE 提供了功能强大的图形设备接口提供了功能强大的图形设备接口((GDI),),Windows CE GDI的基本绘制操作有:点、线、的基本绘制操作有:点、线、矩形、多边形、椭圆、圆角矩形和位图等。
矩形、多边形、椭圆、圆角矩形和位图等 设备环境定义了逻辑显示界面,提供了绘图方法,设备环境定义了逻辑显示界面,提供了绘图方法,GDI对象提供了对象提供了CDC类绘图的工具在绘图时,利用类绘图的工具在绘图时,利用CDC类的类的SelectObject方法选入方法选入GDI绘图工具,在调用绘图方法时就会绘图工具,在调用绘图方法时就会采用采用GDI绘图工具下面先介绍绘图工具下面先介绍Windows中最基本的图形对中最基本的图形对象:画笔(用来绘制直线的工具)、画刷(用来添充区域内象:画笔(用来绘制直线的工具)、画刷(用来添充区域内部的工具)和位图部的工具)和位图川倪块轮须晨软马诺玫惯汛关稀章取浚缮衬辱耙柜傲尧荒崩怜鲜菇领痔忍《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3)画笔)画笔 CPen类用于实现画笔功能,画笔可用于绘制对象的边框、类用于实现画笔功能,画笔可用于绘制对象的边框、直线和曲线等。
如果需要在绘图中选入画笔,可以使用直线和曲线等如果需要在绘图中选入画笔,可以使用CDC类的类的SelectObject函数来完成在使用画笔绘制之前,首先函数来完成在使用画笔绘制之前,首先要创建画笔对象要创建画笔对象CreatePen方法的定义如下:方法的定义如下: BOOL CreatePen((int nPenStyle,,int nWidth,, COLORREF crColor);); COLORREF RGB((cRed,,cGreen,,cBlue);); RGB宏中的参数宏中的参数cRed,,cGreen,,cBlue分别用于指定红、分别用于指定红、绿、蓝三色的相对宽度,每个参数均赋予绿、蓝三色的相对宽度,每个参数均赋予0到到255之间的值之间的值法兆罚童孺蜂咙孵完讨焦歉覆烽侦显蚤束篮泄沈外吱赘匆渤庭带泥峻腰疙《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院参数参数nWidth用于设置以逻辑单位衡量的线宽。
参数用于设置以逻辑单位衡量的线宽参数nPenStyle用于设置画笔画线的线型,具体的参数值定义如用于设置画笔画线的线型,具体的参数值定义如表所示画笔画笔类型型PS_SOLID画实线PS_DASH画虚线PS_DOT画点线PS_DASHDOT画虚点线PS_DASHDOTDOT画虚点点线PS_NULL不画线PS_INSIDEFRAME在一个封闭形状的框架内画线州朽己猛痔仗鹏划辐嗜拓序涉梨灶肋树徒嚎逐操够崔扣康絮茧陈样弊焰骗《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((4)画刷)画刷 画刷用来填充一个封闭图形对象(矩形、椭圆等)的内画刷用来填充一个封闭图形对象(矩形、椭圆等)的内部区域,默认的画刷将把封闭图形的内部填充成全白色。
和部区域,默认的画刷将把封闭图形的内部填充成全白色和画笔一样,绘图时通过画笔一样,绘图时通过SelectObject函数选入画刷在函数选入画刷在Windows CE中提供了中提供了“实心画刷实心画刷”、、“与设备无关位图画刷与设备无关位图画刷”、、“位图画刷位图画刷”、、“系统颜色画刷系统颜色画刷” 实心画刷就是以某个颜色完全填充刷子,可以通过类成实心画刷就是以某个颜色完全填充刷子,可以通过类成员函数员函数CreateSolidBrush创建实心画刷创建实心画刷 BOOL CreateSolidBrush((COLORREF crColor);); 其中参数其中参数crColor用于指定画刷的颜色,如果函数的返回用于指定画刷的颜色,如果函数的返回值为值为TRUE,表示创建实心画刷成功,反之则创建失败表示创建实心画刷成功,反之则创建失败焙雄谍因猪经疽牺届踞把掘雅驴寄准豹癸验闷靳障历熬筏工矿匆曾翔挠曝《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院n画笔和实心画刷的使用很简单,下面以一个矩形的绘制和画笔和实心画刷的使用很简单,下面以一个矩形的绘制和填充为例来说明画笔和实心画刷的使用。
在填充为例来说明画笔和实心画刷的使用在EVC环境下新建环境下新建一个单文档的应用程序,在一个单文档的应用程序,在View类的类的OnDraw函数中填写函数中填写下面程序代码下面程序代码nvoid CEvc1View::OnDraw(CDC* pDC)n{nCEvc1Doc* pDoc = GetDocument();nASSERT_VALID(pDoc);nCPen pen;n CBrush brush;npen.CreatePen(PS_SOLID,3,RGB(255,0,0));//创建画笔创建画笔nbrush.CreateSolidBrush(RGB(0,255,0));//创建实心画刷创建实心画刷nCPen *OldPen=pDC->SelectObject(&pen);//选入设备描述表选入设备描述表nCBrush *pOldBrush=pDC->SelectObject(&brush);npDC->Rectangle(50,50,200,200);//绘制矩形绘制矩形npDC->SelectObject(OldPen);npDC->SelectObject(pOldBrush); n}笑锤圾抵禁涧邱卖刊岛蝶寨走增揍翼坷嗣宴肮舆倘钮乍悯久考榴殆贺岸琴《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院运行结果如图所示运行结果如图所示 该程序只是简单的用红色画笔绘制了一个矩形,并使该程序只是简单的用红色画笔绘制了一个矩形,并使用绿色来填充它。
用绿色来填充它 其他几种画刷也可以通过调用不同的函数来创建,与其他几种画刷也可以通过调用不同的函数来创建,与设备无关的位图画刷可以通过类成员函数设备无关的位图画刷可以通过类成员函数CreatDIBPatternBrush来创建;位图画刷可以通过类成来创建;位图画刷可以通过类成员函数员函数CreatPatternBrush来创建;系统颜色画刷可以通来创建;系统颜色画刷可以通过类成员函数过类成员函数CreatSysColorBrush来创建;来创建; 画笔和实心画刷效果图画笔和实心画刷效果图 秤斯珐避刁课寡腮物哩叫扩宇辊萌惯倡肌距悠益寡渣融娇胁舷贺促韭循躲《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((5)位图)位图 位图是定义图像或图案时使用的一个像素阵列,像素的位图是定义图像或图案时使用的一个像素阵列,像素的颜色用位图信息位中的数据来描述。
可以用来在设备环境中颜色用位图信息位中的数据来描述可以用来在设备环境中创建、绘制、操作和检索图像的图形对象总的来说,在创建、绘制、操作和检索图像的图形对象总的来说,在Windows程序设计中位图具有两个方面的功能程序设计中位图具有两个方面的功能 1)功能性应用可以通过位图创建位图画刷,位图还有)功能性应用可以通过位图创建位图画刷,位图还有其他的功能性应用其他的功能性应用 2)构建应用程序的图形界面优秀的)构建应用程序的图形界面优秀的Windows应用程应用程序都具有友好的程序界面,友好的程序界面离不开图形技术,序都具有友好的程序界面,友好的程序界面离不开图形技术,位图是常要用到的图形要素位图是常要用到的图形要素摄凯汾签栅纲呼恩杠钳圈邑义隅加沛茄掖峭楞湾硅晦级了档掐簇鸯惶宛掀《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 在在MFC中有专门的位图管理类:中有专门的位图管理类:CBitmap类。
使用位图类使用位图的第一步是先声明一个的第一步是先声明一个Cbitmap类的对象如:类的对象如: CBitmap pBitmap;; 声明位图对象后,必须调用适当的声明位图对象后,必须调用适当的CBitmap类成员函数来类成员函数来初始化位图对象初始化位图对象 1)装载预定位图)装载预定位图 位图是一种资源,在使用某个位图的前提是必须存在该位位图是一种资源,在使用某个位图的前提是必须存在该位图资源当要使用一个位图而该位图又不存在时,必图资源当要使用一个位图而该位图又不存在时,必须首先生成所需的位图资源须首先生成所需的位图资源 可以使用可以使用CBitmap的成员函数的成员函数LoadOEMbitmap()来装()来装载载Windows预定义位图,函数原型为:预定义位图,函数原型为: BOOL LoadOEMbitmap((UINT nIDBitmap););其中参数其中参数nIDBitmap是是Windows预定义位图的预定义位图的ID号猛扮胞芥蛤荔歇即擂捡揽坟阑鹃氟拄诊红勺竿雌搬嵌午猫波砒庄蝗芥戎藕《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 2)从资源中装载位图)从资源中装载位图 将位图看成是程序资源,就可以先使用图形编辑器来设计将位图看成是程序资源,就可以先使用图形编辑器来设计图,然后调用图,然后调用CBitmap的成员函数的成员函数LoadBitmap()从程序()从程序资源中装载位图。
从资源中装载位图时,必须赋予位图的资资源中装载位图从资源中装载位图时,必须赋予位图的资源符号,如源符号,如IDB_BITMAP1LoadBitmap函数的用法为:函数的用法为:BOOL LoadBitmap((LPCTSTR lpszRESOURCENAME););Bool LoadBitmap((UINT nIDResurce);); 其中,其中,lpszRESOURCENAME为位图的名字,为位图的名字,nIDResurce为位图的资源符号为位图的资源符号友正研骑溜汀叫安内猾郁尽勋牡雇艺焰惜浑轧亩摄服央喇过皇尽而典桌躯《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 3)调用绘图函数建立位图)调用绘图函数建立位图 在位图能绘制在屏幕在位图能绘制在屏幕DC上之前,它必须被选入上之前,它必须被选入DC,然后,然后复制到屏幕设备环境。
将位图选入设备环境的过程与将逻辑复制到屏幕设备环境将位图选入设备环境的过程与将逻辑字体选入设备环境的过程相似,位图选择过程必须将可用的字体选入设备环境的过程相似,位图选择过程必须将可用的设备颜色与位图所需颜色相匹配只有做完了这些之后,位设备颜色与位图所需颜色相匹配只有做完了这些之后,位图才能在屏幕上绘出使用绘图函数建立位图的基本过程为:图才能在屏幕上绘出使用绘图函数建立位图的基本过程为: ①①创建空白位图创建空白位图 ②②创建内存设备描述表对象创建内存设备描述表对象 ③③将位图选入设备描述表对象将位图选入设备描述表对象 ④④利用内存设备描述表对象的成员函数在位图内绘制位图利用内存设备描述表对象的成员函数在位图内绘制位图 ⑤⑤最后利用绘图函数在位图内绘制位图最后利用绘图函数在位图内绘制位图直敦贴凿嘶冗馆叙轰烯刽呵娟勇沙桩舌廷迅惩寡弧雁窝唇梁葡抬早棍痹蚕《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、绘制位图、绘制位图 在创建和加载位图之后,需要将其显示在屏幕上。
绘制位在创建和加载位图之后,需要将其显示在屏幕上绘制位图首先需要将位图对象选入到屏幕设备环境中,然后才能复图首先需要将位图对象选入到屏幕设备环境中,然后才能复制到屏幕设备环境上将位图选入到设备环境的过程与选入制到屏幕设备环境上将位图选入到设备环境的过程与选入画笔和画刷等的过程类似,但是位图的选择过程必须将可用画笔和画刷等的过程类似,但是位图的选择过程必须将可用的设备颜色与位图所需的颜色匹配起来,只有这样,位图才的设备颜色与位图所需的颜色匹配起来,只有这样,位图才能在屏幕上绘制出来下面简要的介绍能在屏幕上绘制出来下面简要的介绍CDC的绘图函数的绘图函数 ((1))BitBlt函数函数 BitBlt函数基本上只是一个内存复制函数,可以将图形数据块从函数基本上只是一个内存复制函数,可以将图形数据块从一个位置传送到另一个位置,源和目标可以是同一个设备描述表一个位置传送到另一个位置,源和目标可以是同一个设备描述表对象,也可以是不同的设备描述表对象对象,也可以是不同的设备描述表对象BitBlt函数的原型如下:函数的原型如下: BOOL BitBlt( int x,, int y,,int nWidth,,int nHeight,, CDC* pSrcDC,,int xSrc,,int ySrc,, DWORD dwRop );;凰敝噪埃删彦枪妻蹦估五黔粥川隘零领膛瞬壤蝗煞数幂纷愚煎驼音榷所拔《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院参数参数x、、y指定目标矩形区左上角的逻辑坐标。
指定目标矩形区左上角的逻辑坐标参数参数nWidth、、nHeight指定目标矩形区的宽度和高度指定目标矩形区的宽度和高度参数参数pSrcDC指向用于标示位图被拷贝时所在设备环境指向用于标示位图被拷贝时所在设备环境CDC对对象的指针象的指针参数参数xSrc、、ySrc表示设定原位图左上角的逻辑坐标表示设定原位图左上角的逻辑坐标参数参数dwRop设定要执行的光栅操作,决定了位图的显示方式,设定要执行的光栅操作,决定了位图的显示方式,其取值和含义如表所示其取值和含义如表所示赢浑挪竹熙绷陈命诽由宏裤帛烹婆事喇狙蒜楚趣悠似孪垒钡弊躬妥唐时荒《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院取值取值含义含义BLACKNESS用黑色填充到目标区域DSTINVERT反转目标位图MERGECOPY用与操作把图案和源位图融合起来MERGEPAINT用或操作把反转的源位图和目标位图融合NOTSRCCOPY把源位图反转拷贝到目标区域NOTSRCERASE用或操作融合源位图和目标位图,然后反转PATCOPY把图案拷贝到目标位图中PATINVERT用异或操作把图案和目标位图融合PATPAINT用或操作融合图案和反转的源,然后再用或操作把结果和目标位图融合SRCAND用与操作融合源图案和目标位图SRCCOPY把源位图拷贝到目标位图SRCERASE先反转目标位图,在用与操作将其与源位图融合SRCINVERT用异或操作融合源位图和目标位图SRCPAINT用或操作融合源位图和目标位图WHITENESS利用白色填充目标区域衡怔作幌觉械誉编衰亏缴碱怨潍帚缴涡叠卵檬驹耶巍哥匹腾厦鳖楷辨钒霓《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 ((2))PatBlt函数函数 PatBlt函数的作用是使用当前使用的画刷来填充一个矩形。
函数的作用是使用当前使用的画刷来填充一个矩形PatBlt函数的原型如下:函数的原型如下: BOOL PatBlt( int x,, int y,, int nWidth,,int nHeight,, DWORD dwRop );; 参数参数x、、y指定目标矩形区左上角的逻辑坐标指定目标矩形区左上角的逻辑坐标 参数参数nWidth、、nHeight指定目标矩形区的宽度和高度指定目标矩形区的宽度和高度 参数参数dwRop表示光栅操作模式,指定如何使用画刷,一共表示光栅操作模式,指定如何使用画刷,一共有有5种操作模式,如表所示种操作模式,如表所示 操作模式操作模式意义意义PATCOPY表示画刷被复制到填充区域PATINVERT表示画刷被异或到填充区域DSTINVERT表示区域被“反相”复制到填充区域BLACKNESS表示区域被填充成黑色,画刷被忽略WHITENESS表示区域被填充成白色,画刷被忽略婆履绚副批澎票馋雹器版赡每壤描勾按悄棚砸岩诧讯捍铂瞬荣暑桐匝馏屉《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3))StretchBlt函数函数 StretchBlt函数可以执行所有用函数可以执行所有用BitBlt函数可以执行的操作,函数可以执行的操作,此外,该函数可以拉伸显示位图。
如果位图的目标区域比源区此外,该函数可以拉伸显示位图如果位图的目标区域比源区域小,则压缩显示;如果位图的目标区域比源区域大,则拉伸域小,则压缩显示;如果位图的目标区域比源区域大,则拉伸显示StretchBlt函数的原型如下:函数的原型如下: BOOL StretchBlt( int x,, int y,, int nWidth,, int nHeight,, CDC* pSrcDC,,int xSrc,,int ySrc, int nSrcWidth,, int nSrcHeight,,DWORD dwRop );; StretchBlt函数比函数比BitBlt函数多了两个参数,函数多了两个参数,nSrcWidth和和nSrcHeight参数分别用来表示位图的逻辑宽度和高度参数分别用来表示位图的逻辑宽度和高度汤下轻康常惩熟聘财涣播巧歧墒掌锄泻迪脉饶挝匙谋而呸陇嚷娃土巷兵汇《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 下面举一个简单的例子来说明位图函数的使用。
在下面举一个简单的例子来说明位图函数的使用在EVC环环境下新建一个单文档的应用程序,在资源中插入位图资源,位境下新建一个单文档的应用程序,在资源中插入位图资源,位图的资源符号为图的资源符号为IDB_BITMAP1 在在View类的类的OnPaint函数中填写下面程序代码函数中填写下面程序代码运行结果如图运行结果如图窄势甩袭硝亲症阅茹曰咋酵磐为搓巾放擅溺刮揖恒萎隋燎沽薄误喜掖尖炳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CEPhotoView::OnPaint() {CPaintDC dc(this); // device context for paintingCDC memDC;CBitmapbitmap;BITMAP bmp;bitmap.LoadBitmap(IDB_BITMAP1);//加载图片加载图片bitmap.GetObject (sizeof(BITMAP),&bmp);memDC.CreateCompatibleDC (&dc);//创建空白位图创建空白位图memDC.SelectObject (bitmap);//选入设备环境选入设备环境CRect rect;GetClientRect(&rect);int X = rect.left + (rect.Width() - bmp.bmWidth) / 2;int Y = rect.top + (rect.Height() - bmp.bmHeight) / 2;dc.BitBlt (X,Y,bmp.bmWidth ,bmp.bmHeight ,&memDC,0,0,SRCCOPY);}脐孔驹荫氯累陷唐希抒琵铣乳抢婴钒还迭潍倔颇于钱钞绿梁翱磷撞仲盅秩《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3、线条与形状、线条与形状 Windows CE比其他版本的比其他版本的Windows提供更少基本功能的提供更少基本功能的部分是在基本的画线条和画形状的函数方面。
没有提供能创部分是在基本的画线条和画形状的函数方面没有提供能创建复杂的圆形的建复杂的圆形的Chord、、Arc、、Pie函数但是即使缺少了这函数但是即使缺少了这些图像函数,些图像函数,Windows CE仍然提供了画线条和形状所必须仍然提供了画线条和形状所必须的一些基本函数的一些基本函数1)线条)线条 最基本的画线条的方法就是最基本的画线条的方法就是MoveTo方法和方法和LineTo方法,方法,先用先用MoveTo方法设置线条的起始点,然后用方法设置线条的起始点,然后用LineTo方法从方法从起始点连接到目标点,具体的线形由起始点连接到目标点,具体的线形由CPen类定义构接逆蛇穗蛋幢韧耸胰撒碟性子电预劳究嫌慑虚嵌坊庙窍砸试欣雌铁唯镊《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 MoveTo和和LineTo方法的定义如下:方法的定义如下: CPoint MoveTo( int x, int y ); CPoint MoveTo( POINT point ); BOOL LineTo( int x, int y ); BOOL LineTo( POINT point ); MoveTo和和LineTo都有两种定义方法,其实质是一样的,都有两种定义方法,其实质是一样的,其中参数其中参数x、、y和和point都代表点坐标。
都代表点坐标 除了除了MoveTo和和LineTo方法外,方法外,CDC类还提供了其他方法类还提供了其他方法来画连续的直线,即来画连续的直线,即Polyline函数,函数,Polyline函数的定义如下:函数的定义如下: BOOL Polyline (LPPOINT lpPoints, int nCount);; Polyline函数用于画连续的直线,从第一个点开始依次画函数用于画连续的直线,从第一个点开始依次画连续的直线其中,参数连续的直线其中,参数lpPoints指向指向POINT结构数组,结构数组,nCount代表数组中的点个数,它的值最少为代表数组中的点个数,它的值最少为2荧诬屑水挟蕊槛斡舶综雅狂剩钙嗅昼灌溅酿谆虚脱拯俺炔迂瞅诚亡祖澈浆《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)形状)形状 Windows CE提供了多数提供了多数Windows 程序员所熟悉的函数。
程序员所熟悉的函数例如函数例如函数Rectangle、、RoundRect、、Ellipse和和Polygon全部都支全部都支持Ø矩形矩形 矩形函数或者是画实心矩形,或者是画空心矩形,通过矩形函数或者是画实心矩形,或者是画空心矩形,通过CDC类的类的Rectangle函数可以很方便的画出矩形,该函数有两函数可以很方便的画出矩形,该函数有两种定义方法,定义分别如下:种定义方法,定义分别如下: BOOL Rectangle( int x1, int y1, int x2, int y2 ); BOOL Rectangle( LPCRECT lpRect );恶禽沏暗夺学黍葬啊宪夏赡丘节业赣邻僵磕慎哆燎雹疡凹唯免诫复蹭壳晋《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø圆和椭圆圆和椭圆 圆和椭圆使用圆和椭圆使用CDC类的类的Ellipse函数来绘制,函数来绘制,Ellipse函数也函数也有两种定义方法,分别如下:有两种定义方法,分别如下: BOOL Ellipse( int x1, int y1, int x2, int y2 ); BOOL Ellipse( LPCRECT lpRect ); Ellipse方法指定了一个矩形作为参数,画椭圆时将使用被方法指定了一个矩形作为参数,画椭圆时将使用被传递的矩形作为限制矩形来绘制,如果传递的矩形作为限制矩形来绘制,如果x2-x1=y2-y1,那么绘,那么绘制出来的图形就是一个圆。
制出来的图形就是一个圆Ø圆角矩形圆角矩形 圆角矩形使用圆角矩形使用CDC类的类的RoundRect函数来绘制,函数来绘制,RoundRect函数也有两种定义方法,分别如下:函数也有两种定义方法,分别如下: BOOL RoundRect( int x1, int y1, int x2, int y2, int x3, int y3 ); BOOL RoundRect( LPCRECT lpRect, POINT point ); 眉丧彭架掘颅址局巴茸镰辩辉颖荐砰纪斟侩讲篆誊钩邀椅迢翔牧贵锡原妓《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø多边形多边形 CDC类还提供了绘制多边形的方法,即类还提供了绘制多边形的方法,即Polyline和和Polygon函数,函数,Polyline在上面已经介绍过,这里不再介绍。
在上面已经介绍过,这里不再介绍Polygon函数的定义如下:函数的定义如下: BOOL Polygon( LPPOINT lpPoints, int nCount ); Polygon函数的参数与函数的参数与Polyline函数的参数相同;函数的参数相同;lpPoints表示存储多边形点的数组;表示存储多边形点的数组;nCount表示多边形点表示多边形点的个数,也就是存储多边形数组的长度这两个函数都能完的个数,也就是存储多边形数组的长度这两个函数都能完成多边形的绘制,所不同的是:成多边形的绘制,所不同的是:Polyline函数是从数组中的函数是从数组中的第一个点开始依次连接,直到连接到最后一个点;第一个点开始依次连接,直到连接到最后一个点;Polygon函数在连完最后一个点后,还自动与第一个点进行连接,形函数在连完最后一个点后,还自动与第一个点进行连接,形成封闭的多边形成封闭的多边形尖型价返等冉燎末眺硷杠终重眯绷吼迅加棵史枷蚊冻燥距湖型横坦匿滇冯《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院下面举一个简单的例子来说明这几个函数的使用,在下面举一个简单的例子来说明这几个函数的使用,在EVC环境环境下新建一个单文档的应用程序,在下新建一个单文档的应用程序,在View类的类的OnPaint函数中函数中填写下面程序代码。
填写下面程序代码void CEPhotoView::OnPaint() {CPaintDC dc(this); // device context for paintingCPen NewPen; NewPen.CreatePen(PS_SOLID,1,RGB(255,0,0));CPen *pOldPen=dc.SelectObject(&NewPen);dc.Rectangle(30,30,110,110);//绘制矩形绘制矩形dc.Ellipse(30,130,200,200);//绘制椭圆绘制椭圆dc.RoundRect(120,20,200,100,20,20);//圆角矩形圆角矩形dc.SelectObject(&pOldPen);NewPen.DeleteObject();}惰卤袋肆酣陪屹块溯德埠甭棕协淫驰键钙湾团左湾沼鞋益毕棚挑态吠吨美《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院程序运行结果如图所示程序运行结果如图所示运行结果如图运行结果如图昨栗傀冰早井沤浪锈韩于餐豪粟殴骨疗亭跌万泰庆轮饺体颂荒聊养搔忌哭《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4、写文本、写文本 在在Windows中,图形和文本并没有严格的界限,它们都中,图形和文本并没有严格的界限,它们都是使用是使用GDI创建图形输出的。
事实上,文本也是按照所选用创建图形输出的事实上,文本也是按照所选用字体的格式画出来的文本操作首先要获得文本句柄此外,字体的格式画出来的文本操作首先要获得文本句柄此外,应用程序还要设置字体、字符大小、字符颜色等有关属性,应用程序还要设置字体、字符大小、字符颜色等有关属性,并将这些属性选入设备环境并将这些属性选入设备环境1)选择系统字体)选择系统字体 HFONT hF;;//定义字体句柄变量定义字体句柄变量 hF=GetStockObject();();//获得系统字体句柄获得系统字体句柄 SelectObject函数用于将字体选入设备环境函数用于将字体选入设备环境柠坍泼俭制漓焙搬赘宇情处置烦秽苹锁幌页伊漓悯舟街扎播抛茬逸烦冬羌《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)设置字体属性)设置字体属性 设置字体颜色用设置字体颜色用SetTextColor 函数,函数原型如下:函数,函数原型如下: virtual COLORREF SetTextColor( COLORREF crColor ); 设置文本背景颜色用设置文本背景颜色用SetBkColor函数,函数原型如下:函数,函数原型如下: virtual COLORREF SetBkColor( COLORREF crColor ); 设置文本的对齐方式用设置文本的对齐方式用SetTextAlign函数,函数原型如函数,函数原型如下:下: UINT SetTextAlign( UINT nFlags ); 其中,其中,nFlags是文本如何排列的对齐方式标识,主要有是文本如何排列的对齐方式标识,主要有TA_CENTER、、TA_LEFT、、TA_BOTTOM 等。
等熏椽紫须涝狸坏沉败焕妊同乙啥斑坊赋拆母破岛升都密棚酚迅丝傀雇幼午《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院(3)文本输出文本输出Ø 获取文本信息获取文本信息 在输出文本之前必须获取当前使用字体的有关信息,如当在输出文本之前必须获取当前使用字体的有关信息,如当前使用的字符高度等,以确定输出文本格式和下一行字符的前使用的字符高度等,以确定输出文本格式和下一行字符的输出位置通过调用函数输出位置通过调用函数GetTextMetrics可以获取当前使用可以获取当前使用的字体信息调用该函数时,系统将当前字体的信息拷贝到的字体信息调用该函数时,系统将当前字体的信息拷贝到一个一个TEXTMETRIC结构的变量中。
其形式为:结构的变量中其形式为: BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;Ø 文本输出文本输出 CDC类提供两个成员函数类提供两个成员函数ExtTextOut和和DrawText输出文输出文本经屁陡验搀妨予种薄吮幂聋腻乱蔼恼敏龋唐媒扒蔓怖邻边馏再轰速剖辖嘻《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 1))ExtTextOut函数用于根据选择的字体在指定的区域里函数用于根据选择的字体在指定的区域里输出文本有两种使用方法,分别定义如下:输出文本有两种使用方法,分别定义如下: virtual BOOL ExtTextOut( int x, int y, UINT nOptions, LPCRECT lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths ); BOOL ExtTextOut( int x, int y, UINT nOptions, LPCRECT lpRect, const CString& str, LPINT lpDxWidths ); 这两个函数的参数很相似,唯一的区别就是字符串的表这两个函数的参数很相似,唯一的区别就是字符串的表示方式。
第一个函数通过字符串指针和字符串长度来表达字示方式第一个函数通过字符串指针和字符串长度来表达字符串,而第二个函数通过符串,而第二个函数通过Cstring类来表示字符串类来表示字符串 参数参数x和和y表示字符串第一个字符的逻辑坐标表示字符串第一个字符的逻辑坐标 拒瑶爹演拍锭段硬火昧受术弱棘绚你市巧檬漏嘘狙脸诺堂而星诲柱扛儒衔《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院值值值值描述描述描述描述ETO_CLIPPED表示文本被剪贴到矩形中ETO_OPAQUE表示背景色将被填充到矩形中 参数参数nOptions表示矩形类型取值如表所示表示矩形类型。
取值如表所示 参数参数lpRect表示矩形大小,此参数可以被设置为表示矩形大小,此参数可以被设置为NULL 参数参数lpDxWidths指向一个整数数组,表示字符串中相指向一个整数数组,表示字符串中相邻字符的间距如果该参数被设置为邻字符的间距如果该参数被设置为NULL,那么系统在输,那么系统在输出文本时将采用默认间距出文本时将采用默认间距 下面举一个简单的例子来说明下面举一个简单的例子来说明DrawText函数的使用函数的使用在在EVC环境下新建一个单文档的应用程序在环境下新建一个单文档的应用程序在View类的类的OnPaint函数中填写下面程序代码函数中填写下面程序代码姨肋犹孙科鹏画氯惊劳幼痈蛤略驳茅最庶象礁示迫忧溜蔓友伎然漂垄隘伟《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CEPhotoView::OnPaint() { CPaintDC dc(this); // device context for paintingCString str;str="Welcome to using EVC!";int nWidths[9]={10,20,30,40,50,60,70,80,90};CRect rect(10,100,200,200);dc.ExtTextOut(100,100,ETO_CLIPPED,rect,str,nWidths);}程序运行结果如图所示,程序运行结果如图所示,ExtTextOut运行结果运行结果允尤眯赏委兄蓖眷鳞勃键芜好儡辆貉排氖模军缴桶膜憨限悄赤样史东楚彼《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 2)) DrawText函数用于输出格式化的文本。
使用函数用于输出格式化的文本使用DrawText函数可以将字符串中的制表符格式化成相应的空函数可以将字符串中的制表符格式化成相应的空格,也可以使文本在指定的区域里左对齐、右对齐或居中对格,也可以使文本在指定的区域里左对齐、右对齐或居中对齐输出,还可以将文本截成几行输出以适合显示区域齐输出,还可以将文本截成几行输出以适合显示区域DrawText函数也有两种使用方法,分别定于如下:函数也有两种使用方法,分别定于如下: virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat ); int DrawText( const CString& str, LPRECT lpRect, UINT nFormat ); 同样的,这两个函数也非常类似,唯一的区别就是字符同样的,这两个函数也非常类似,唯一的区别就是字符串的表示方法第一个函数通过字符串指针和字符串长度来串的表示方法。
第一个函数通过字符串指针和字符串长度来表达字符串,而第二个函数通过表达字符串,而第二个函数通过Cstring类来表示字符串类来表示字符串参数参数lpRect指向指向RECT结构指针,定义了文本的矩形形式,结构指针,定义了文本的矩形形式,DrawText函数使用这个矩形来编排所要显示的文本格式函数使用这个矩形来编排所要显示的文本格式参数参数nFormat表示文本显示标志,它决定了文本如何被放置表示文本显示标志,它决定了文本如何被放置在矩形中在矩形中约败著黄邯熙官档淳殃腕馏普位曳永考憾佰叼静袋赠台厨瓣倒蹋旬城丁牛《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院下面举一个简单的例子来说明下面举一个简单的例子来说明DrawText函数的使用。
在函数的使用在EVC环境下新建一个单文档的应用程序在环境下新建一个单文档的应用程序在View类的类的OnPaint函数中填写下面程序代码函数中填写下面程序代码void CEPhotoView::OnPaint() {CPaintDC dc(this); // device context for paintingCString str;str="Welcome to use EVC!"; CRect rect(10,100,200,200);pDC->DrawText(str,rect,DT_CENTER|DT_NOCLIP);}干镍谨肝服烙翁众厌辐供翻品矿配寺施挝陵桶鸵犬巡耗吠仆匈檄鼓京趴仗《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院程序运行结果如图所示,程序运行结果如图所示,DrawText运行结果运行结果姬舆涛鼎眨搞盲荒筑帅荡纽慧功肋绕钱验假殊佳抨卡沙除丛沈极念京公苫《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院(3)创建自定义字体创建自定义字体 如果系统提供的字体不能满足应用程序的需要,可以调用如果系统提供的字体不能满足应用程序的需要,可以调用函数函数CreateFont创建自定义字体。
创建自定义字体 BOOL CreateFontBOOL CreateFont ( int nHeight, // ( int nHeight, //字体高度,为字体高度,为字体高度,为字体高度,为0 0,则采用缺省值,则采用缺省值,则采用缺省值,则采用缺省值 int nWidth, // int nWidth, //字体宽度,为字体宽度,为字体宽度,为字体宽度,为0 0,则系统根据高宽比选最佳值,则系统根据高宽比选最佳值,则系统根据高宽比选最佳值,则系统根据高宽比选最佳值 int nEscapement,// int nEscapement,//设置文本输出的字符串走向,为设置文本输出的字符串走向,为设置文本输出的字符串走向,为设置文本输出的字符串走向,为0 0则为水平方向则为水平方向则为水平方向则为水平方向 int nOrientation, // int nOrientation, //设置文本输出时每一个字符的旋转角度设置文本输出时每一个字符的旋转角度设置文本输出时每一个字符的旋转角度设置文本输出时每一个字符的旋转角度 int nWeight, // int nWeight, //字体粗细度,取值范围为字体粗细度,取值范围为字体粗细度,取值范围为字体粗细度,取值范围为0~10000~1000 BYTE bItalic, // BYTE bItalic, //如果要求字体倾斜,则取非零如果要求字体倾斜,则取非零如果要求字体倾斜,则取非零如果要求字体倾斜,则取非零 BYTE bUnderline, // BYTE bUnderline, //如果要求下划线,则取非零如果要求下划线,则取非零如果要求下划线,则取非零如果要求下划线,则取非零 BYTE cStrikeOut, // BYTE cStrikeOut, //如果要求中划线,则取非零如果要求中划线,则取非零如果要求中划线,则取非零如果要求中划线,则取非零 BYTE nCharSet, // BYTE nCharSet, //字符所属字符集字符所属字符集字符所属字符集字符所属字符集 BYTE nOutPrecision, // BYTE nOutPrecision, //输出精度,一般取默认值输出精度,一般取默认值输出精度,一般取默认值输出精度,一般取默认值OUT_DEFAULT_PRECISOUT_DEFAULT_PRECIS BYTE nClipPrecision, // BYTE nClipPrecision, //裁剪精度,一般取默认值裁剪精度,一般取默认值裁剪精度,一般取默认值裁剪精度,一般取默认值CHIP_DEFAULT_PRECISCHIP_DEFAULT_PRECIS BYTE nQuality, // BYTE nQuality, //输出质量,一般取默认值输出质量,一般取默认值输出质量,一般取默认值输出质量,一般取默认值DEFAULT_QUALITY DEFAULT_QUALITY BYTE nPitchAndFamily, // BYTE nPitchAndFamily, //字体的间距及字体的系列字体的间距及字体的系列字体的间距及字体的系列字体的间距及字体的系列 LPCTSTR lpszFacename );// LPCTSTR lpszFacename );//字体名字体名字体名字体名漓盗秆裁烬诬疏实芝稚脓毋袖何棺鲁庸举纸子早皋瘁凌动床荡屠比畔贺电《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院5、屏幕绘图示例、屏幕绘图示例 以电子相册为例,介绍上述绘图函数的综合应用。
在以电子相册为例,介绍上述绘图函数的综合应用在电子相册界面中,主要分为三块,按钮操作区、当前所选电子相册界面中,主要分为三块,按钮操作区、当前所选图片显示区和所有图片显示区效果如图所示图片显示区和所有图片显示区效果如图所示闹颓喀亨财碾耀拳晃建禄策模朴蜗伎韧涤眨开邮存铁明衅戈害环抹勇缅灾《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院八、窗口、控件和对话框八、窗口、控件和对话框 到目前到目前为为止,我止,我们们在桌面版在桌面版Windows上所上所见见到的到的绝绝大大多数多数应应用程序都是基于窗口的,用程序都是基于窗口的,对对移移动设备动设备来来说说,窗口不是,窗口不是必需的甚至某些移必需的甚至某些移动设备动设备根本没有可根本没有可视视化界面,但是微化界面,但是微软软在在Windows CE上也提供了和桌面版上也提供了和桌面版Windows类类似的的窗口、似的的窗口、控件和控件和对话对话框,以方便用框,以方便用户户使用,它使用,它们们的使用方式与桌面版的使用方式与桌面版Windows大同小异。
本章介大同小异本章介绍绍了了Win CE中子窗口、常用控中子窗口、常用控件及件及对话对话框的使用,最后以框的使用,最后以为电为电子相册的使用界面上添加按子相册的使用界面上添加按钮钮控件并且控件并且为为按按钮载钮载入位入位图为图为例演示了控件的使用方法例演示了控件的使用方法巢赌拽犯炊发犊种泡兔灰舱敷榜耽劝旁裳汐真更胜液吵蠢叙仔徽蹿帆怖穿《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院1、子窗口、子窗口 每一个窗口都是通过父每一个窗口都是通过父/子关系方案连接在一起的应用子关系方案连接在一起的应用程序创建一个没有父窗口的子窗口,称作程序创建一个没有父窗口的子窗口,称作“顶级窗口顶级窗口”。
该窗该窗口可能(也可能不包含)窗口,称作口可能(也可能不包含)窗口,称作“子窗口子窗口”子窗口被局子窗口被局限在父窗口中这就是说,子窗口超过父窗口边缘的部分将限在父窗口中这就是说,子窗口超过父窗口边缘的部分将不能显示当子窗口的父窗口被破坏时,他们将自动的被破不能显示当子窗口的父窗口被破坏时,他们将自动的被破坏同时,当父窗口移动时,它的子窗口将随之移动同时,当父窗口移动时,它的子窗口将随之移动 子窗口也能通过标识为顶级窗口可以使用子窗口也能通过标识为顶级窗口可以使用CreateWindow或者或者CreateWindowEX函数来创建它们,每一函数来创建它们,每一个窗口函数都有窗口过程来处理与其顶级窗口相同的消息,个窗口函数都有窗口过程来处理与其顶级窗口相同的消息,并且每一个窗口都能包括它自己的子窗口为了创建一个子并且每一个窗口都能包括它自己的子窗口为了创建一个子窗口,可以使在窗口,可以使在CreateWindow或或CreateWindowEX函数的函数的dwStyle参数中使用参数中使用WS_CHILD窗口样式窗口样式桑蜜适仙听毒窑索蓄挽哥二龚蜡灶梭易鲤纤泥拍怠魁栓展级蔷域椅矩避孽《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、常用控件、常用控件 控件是一些行为标准化了的窗口,一般用于对话框或控件是一些行为标准化了的窗口,一般用于对话框或其他窗口中充当与用户交互的元素。
在其他窗口中充当与用户交互的元素在EVC中可用的控件中可用的控件分为以下三类分为以下三类1))Windows标准控件标准控件 Windows标准控件由标准控件由Windows操作系统提供,在操作系统提供,在WindowsCE中的中的Windows标准控件略有改变所有控件标准控件略有改变所有控件对象都是可编写的,可以使用对象都是可编写的,可以使用EVC提供的对话框编辑器把提供的对话框编辑器把他们添加到对话框中他们添加到对话框中Microsoft 基础类库(基础类库(MFC)提供)提供了封装这些控件的类了封装这些控件的类换禄瑞盗鸡侯券裙靠罐奶辉擞谆厨肾曳酞徘篓碟沼拨恒耀镐狂匡遵迁茵好《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)通用控件)通用控件 随着随着Microsoft Windows操作系统的成熟,操作系统的成熟,Windows提供的基本控件对用户所要求的复杂用户界面来说显然已经提供的基本控件对用户所要求的复杂用户界面来说显然已经不够用了。
因此,不够用了因此,Microsoft 为他们的内部应用程序开发了为他们的内部应用程序开发了一系列的附加控件,称为通用控件,随后让程序开发人员使一系列的附加控件,称为通用控件,随后让程序开发人员使用包含控件的动态链接库通用控件库和用包含控件的动态链接库通用控件库和WinCE操作系统捆操作系统捆绑在一起绑在一起 因此,因此,Microsoft 为他们的内部应用程序开发了一系列为他们的内部应用程序开发了一系列的附加控件,称为通用控件的附加控件,称为通用控件 3)其他)其他MFC控件控件 除了除了Windows标准控件和通用控件外,来源于第三方软标准控件和通用控件外,来源于第三方软件开发商的优秀件开发商的优秀MFC控件类这些类库以源代码的方式提供,控件类这些类库以源代码的方式提供,具有较高的实用价值具有较高的实用价值 下面就标准控件和通用控件做详细的介绍下面就标准控件和通用控件做详细的介绍懒峙烈妄爷胖喷幂换咙枉蘑因篡心富苏淬打毫康曳柬几历县兰上养淖廓段《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院ØØ 静态控件静态控件静态控件静态控件 静态控件一般用来显示静态的文本、图标、位图或图元静态控件一般用来显示静态的文本、图标、位图或图元静态控件一般用来显示静态的文本、图标、位图或图元静态控件一般用来显示静态的文本、图标、位图或图元文件,它不用来接受用户的输入,也很少用来显示输出,而文件,它不用来接受用户的输入,也很少用来显示输出,而文件,它不用来接受用户的输入,也很少用来显示输出,而文件,它不用来接受用户的输入,也很少用来显示输出,而更多情况下用作那些没有固定的标题文本属性的控件(如文更多情况下用作那些没有固定的标题文本属性的控件(如文更多情况下用作那些没有固定的标题文本属性的控件(如文更多情况下用作那些没有固定的标题文本属性的控件(如文本编辑控件、列表框等)的标签,或用作控件的分组,或者本编辑控件、列表框等)的标签,或用作控件的分组,或者本编辑控件、列表框等)的标签,或用作控件的分组,或者本编辑控件、列表框等)的标签,或用作控件的分组,或者用来显示一些提示性文本。
用来显示一些提示性文本用来显示一些提示性文本用来显示一些提示性文本崭尹呻湃癌切埠衰岂蛤勤移在冶结院裁户绽融滥凭汰琳雇爸蛹岳就玻悦沉《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院选项选项描述描述Align text控制静态文本控件中文本的对齐方式可能的取值有控制静态文本控件中文本的对齐方式可能的取值有Right右对齐),右对齐),Left〔左对齐),〔左对齐),Center(居中),当(居中),当No wrap选项选中时,这个选项设选项选中时,这个选项设置为置为Left,它的默认值为它的默认值为LeftCenter vertically静态文本控件中文本在垂直方向上居中。
它的类型是布尔型,默认值是静态文本控件中文本在垂直方向上居中它的类型是布尔型,默认值是FALSE.No prefix禁止文本中的禁止文本中的“&&”解释为它后面的字符有一个下划线,而直接将它作为解释为它后面的字符有一个下划线,而直接将它作为文本的一部分进行显示文本的一部分进行显示No prefix选项经常在显示包含选项经常在显示包含“&&”的文件名或的文件名或字符串中用到字符串中用到No wrap前提条件是文本必须是左对齐的选中此选项时前提条件是文本必须是左对齐的选中此选项时Tabs是可扩展的,但是是可扩展的,但是不能保护单词的完整性在行的末尾扩展处的部分将被剪切掉它的类不能保护单词的完整性在行的末尾扩展处的部分将被剪切掉它的类型是布尔型,默认值是型是布尔型,默认值是FALSESimple此选项将禁用此选项将禁用No wrap和和Align text选项在静态文本控件中的文本如果有选项在静态文本控件中的文本如果有此属性,就不保护单词的完整性,且不保证不被剪切它的类型是布尔此属性,就不保护单词的完整性,且不保证不被剪切它的类型是布尔型,默认值是型,默认值是FALSENotify此选项表示当控件被选中或双击时,通知父窗口。
此选项的类型是布尔此选项表示当控件被选中或双击时,通知父窗口此选项的类型是布尔型,默认值是型,默认值是FALSESunken此选项表示围绕静态文本控件的文本,建立一个凹下的边框它的类型此选项表示围绕静态文本控件的文本,建立一个凹下的边框它的类型是布尔型,默认值是是布尔型,默认值是FALSEBorder此选项表示围绕静态文本控件的文本,建立一个边框它的类型是布尔此选项表示围绕静态文本控件的文本,建立一个边框它的类型是布尔型,默认值是型,默认值是FALSE静态控件的属性如表所示静态控件的属性如表所示毒零棕炊嘿鲁闭碎肪阵事块满颂褐衰欢蹬虽期娟蓟雁豁霞奄来暑者海辙粥《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø 按钮控件按钮控件按钮控件按钮控件 在基于对话框的控件中,按钮控件是最常用的控件之一在基于对话框的控件中,按钮控件是最常用的控件之一在基于对话框的控件中,按钮控件是最常用的控件之一在基于对话框的控件中,按钮控件是最常用的控件之一 。
按钮控件的一般属性如表所示按钮控件的一般属性如表所示按钮控件的一般属性如表所示按钮控件的一般属性如表所示 属性属性描述描述ID在头文件中定义的符号在头文件中定义的符号Caption控件标签文本如果在标题中的某个字母前加上了控件标签文本如果在标题中的某个字母前加上了“&”,,该字母再显示时将被加上下划线,相应的该字母再显示时将被加上下划线,相应的“&”不显示在不显示在运行直接按下加有下划线的字母同单击按钮具有相同的运行直接按下加有下划线的字母同单击按钮具有相同的效果效果Visible决定当前应用程序第一次运行时控件是否可见决定当前应用程序第一次运行时控件是否可见Disable决定当前对话框创建时是否显示为禁止状态决定当前对话框创建时是否显示为禁止状态Group指定一组空间中的第一个控件在同组控件中用户可以指定一组空间中的第一个控件在同组控件中用户可以使用箭头键在控件之间移动,以使用箭头键在控件之间移动,以TapOrder为顺序,在该控为顺序,在该控件之后的所有该属性值为件之后的所有该属性值为False的控件将被视为同一组控的控件将被视为同一组控件,直到遇到件,直到遇到Group属性标记为属性标记为True的控件为止的控件为止Tabstop决定用户是否可以使用决定用户是否可以使用Tab键来定位到控件键来定位到控件郧皂谰惩卫聂鲍真鼠她桐嫂瓶拢掠算熊旧刑捞改药穗享鸵茎贮疹响憨谣暗《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院按钮控件的使用技巧按钮控件的使用技巧 (1) 在运行过程中改变按钮的标题文本:有时需要在程序的运行过程中在运行过程中改变按钮的标题文本:有时需要在程序的运行过程中改变按钮的标题文本。
改变按钮的标题文本 Void SetDlgItemText((int nID,,LPCTSTR lpszString);); (2)使按钮获得输入焦点:具有输入焦点的窗口将会得到所有的输入消使按钮获得输入焦点:具有输入焦点的窗口将会得到所有的输入消息可以通过类息可以通过类CWnd的成员函数的成员函数GetFocus来使对话框中的控件获得输来使对话框中的控件获得输入焦点 GetDlgItem( int nID )->SetFocus();或或 M_bnClickedhere. SetFocus(); (3)使按钮无效或有效首先调用对话框控件的成员函数使按钮无效或有效首先调用对话框控件的成员函数GetDlgItem(该成员函数在类(该成员函数在类CWnd),该成员函数获得一个指向对话框中的控件),该成员函数获得一个指向对话框中的控件的的CWnd指针,然后再通过该指针调用控件对象的成员函数指针,然后再通过该指针调用控件对象的成员函数EnableWindow该成员函数允许或禁止调用它的。
该成员函数允许或禁止调用它的CWnd对象对应窗口对象对应窗口 GetDlgItem( int nID )-> EnableWindow ((FALSE););薯财脱沾么温褂篱泡鉴奋宛嗽伞附劝据馏湍泊钳畦肛歉肯频桐雹车坛吟装《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院ØØ 编辑控件编辑控件编辑控件编辑控件 静态文本控件只能用来显示文本,而不可以用来输入文本静态文本控件只能用来显示文本,而不可以用来输入文本静态文本控件只能用来显示文本,而不可以用来输入文本。
静态文本控件只能用来显示文本,而不可以用来输入文本如果需要提供输入文本的功能应该使用文本编辑控件如果需要提供输入文本的功能应该使用文本编辑控件如果需要提供输入文本的功能应该使用文本编辑控件如果需要提供输入文本的功能应该使用文本编辑控件 属性属性描述描述Multiline创建一个多行文本编辑控件当一个多行文本编辑控件具有输入焦点创建一个多行文本编辑控件当一个多行文本编辑控件具有输入焦点时,如果用户按下了回车键,以默认情况下的行为是选择对话框中的时,如果用户按下了回车键,以默认情况下的行为是选择对话框中的默认按钮,而不是向文本编辑控件中加入新行默认按钮,而不是向文本编辑控件中加入新行Auto HScroll当用户输入的字符超过了编辑框的右边界时自动水平向右滚动文本当用户输入的字符超过了编辑框的右边界时自动水平向右滚动文本Vertical scroll为多行控件提供垂直滚动条为多行控件提供垂直滚动条Auto VScroll在多行控件中当用户在最后一行按下回车键时自动向上滚动文本在多行控件中当用户在最后一行按下回车键时自动向上滚动文本Horizontal scroll为多行控件提供垂直滚动条为多行控件提供垂直滚动条Password当用户键入时将所有字符显示为当用户键入时将所有字符显示为*。
该属性对多行控件不可用该属性对多行控件不可用Read-Only防止用户编辑或更改编辑框中的文本防止用户编辑或更改编辑框中的文本Lowercase将用户在编辑框中输入的字符转换为小写将用户在编辑框中输入的字符转换为小写Uppercase将用户在编辑框中输入的字符转换为大写将用户在编辑框中输入的字符转换为大写Want Return指定当用户在多行编辑控件中按下回车键时插入一个回车符,否则用指定当用户在多行编辑控件中按下回车键时插入一个回车符,否则用户按下回车键时将被认为是选择了对话框中的默认命令按钮该样式户按下回车键时将被认为是选择了对话框中的默认命令按钮该样式对于单行编辑控件没有任何影响对于单行编辑控件没有任何影响勤字骋悲譬剑雏瑟制茹推篮壬涎鼠洁杜敦渠厄缕赊廷宅期雇技链峰综鸵免《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院编辑框的基本操作方法:编辑框的基本操作方法: 设定编辑控件中所选定的字符范围。
该功能可通过如下的设定编辑控件中所选定的字符范围该功能可通过如下的函数实现:函数实现: SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE ); 使用特定的文本来替换编辑控件中的当前选择,可通过函使用特定的文本来替换编辑控件中的当前选择,可通过函数数ReplaceSel实现:实现: ReplaceSel( LPCTSTR lpszNewText, BOOL bCanUndo = FALSE );瓦裔啸狞规毫丸呢绵咋沈掘蛀框滋调扎渊蹈佳春棺报率盖鼎巧搀件宛瘦昼《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院ØØ单选按钮单选按钮单选按钮单选按钮 单选按钮用来表示一系列的互斥选项,其允许用户从许多单选按钮用来表示一系列的互斥选项,其允许用户从许多单选按钮用来表示一系列的互斥选项,其允许用户从许多单选按钮用来表示一系列的互斥选项,其允许用户从许多选择中作出选择。
单选按钮通常被组合在一组中,在同一时选择中作出选择单选按钮通常被组合在一组中,在同一时选择中作出选择单选按钮通常被组合在一组中,在同一时选择中作出选择单选按钮通常被组合在一组中,在同一时间只能选择其中的一个间只能选择其中的一个间只能选择其中的一个间只能选择其中的一个ØØ复选按钮复选按钮复选按钮复选按钮 复选框与单选按钮十分相像,不同之处在于同一组控件复选框与单选按钮十分相像,不同之处在于同一组控件复选框与单选按钮十分相像,不同之处在于同一组控件复选框与单选按钮十分相像,不同之处在于同一组控件中,通常使用复选框来代表多重选择,及选项不是互斥的中,通常使用复选框来代表多重选择,及选项不是互斥的中,通常使用复选框来代表多重选择,及选项不是互斥的中,通常使用复选框来代表多重选择,及选项不是互斥的从外观上看,复选框所使用的选中标记是一个方框和里面的从外观上看,复选框所使用的选中标记是一个方框和里面的从外观上看,复选框所使用的选中标记是一个方框和里面的从外观上看,复选框所使用的选中标记是一个方框和里面的小叉,而不是单选按钮所用的小圆圈和里面的小点小叉,而不是单选按钮所用的小圆圈和里面的小点。
小叉,而不是单选按钮所用的小圆圈和里面的小点小叉,而不是单选按钮所用的小圆圈和里面的小点 ((((1 1)))) 设置某一复选框的选中状态:可通过成员函数设置某一复选框的选中状态:可通过成员函数设置某一复选框的选中状态:可通过成员函数设置某一复选框的选中状态:可通过成员函数SetCheckSetCheck来实现该功能来实现该功能来实现该功能来实现该功能 GetDlgItem(IDC_OFTEN)-> SetCheck(1);GetDlgItem(IDC_OFTEN)-> SetCheck(1); (2) (2) 得到复选框的选中状态得到复选框的选中状态得到复选框的选中状态得到复选框的选中状态 GetCheck GetCheck返回单选钮的选中状态该函数的函数原型是返回单选钮的选中状态该函数的函数原型是返回单选钮的选中状态该函数的函数原型是返回单选钮的选中状态该函数的函数原型是 int GetCheck( ) const; int GetCheck( ) const;壤岭沂粮救章申洋您守姬轿樱委耐彝嘉肘赊情主税免挂恶解酌劣苞宇始汪《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 单选按钮对话框单选按钮对话框 复选按钮控件复选按钮控件仆舶挟桂爵绕景撞细综蛋明采蒜舞脆讽龋骚蹋任姜危讹帚叭绩纹篆茨劣迟《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院Ø列表框控件列表框控件 列表框控件将显示文本项目的列表,这样用户就可以在列列表框控件将显示文本项目的列表,这样用户就可以在列表选择一个或多个项目。
表选择一个或多个项目 Ø组合框控件组合框控件 组合框可以看作是一个编辑框或静态文本框与一个列表框组合框可以看作是一个编辑框或静态文本框与一个列表框的组合组合框是一个有效利用空间的控件,它能从具有许的组合组合框是一个有效利用空间的控件,它能从具有许多项目的列表中选择一个项目,当前选定的项将显示在组合多项目的列表中选择一个项目,当前选定的项将显示在组合框的编辑框或静态文本框中框的编辑框或静态文本框中 Ø滚动条控件滚动条控件 滚动条控件通常用来进行如定位之类的操作滚动条控件滚动条控件通常用来进行如定位之类的操作滚动条控件分为垂直和水平滚动条两种分为垂直和水平滚动条两种Ø月历控件月历控件 月历控件提供了一个方便的月份查看日历,用户可以用来月历控件提供了一个方便的月份查看日历,用户可以用来查看任何年份、月份、星期、或天数查看任何年份、月份、星期、或天数嚣刚汽棋披鞭涯叮厚庭歪楷泊毙掷签垮柬掩湖都恿豹期专醋肖要譬牧榨尾《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3、对话框、对话框 对话框是对话框是对话框是对话框是WinCEWinCE开发中一种常用的输入、输出手段。
开发中一种常用的输入、输出手段开发中一种常用的输入、输出手段开发中一种常用的输入、输出手段EVCEVC提供了专门的对话框编辑工具,通过编辑工具用户可以方便提供了专门的对话框编辑工具,通过编辑工具用户可以方便提供了专门的对话框编辑工具,通过编辑工具用户可以方便提供了专门的对话框编辑工具,通过编辑工具用户可以方便的添加各种控件到对话框,利用的添加各种控件到对话框,利用的添加各种控件到对话框,利用的添加各种控件到对话框,利用ClassWizardClassWizard可以方便的生可以方便的生可以方便的生可以方便的生成新的对话框类和消息映射下面介绍对话框的编辑步骤成新的对话框类和消息映射下面介绍对话框的编辑步骤成新的对话框类和消息映射下面介绍对话框的编辑步骤成新的对话框类和消息映射下面介绍对话框的编辑步骤1 1)右键单击资源列表在弹出菜单中选择)右键单击资源列表在弹出菜单中选择)右键单击资源列表在弹出菜单中选择)右键单击资源列表在弹出菜单中选择“ “插入对话框插入对话框插入对话框插入对话框” ”命命命命令2 2)双击打开该对话框进行编辑,在屏幕上有一个控件板;)双击打开该对话框进行编辑,在屏幕上有一个控件板;)双击打开该对话框进行编辑,在屏幕上有一个控件板;)双击打开该对话框进行编辑,在屏幕上有一个控件板;在编辑过程中,可以拖动工具条中的任意控件到对话框上。
在编辑过程中,可以拖动工具条中的任意控件到对话框上在编辑过程中,可以拖动工具条中的任意控件到对话框上在编辑过程中,可以拖动工具条中的任意控件到对话框上3 3)将需要的控件添加到对话框上之后,就可以修改对话)将需要的控件添加到对话框上之后,就可以修改对话)将需要的控件添加到对话框上之后,就可以修改对话)将需要的控件添加到对话框上之后,就可以修改对话框和控件的属性;属性修改通过修改每个控件的属性窗口框和控件的属性;属性修改通过修改每个控件的属性窗口框和控件的属性;属性修改通过修改每个控件的属性窗口框和控件的属性;属性修改通过修改每个控件的属性窗口的内容来实现,修改的范围包括:字体、外观和控件的的内容来实现,修改的范围包括:字体、外观和控件的的内容来实现,修改的范围包括:字体、外观和控件的的内容来实现,修改的范围包括:字体、外观和控件的IDID等4 4)控件属性修改完成后运行)控件属性修改完成后运行)控件属性修改完成后运行)控件属性修改完成后运行Ctrl+TCtrl+T进行测试进行测试进行测试进行测试 岿韩怖忿清铀悉产噬尿哈宦业烘戴搏拟知阉呸铀拽登加罢诵捧帜术桂程凄《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院在对话框资源编辑完成后,需要为对话框产生新的类在对话框资源编辑完成后,需要为对话框产生新的类ClassWizard可以完成大部分的工作,开发者只需要添加几可以完成大部分的工作,开发者只需要添加几个参数就可以了。
双击编辑好的对话框,然后系统会提示是个参数就可以了双击编辑好的对话框,然后系统会提示是否添加新的对话框,选择否添加新的对话框,选择“是是”并在接下来的对话框中输入类并在接下来的对话框中输入类名即可 对于模态对话框使用对于模态对话框使用DoModal()产生,非模态对话框()产生,非模态对话框使用使用Create()产生相关代码如下:()产生相关代码如下: //产生非模态对话框产生非模态对话框 CTestDlg *dlg=new CTestDlg;; dlg->Create(IDD_TEST_DLG); dlg->ShowWindow(SW_SHOW); CTestDlg dlg; int iRet=dlg.DoModal();孰诈颤创域祖按杆凿驮刚欺拓龙封粕泳缆碌陇孪冗圆咎穗彰廷芦妇疚暖俺《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院对话框的数据交换和数据检查对话框的数据交换和数据检查 MFC提供两种方法在对话框中进行数据交换和数据检查,数据交换提供两种方法在对话框中进行数据交换和数据检查,数据交换和数据检查的思想是将某一变量和对话框中的某个子窗口进行关联,然和数据检查的思想是将某一变量和对话框中的某个子窗口进行关联,然后通过调用:后通过调用: BOOL UpdateData(BOOL bSaveAndValidate = TRUE) 来指示来指示MFC将变量中的数据放入子窗口还是将子窗口中的数据取到将变量中的数据放入子窗口还是将子窗口中的数据取到变量中并进行合法性检查。
在进行数据交换时一个子窗口可以和两种类变量中并进行合法性检查在进行数据交换时一个子窗口可以和两种类型的变量相关联,一种是控件(型的变量相关联,一种是控件(control)对象,比如说按钮子窗口可以)对象,比如说按钮子窗口可以和一个和一个CButton对象相关联,这种情况下可以通过该对象直接控制子窗口,对象相关联,这种情况下可以通过该对象直接控制子窗口,而不需要使用而不需要使用GetDlgItem(ID_BUTTON)来得到窗口指针;另一种是内部来得到窗口指针;另一种是内部对象,比如说输入框可以和一个对象,比如说输入框可以和一个CString对象关联,也可以和一个对象关联,也可以和一个UINT类型变量关联,这种情况下可以直接设置或获取窗口中的输入内容类型变量关联,这种情况下可以直接设置或获取窗口中的输入内容 而数据检查是在一个子窗口和一个内容对象相关联时在存取内容时而数据检查是在一个子窗口和一个内容对象相关联时在存取内容时对内容进行合法性检查,比如当一个输入框和一个对内容进行合法性检查,比如当一个输入框和一个CString对象关联时,对象关联时,可以设置检查可以设置检查CString的对象的最长或最小长度,当输入框和一个的对象的最长或最小长度,当输入框和一个UINT变量相关联时可以设置检查变量相关联时可以设置检查UINT变量的最大或最小值。
在变量的最大或最小值在BOOL UpdateData( BOOL bSaveAndValidate = TRUE )被调用后,合法性检查会自动运行,被调用后,合法性检查会自动运行,如果无法通过检查如果无法通过检查MFC会弹出消息对话框进行提示,并返回会弹出消息对话框进行提示,并返回FALSE荚俞像纵衡冲睁苏耕呵统挑医弹引眉蒙久监暑泄搐凿肪入鹤淤联隐严填泻《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4、应用实例、应用实例 通过一个电子相册应用程序的制作,介绍控件具体使用方法通过一个电子相册应用程序的制作,介绍控件具体使用方法电子相册中电子相册中button控件主要用于控制电子相册的播放功能,包括控件主要用于控制电子相册的播放功能,包括自动播放,第一页、最后一页、前一页、后一页以及分页显示的自动播放,第一页、最后一页、前一页、后一页以及分页显示的前一页和下一页等。
前一页和下一页等1)添加)添加button控件控件 打开上一节建立的工程,在资源界面中,双击打开上一节建立的工程,在资源界面中,双击Dialog资源,进资源,进入资源编辑界面单击入资源编辑界面单击button控件,在对话框中调整至适当的大控件,在对话框中调整至适当的大小,并编辑小,并编辑button属性胳剐爬褂皇俏尺之搭浓迢荔赘慕冶除嘛勋锣位佩凰胞安贬觉绘偶烂暮轩爽《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 资源编辑界面资源编辑界面劫备疡仕补毗鳃尧嚎话写啼挥酞迪纶卑雌甄颈镑癣冈仕醚拔恃辑泳旨抵颊《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院IDIDCaptionCaptionIDFIRST|
的形式显示出来 MFC中,默认的按钮控件是显示文字的,为了使电子中,默认的按钮控件是显示文字的,为了使电子相册更加美观,可以使用相册更加美观,可以使用CBitmapButton使按钮以图形化使按钮以图形化的形式显示出来的形式显示出来 类类CBitmapButton用于创建用位图而不是文本做标签用于创建用位图而不是文本做标签的按钮控件的按钮控件CBitmapButton对象最多可包括对象最多可包括4个位图,分个位图,分别代表按钮所处的不同状态:未按下(或正常)、按下(或别代表按钮所处的不同状态:未按下(或正常)、按下(或选中)、获得焦点和被禁止存取只有第一个位图是必须的,选中)、获得焦点和被禁止存取只有第一个位图是必须的,其它三个可以不提供其它三个可以不提供炽酣玫遁勺俘屡度妇凶虱铭盖集辱昌宪罗垛藤遍号篓矩徊兽森国咕咬寓彬《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院利用利用CBitmapButton类实现位图按钮的方法:类实现位图按钮的方法:((1)在资源编辑的时候选中按钮的)在资源编辑的时候选中按钮的 Owner draw 属性,不属性,不需要选择需要选择 Bitmap 属性,按钮右键属性,按钮右键-->Styles-->Owner draw,如图所示。
如图所示 button 属性设置属性设置牡奉孕盒堑朋要铆插疑辞睫垦礼艳摔团腋右书寨踩敲超唁氨蒂为以燎称戍《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((2)在资源视图中创建或导入位图,分别设置)在资源视图中创建或导入位图,分别设置ID为为IDB_BACKD、、IDB_BACKU、、 IDB_BITMAPDOWN、、IDB_BITMAPUP、、IDB_FIRSTD、、IDB_FIRSTU、、IDB_LASTD、、IDB_LASTU、、IDB_PLAYD、、IDB_PLAYU、、IDB_PRED、、IDB_PREU3)在程序中定义)在程序中定义CBitmapButton成员变量,修改成员变量,修改m_btnBitmap类型为类型为CBitmapButton。
CBitmapButtonm_up;CBitmapButtonm_down;CBitmapButtonm_last;CBitmapButtonm_first;CBitmapButtonm_back;CBitmapButtonm_previous;CBitmapButtonm_Play;((4)修改主对话框的)修改主对话框的OnInitDialog函数,添加代码函数,添加代码南低沟阂搏您诀玻良艾梢赢设坷彻艘矛元冠盂孪矗踌晰们蛛吭件三烟仰领《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院添加位图后的结果如图所示添加位图后的结果如图所示绘制位图绘制位图button后的结果后的结果笼露胞项琅森莉差吧裔霍碟絮酶紊险步全揭昭券傀影擎闸虑茬挠蜒阔略颤《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院((3)) 文件打开对话框的创建文件打开对话框的创建文件打开对话框主要用于加载图片。
可通过文件打开对话框文件打开对话框主要用于加载图片可通过文件打开对话框来完成此功能在选择图片来完成此功能在选择图片->加载路径菜单的消息相应的代加载路径菜单的消息相应的代码添加打开对话框后的结果如图所示添加打开对话框后的结果如图所示通过打开对话框加载图片的运行通过打开对话框加载图片的运行结果结果醛勃胡孟美箔漠厕艰兼置每惜侯搭拨城快澄曼披珍逝扁妈秀箍案晴疾诉窟《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院单击其中的任何一张图片就可以将其加载到相册中,加载后的结果如图所示虎暴胃骑涣浮陵是敝韭傲验拉噶痘或枪赁进盏伏吏逮许傣氮饥声坊僳钡省《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院九、综合示例九、综合示例在本节中,将介绍一种简单的电子相册的制作程序。
在本节中,将介绍一种简单的电子相册的制作程序根据需要,电子相册应该具有以下功能:根据需要,电子相册应该具有以下功能:1. 可以加载一张或者多张图片可以加载一张或者多张图片2. 图片加载完成后,可以逐个预览图片,也可以自图片加载完成后,可以逐个预览图片,也可以自 动播放相册中的所有图片动播放相册中的所有图片3. 在自动播放时配有优美的背景音乐在自动播放时配有优美的背景音乐绷啦浸搏僧顶赠嗜狡构党浦认娄咕俘既验欺陋绚掳邑案裙惠制茵像起拧铱《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院电子相册的功能结构如图所示电子相册的功能结构如图所示直拖臭意债廓推挞麓笼坝磅掐奏槽祁懂糕乙跺蕾田卒茨对靠企既娥摘援山《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 本程序旨在加强读者对本程序旨在加强读者对WINCE应用程序的理解,同时该应用程序的理解,同时该程序还有很多不完善的地方,读者可以在此基础上完善它。
程序还有很多不完善的地方,读者可以在此基础上完善它下面就让我们来看看这个电子相册的实现过程下面就让我们来看看这个电子相册的实现过程 1. 建立开发环境,定制内核,导出建立开发环境,定制内核,导出SDK,这个过程在前,这个过程在前三节已经详细介绍,在此就不多做说明三节已经详细介绍,在此就不多做说明 2. 建立新项目利用建立新项目利用EVC向导创建一个基于对话框的应向导创建一个基于对话框的应用程序,将项目名称设为用程序,将项目名称设为EPhoto,所有资源设置为中文,,所有资源设置为中文,编译环境设置为编译环境设置为POCKET PC 2003-Win 32((WCE emulator))Debug 3. 设计菜单电子相册程序的主菜单设计见设计菜单电子相册程序的主菜单设计见6.6节应用节应用示例 4. 把菜单栏添加到系统中需要注意的是,基于对话框把菜单栏添加到系统中需要注意的是,基于对话框的菜单栏显示需要用程序来实现添加菜单栏的显示程序如的菜单栏显示需要用程序来实现添加菜单栏的显示程序如下所示:下所示:曝肇贰耳层迫斜噪屹蒲垢杭殃拧钎泻智浩杏樊旧候减赛援菇乾簿捷稳冒尽《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院(1)定义变量。
在CEphotoDlg构造函数上面定义如下变量HWND hwndCB;#defineIDC_CMBBAR0x100(2)显示菜单栏在CEphotoDlg::OnInitDialog函数中添加如下代码:hwndCB = CommandBar_Create(AfxGetInstanceHandle(), GetSafeHwnd(), IDC_CMBBAR);CommandBar_InsertMenubar(hwndCB,AfxGetInstanceHandle(),IDR_MENU1, IDC_CMBBAR); //插入菜单栏CommandBar_Show(hwndCB, TRUE);//显示咏虑砸掷狼淀啄左墩成幸孙靳脖舞实补住脸财鄂颖追靳暑棍缠访熔颤蚂七《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 5. 绘制相册框架,这一功能的实现见绘制相册框架,这一功能的实现见6.7节屏幕绘图示节屏幕绘图示例。
例 6. 添加操作按钮,这一功能的实现见添加操作按钮,这一功能的实现见6.8节应用示例节应用示例 7. 图片显示,因为要动态的加载图片,所以在本程序中图片显示,因为要动态的加载图片,所以在本程序中使用第三方库使用第三方库VOImage类来实现图片的显示类来实现图片的显示 ((1)首先将)首先将VOImage.h,,VOImage.cpp,,IMGRENDR.H,,IMGDECMP.H,,IMGDECMP.DLL这几这几个文件添加到工程中个文件添加到工程中2)创建打开文件对话框设置打开图片文件类型,)创建打开文件对话框设置打开图片文件类型,如如“.jpg”或或“.bmp”利用ClassWizard为菜单为菜单“加载路径加载路径”添加方法添加方法OnElectpath(),用来实现图片的加载,具体实现,用来实现图片的加载,具体实现程序如下程序如下网五傈谬冕瑚裳雪痊您溺惮糙宽旦彰降力馁尼胶僚撕酞消纠悔叠羡薯轻哑《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CEphotoDlg::OnElectpath() {CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_EXPLORER|OFN_ENABLEHOOK| OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, _T("JPG文件(*.jpg)|*.jpg|ALL Files(*.*)|*.*||"),NULL);//创建打开文件窗口if(dlg.DoModal()==IDOK) { fname[i]=dlg.GetNextPathName(pos); //把打开的多个文件名赋值给fname数组i++;} Invalidate(FALSE);}汪侨畴洽软雀肩领蛹卑挖冲彩后浙齿溃申私褒玖掏遵胜否约枢虱旭睫匿蝉《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院(3)图片显示,在OnPaint函数里面实现图片的显示。
CVOImage image;image.Load(dc.m_hDC ,fname[0]);//下载图片image.Draw(dc.m_hDC,RectFrame.left,RectFrame.top,135,140);//显示图片for (j=0;j<=3;j++)//将选择的图片显示在所有图片显示区{image.Load(dc.m_hDC ,fname[j]);image.Draw(dc.m_hDC,rectmap[j].left,rectmap[j].top,50,45);UpdataPhotoPage(1,3);}厅鸭催簇互吓淤捅畏栓响租狙纂致罗喉危材昭卫摆踊勾当踊剥戴专召撕慎《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 8. 为按钮操作添加实现程序。
为了程序界面的美观,首为按钮操作添加实现程序为了程序界面的美观,首先使用位图按钮,改变按钮的外观,实现方法在先使用位图按钮,改变按钮的外观,实现方法在6.8节已经节已经详细介绍位图按钮添加完毕后就可以为按钮添加单击事件详细介绍位图按钮添加完毕后就可以为按钮添加单击事件了下面以查看前一张图片为例来说明怎样添加按钮单击事了下面以查看前一张图片为例来说明怎样添加按钮单击事件程序利用利用ClassWizard为按钮为按钮“下一页下一页”添加点击事件方法添加点击事件方法OnBack(),在,在OnBack()函数下添加如下代码:函数下添加如下代码:void CEphotoDlg::OnBack() { CDC *pDC; pDC=GetDC(); CVOImage image; if(m_curpage>=i)//如果当前图片为所加载图片中的最后一张,则弹出对话框提示{ AfxMessageBox(_T("当前最后一张"));}飘川雁磁疾剿夏咬洪剃贸苫孙炳量淹酞辨栋救蚕逐枢蒂跪仅起聊娘俊诗铸《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院else{image.Load((HDC)pDC->m_hDC,fname[m_curpage]);image.Draw((HDC)pDC>m_hDC,RectFrame.left,RectFrame.top,135,140); }}其他按钮的单击事件方法和查看下一张图片的方法相同,其他按钮的单击事件方法和查看下一张图片的方法相同,按照这个方法依次添加程序即可。
按照这个方法依次添加程序即可抉歪浆元阑听龟龋趟握镑择蔬咐狭嘻琵庙帐韩侄幕邓跺噶怀狡浊蒸编又鸡《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 9. 实现图片的自动播放图片的自动播放可以通过定时实现图片的自动播放图片的自动播放可以通过定时器来完成,点击播放按钮,每隔一定时间改变图片的显示,器来完成,点击播放按钮,每隔一定时间改变图片的显示,当加载的图片播放完后再回到第一张重新播放,再次点击播当加载的图片播放完后再回到第一张重新播放,再次点击播放按钮,则停止播放,图片显示为当前播放的那一张实现放按钮,则停止播放,图片显示为当前播放的那一张实现方法如下:方法如下:((1)添加变量,首先添加一个布尔型成员变量)添加变量,首先添加一个布尔型成员变量flagplay,,用来表示是否自动播放,初始化为用来表示是否自动播放,初始化为false。
2)在)在Windows Message Hander中添加中添加WM_TIMER消息,用来添加相应的定时器程序消息,用来添加相应的定时器程序3)为按钮)为按钮“播放播放”添加点击事件方法添加点击事件方法OnPlay()OnPlay()函数主要实现打开定时器和关闭定时器的功能,实现方法函数主要实现打开定时器和关闭定时器的功能,实现方法如下:如下: 溺路混澈忿顷儡檀南词仓拳唉谣乐钙允闻昨燎氦搬写熬讹肚麦苞悼狗榨役《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CEphotoDlg::OnPlay() {flagplay=!flagplay;if(flagplay){ SetTimer(1,1000,NULL); //当点击播放按钮时,打开定时器}else{KillTimer(1);//再次点击播放按钮时,关闭定时器}} 接下来在接下来在void CEphotoDlg::OnTimer(UINT nIDEvent)函数中添加代码就可以实现图片的自动播放了。
函数中添加代码就可以实现图片的自动播放了脸尹铱纲层发器届闭又漓栅另惯顺贸赌官渐溜戎界塔康浊改芳篙侯钮吃择《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 10. 添加背景音乐在图片自动播放时,要为其添加优添加背景音乐在图片自动播放时,要为其添加优美的背景音乐,可以达到图声并茂的效果具体实现方法如美的背景音乐,可以达到图声并茂的效果具体实现方法如下:下:((1)首先将一段格式为)首先将一段格式为“.wav”的音乐片段导入资源中资的音乐片段导入资源中资源的源的ID号为号为“IDR_WAVE1”2)添加播放和停止代码当打开定时器时,音乐响起,)添加播放和停止代码。
当打开定时器时,音乐响起,关闭定时器时,音乐停止,实现代码如下:关闭定时器时,音乐停止,实现代码如下:庚巡隋慢搐诛鲁绞粒史转斌顿狙钠围上陪挡藕值涵侥伐锚去余耀蛀抱菌娩《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院void CEphotoDlg::OnPlay() {flagplay=!flagplay;if(flagplay){ SetTimer(1,1000,NULL); //当点击播放按钮时,打开定时器 PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetInstanceHandle(),SND_RESOURCE|SND_ASYNC);//播放音乐 }else{KillTimer(1); //再次点击播放按钮时,关闭定时器PlaySound(NULL,NULL,SND_FILENAME); //停止音乐}}惑符瘦桓门宏阳抨澜鼻香符扇伪锻寓驮宜范匡厦莆括骇栏失鸳灾硕礁蝇尝《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 11. 将将EPhoto下载到开发下载到开发平台并运行。
平台并运行 ((1)把刚刚生成的)把刚刚生成的EPhoto的可执行文件复制到开发的可执行文件复制到开发平台的某个目录里面,同平台的某个目录里面,同时也把时也把IMGDECMP.DLL复制到该目录复制到该目录2)运行可执行文件运行可执行文件 至此,一个简单的电子至此,一个简单的电子相册就制作完成了,运行相册就制作完成了,运行效果如图所示效果如图所示霉奔豹遣猿热碘普滇析酗脆燃嘻迎锗辉桩秉笨释典孪窿书创颈皋赌舒杰浑《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院十、控制类应用实例十、控制类应用实例 嵌入式系统是和实际应用紧密相连的,它不仅包嵌入式系统是和实际应用紧密相连的,它不仅包括嵌入式软件,还包括与具体应用相关的硬件。
在括嵌入式软件,还包括与具体应用相关的硬件在模拟器中调试程序可以让你熟悉嵌入式软件的开发模拟器中调试程序可以让你熟悉嵌入式软件的开发流程,但如果系统需要操作某些特定的硬件,这时流程,但如果系统需要操作某些特定的硬件,这时你就需要为硬件电路写相关的程序并且进行调试,你就需要为硬件电路写相关的程序并且进行调试,如驱动程序,或者是操作某个特定硬件的代码,这如驱动程序,或者是操作某个特定硬件的代码,这个时候,模拟器就无能为力了而且,在实际应用个时候,模拟器就无能为力了而且,在实际应用中,应用程序往往都是与外围硬件高度相关的,因中,应用程序往往都是与外围硬件高度相关的,因此,在学习嵌入式系统的应用开发时,我们应该着此,在学习嵌入式系统的应用开发时,我们应该着重学习嵌入式系统与硬件相关的应用的开发在本重学习嵌入式系统与硬件相关的应用的开发在本节中,我们将会介绍一个这样的与硬件高度相关的节中,我们将会介绍一个这样的与硬件高度相关的应用程序的开发应用程序的开发葫蒂糖疟缮估伺脯诣滑辨吉嚼宗患驻堵滦绢还棍迄镇骤对幼奖我丧好荔勇《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院1、系统简介、系统简介 这里,我们将要开发一个简单的温度控制系统,它能测这里,我们将要开发一个简单的温度控制系统,它能测量并且控制一个小的封闭环境内的温度升高到指定的温度,量并且控制一个小的封闭环境内的温度升高到指定的温度,为了简单起见,我们省去了降温控制的环节。
设计系统的精为了简单起见,我们省去了降温控制的环节设计系统的精度为度为1℃,采用增量式,采用增量式PID进行控制,进行控制,PID的参数可调,可实的参数可调,可实时显示温度曲线时显示温度曲线 这里涉及到这里涉及到GPIO和单线数字式温度计和单线数字式温度计DS18B20的使用,的使用,因此必须为这两者开发驱动,但是在应用程序中只需要知道因此必须为这两者开发驱动,但是在应用程序中只需要知道驱动提供了怎样的功能,如何使用它们提供的功能即可,不驱动提供了怎样的功能,如何使用它们提供的功能即可,不需要详细了解驱动的原理,如果想了解驱动的具体实现,请需要详细了解驱动的原理,如果想了解驱动的具体实现,请阅读本书第七章阅读本书第七章 系统软件界面如图所示,从软件界面上可以看出,温度系统软件界面如图所示,从软件界面上可以看出,温度控制系统可以调节控制系统可以调节PID算法的算法的P、、I、、D参数,设定目标温度,参数,设定目标温度,并且可以显示实时的温度曲线并且可以显示实时的温度曲线链犊珍韦拢营仿短痉苗狼塔区医气颐背缅宿咽勿淳嫁交与装凯证谋威淹掠《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院温度控制系统软件界面费昌疑武捆子寂所秦篱锗遵顾敢疹羌菊惦敲捞被慰杜同藐拦层刃暖颓父献《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院2、系统硬件介绍、系统硬件介绍 系统的硬件组成很简单,有系统的硬件组成很简单,有mini2440开发板、单线数字开发板、单线数字温度计温度计DS18B20,加热用电炉丝及隔离电路组成。
系统的硬,加热用电炉丝及隔离电路组成系统的硬件结构如图所示:件结构如图所示: 箩锋乎蕉儿洼赞悟酞碑览惯周核散宏貌彝服邑帘超蛀囚框霜篙冬乱羡婶钳《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 这里假定读者的开发板中烧写的镜像中包含了这里假定读者的开发板中烧写的镜像中包含了GPIO的驱的驱动动GPF.dll和温度计的驱动和温度计的驱动TEM.dll,关于驱动的问题,参见,关于驱动的问题,参见第七章的内容第七章的内容 其中单线数字温度计其中单线数字温度计DS18B20在第七章有详细介绍,它在第七章有详细介绍,它有三根线,分别为电源线、地线和信号线,电源线连接开发有三根线,分别为电源线、地线和信号线,电源线连接开发板上提供的板上提供的5V电源(电源(CON4第第1脚),地线连开发板上脚),地线连开发板上GND((CON4第第3脚)。
信号线连接开发板上脚)信号线连接开发板上GPF2((CON4第第6脚),信号线连接的引脚由驱动程序决定脚),信号线连接的引脚由驱动程序决定PWM输出使输出使用用GPF0((CON4第第5脚),它也是由脚),它也是由GPIO的驱动程序决定的的驱动程序决定的电炉丝是采用交流电供电,安全起见,必须在电炉丝和开发电炉丝是采用交流电供电,安全起见,必须在电炉丝和开发板的引脚之间加一层隔离装置,可以用光继电器,或者晶闸板的引脚之间加一层隔离装置,可以用光继电器,或者晶闸管,起到隔离高低电压的作用管,起到隔离高低电压的作用 硬件中没有可以降温的元器件,因此系统没有降温功能,硬件中没有可以降温的元器件,因此系统没有降温功能,只能控制系统在升温到环境温度之上的某个温度只能控制系统在升温到环境温度之上的某个温度他靛匣叔故朔躬听泵茶蒋岂扮斑父照区窿序传耕议主伊徐呛扬岩兰蹋骸宁《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院3、系统软件介绍、系统软件介绍 在硬件的基础上,系统可以测量实时温度、画实时温度在硬件的基础上,系统可以测量实时温度、画实时温度曲线并且采用增量式曲线并且采用增量式PID算法控制算法控制PWM输出来调节温度。
软输出来调节温度软件的流程如图所示件的流程如图所示 由于系统需要实现的功能较多,所以采用多线程的流程由于系统需要实现的功能较多,所以采用多线程的流程设计设计两个线程,主线程用于接收软件界面的按钮消息,设计设计两个线程,主线程用于接收软件界面的按钮消息,用于设定参数,第二线程用于温度测量、实时温度曲线的绘用于设定参数,第二线程用于温度测量、实时温度曲线的绘制和控制参数的计算由于温度的变化不会很快,且采样的制和控制参数的计算由于温度的变化不会很快,且采样的精度只有精度只有1℃,因此温度采样不必过于频繁,且实时温度曲,因此温度采样不必过于频繁,且实时温度曲线是根据实时测量的温度变化的,控制参数也取决于测得的线是根据实时测量的温度变化的,控制参数也取决于测得的温度,因此将这三个功能放在一个线程中实现是合理的温度,因此将这三个功能放在一个线程中实现是合理的 漠示抒侗葫泼浑元舆哑蔬嚏戴且锭殉馏喉赫双汕磅惶官抠顿冬金瘤告窜俺《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院温度控制系统软件流程图陈杖农丫租胃薯螺塔嫡愿笨湃柯均啊快绪彭步物热鲸汾琳搏锰获稼椰涛证《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院 软件中采用软件定时器软件中采用软件定时器mmtimer来产生来产生PWM波,产生的波,产生的PWM波频率为波频率为1Hz,精度只能达到,精度只能达到1ms级别,如设定计时器级别,如设定计时器值为值为500则产生占空比为则产生占空比为50.0%的的1Hz的的PWM波,且由于软波,且由于软件设计的原因,定时器始终会有件设计的原因,定时器始终会有5mm左右的误差,但是这对左右的误差,但是这对系统的影响不大,可以忽略。
由于定时器处理的必须占用一系统的影响不大,可以忽略由于定时器处理的必须占用一定时间,不能大于定时器时间,因此定时器不能设定太大或定时间,不能大于定时器时间,因此定时器不能设定太大或太小的数字软件中采用增量式太小的数字软件中采用增量式PID控制算法计算控制算法计算PWM波的波的占空比增量式占空比增量式PID控制算法如下:控制算法如下: Δuk=d0ek+d1ek-1+d2ek-2 程序中设定程序中设定d0=p+i+d,,d1=-(p+2d),,d2=dek是当前温度是当前温度与预设温度之间的误差,与预设温度之间的误差,ek-1是上一次的误差,是上一次的误差,ek-2是上上一是上上一次的误差次的误差顽茵罢打诊熄熔滞归噪郁镍批洒怔腔邑粟咐润敛愤顺贯善御票碉锅鸡植渣《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用嵌入式系统及其应用第七章第七章第七章第七章 嵌入式系嵌入式系嵌入式系嵌入式系统统统统开开开开发应发应发应发应用基用基用基用基础础础础CHANG’AN UNIVERSITYCHANG’AN UNIVERSITY长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院长安大学电子与控制工程学院4、总结、总结 从上面的温度控制系统的实现过程来看,如果要设计一从上面的温度控制系统的实现过程来看,如果要设计一个实现某一特定功能的系统,首先,要明确系统到底需要完个实现某一特定功能的系统,首先,要明确系统到底需要完成什么样的功能,明确了功能要求,才可以具体设计硬件和成什么样的功能,明确了功能要求,才可以具体设计硬件和软件。
其次,设计系统的硬件结构,根据上一步中的功能要软件其次,设计系统的硬件结构,根据上一步中的功能要求,设计具体的硬件,如上例中,需要测量温度,则系统中求,设计具体的硬件,如上例中,需要测量温度,则系统中必须要有温度计,需要加温,则系统中必须有可控制的电炉必须要有温度计,需要加温,则系统中必须有可控制的电炉丝再次,就是软件的设计了,软件的设计包括两个方面再次,就是软件的设计了,软件的设计包括两个方面第一,特定硬件的驱动设计,上例中,我们的数字温度计就第一,特定硬件的驱动设计,上例中,我们的数字温度计就需要自己写驱动来控制温度计工作,需要自己写驱动来控制温度计工作,GPIO口也需要我们自口也需要我们自己写驱动才能生成己写驱动才能生成PWM波第二,其他代码的设计,包括波第二,其他代码的设计,包括操作硬件的代码、显示界面、控制算法等,需要我们根据要操作硬件的代码、显示界面、控制算法等,需要我们根据要实现的具体功能来写相关的代码经过上面的步骤之后,形实现的具体功能来写相关的代码经过上面的步骤之后,形成一个完整的系统,之后就是调试系统、调节控制参数等,成一个完整的系统,之后就是调试系统、调节控制参数等,最终完成设计的目标,称为一个可以工作的嵌入式应用。
最终完成设计的目标,称为一个可以工作的嵌入式应用剐袱章呼叮解甜豪迢辉草题硫净霸展旱腊撞渭叠显阉灯她饯悦再弦铅作亿《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础《嵌入式系统及其应用课件》第七章嵌入式系统开发应用基础。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





