实验手册范本_第1页
实验手册范本_第2页
实验手册范本_第3页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验 4.1练习 1 :在 Brew MP Simulator 6 中 运行样例应用程序在 Brew MP Simulator 6 中运行样例 程序应用程序:1. 从“开始”菜单中,启动适用 于 Qualcomm Brew MP SDK 的 Brew MP SDK Man age。2. 在 SDK Manager 中,要显示制 作工具和运行时工具,请单击“工 具”选项卡。3. 启动 Target Manager 。4. 单击“翻盖手机”设备配置文 件,然后单击“创建目标”。5. 当提示您输入“目标名称”时,保留默认名称,然后单击“继 续”。6. 在“ Simulator 目标”窗口 中,双击“

2、翻盖手机”。7. 在模拟设备上,启动 AppManager。8. 选择 C Localized App 应用程 序。使用鼠标模拟设备上的按键功 能。9. 要退出应用程序,请按“电源 (结束)”。10. 在 AppManager 中,尝试其他 应用程序。11. 完成后,关闭 Simulator 和 Target Manager 。练习 2 :从 Visual Studio 安装样例 源代码并运行 Simulator 将样例应用程序源代码安装到便携式 计算机上:1. 从“开始”菜单中,启动 Brew MP SDK Manage。2. 要显示工具组和平台,请单击 “设置”。3. 在“工具组” “可选

3、组件”中,单击“安装”安装样例程序。4. 按照向导窗口中的提示进行操 作。请注意安装文件的位置。使用安装的源代码打开项目:1. 在 Visual Studio 中,单击 “文件” “打开” “项目 / 解 决方案”。2. 导航到已安装的源代码,选择 c_basicapp_VS<version>.vcproj ,然后单击“打开”。3. 在 Visual Studio Solution Explorer 窗格中,导航到“源文 件”目录,然后双击c_basicapp.c 加载文件。4. 在 Visual Studio 中,使用 Brew MP 插件工具栏执行以下操A. 选择“模拟目标”作

4、为目标 类型B. 选择 Brew MP 目标C. 单击 “运行”Brew MP 将启动 Simulator 并 运行应用程序。如果已经打开 Simulator ,它 可能在另一个窗口后面运行。完成本实验后,您将:?在 Target Manager 中创建了设备 配置文件,其特定于所需的 Brew MP SDK版本?根据新创建的 Brew MP 目标配置 文件运行了样例应用程序?将源代码从样例应用程序安装到便携式计算机中? 在 Visual Studio中打开了一个源代码项目? 从 Visual Studio 窗口在 Simulator 上生成并运行了应用程 序实验 4.2练习 1 运行 Bre

5、w MP 应用程序向导生成 Brew MP 应用程序:1. 启动 Visual Studio2. 选择“文件” “新 建” “项目”。3. 在“项目类型”中,选择 “Brew MP”。4. 在“ Visual Studio 已安装的 模板”下,选择“ C 应用程序”。5. 在“名称:”字段中,输入av“ myapp ” 。6. 单击“浏览”,导航至 C:Documents and Settings<username>My DocumentsVisual Studio <version>Projects 。7. 单击“确定”。练习 2 查看源文件熟悉 Brew MP 应用

6、程序编程基础知 识:1. 在 Visual Studio 的Solution Explorer 中,展开“头 文件”文件夹。打开 myapp.bid 文件。此文件在 AEECLSID MYAP常量中定义了应用程序的名称,并为其分 配了十六进制值类ID 。2. 打开 myapp_res.h 文件。此文件定义了 MYAPP_RES_哄文 件常量、MYAPP_RES_FILE作为 myapp.ba门、此应用程序使用的 对应资源文件以及IDS_STRING_100(1 作为对 ID 值为 1001 的文件中字符串资源的引 用)。3. 展开“资源文件”文件夹。打 开 myapp.car 文件。 此文件包

7、含资源文件中所含资源的 名称、ID、类型和数据。4. 打开 myapp.cif 。 此文件标识各种重要模块资源,包 括包含应用程序 AEECLSID 的 myapp.bid 文件。也可用它标识应 用程序和应用程序使用的任何MIME类型处理程序所使用的应用 程序扩展。5. 打开 myapp_ico.png 。 此文件是为该应用程序创建的默认图标,将显示在 Simulator 和设 备的 App Manager 中。6. 展开“源文件”文件夹。请注 意存在以下两个文件:AEEMODGE包含模块接口定义 AEEAPPG曰包含Applet接口定义这两个源文件提供了所有模块和Applet 接口及类的定义

8、,所有MOD Applet项目必须具有这两个 源文件。7. 打开 myapp.c。8. 找到“ Include 和变量定义” 部分。本部分包括各种类和接口的 所有头文件。9. 找到 myapp 结构。此数据结构 是必需的,它定义了用于保存所有 大型变量、全局变量和接口声明的 数据结构。10. 找到 AEEClsCreateInstance() 函数。此函数可基于应用程序的 AEECLSID创建应用程序。11. 找到 FreeAppData() 函数。此 函数被用作析构函数,可在应用程 序关闭时释放所创建的资源和接 口。12. 找到 myapp_HandleEvent() 函 数。 Brew M

9、P 使用事件驱动型模 型,此函数可提供与应用程序交互 的主要方式。13. 找到 myapp_DrawScreen() 函 数。此函数由 myapp_HandleEvent() 函数调用, 用作EVT_APP_STAR事件的返回 函数,它会调用 IDisplay 接口以 绘制到屏幕。此函数也使用 ISHELL_LoadResString 从 myapp.bar 资源文件加载文本字符 串。注意:这些接口和函数将在下面几节 讨论。有关详细信息,请参见 SDKManager “资源”页面上的 APIReference( API 参考)。练习 3 使用资源文件1. 在 Visual Studio 中,打

10、开 myapp 项目(如果尚未打开)。2. 从 Brew MP 工具栏中,选择 “启动 Brew MP 工具”,然后选 择“ Resource Manager”。3. 在 Resource Manager 中,选 择“文件” “打开”,导航到练 习 1 中创建的 myapp 项目文件 夹。找到 myapp.car 文件,然后 单击“打开”。4. 在“编辑数据”字段中,将 “Hello World ”更改为“ Hello <name>,其中“ <name> 是您的 名字。完成本实验后,您将:? 使用应用程序向导创建新的 BrewMP MOD应用程序?浏览新创建应用程序的源

11、文件? 使用 Resource Manager 编辑应用 程序 CAR 文件? 重新编译应用程序并在 Simulator 中运行以查看带有您名字的字符串 Hello实验 4.3练习 1 向 myapp 应用程序添加ISettings 接口此项目使用 ISettings 接口读取设备 的语言设置并在 Simulator 的输出窗 口中返回该设置。1. 打开 SDK Manager。2. 使用 API Reference guide ( API 参考指南)(可从 SDK manager 的“资源”选项卡中找 到)查找要包括在项目中的头文 件。3. 启动 Visual Studio ,然后打 开 m

12、yapp 项目(如果尚未打 开)。4. 导航至 myapp.c 的“ Include 和变量定义”部分。5. 编写语句,以包括在步骤 2 中 找到的 ISettings 头文件。6. 读取和更改设置时, ISettings 接口使用注册表对象提供通知。要 确保提供此功能,请将以下语句添加到“ Include 和变量定义”部 分:#include "AEESettingsReg.bid"7. 将 ISettings 对象的指针添加 到 Applet 结构中的接口。使用 IDisplay 指针作为线索,以确保 语确。8. 导航到 FreeAppData 函数,添 加所需代码以释

13、放接口。9. 生成项目并检查错误。 注意:直到完成下一练习后,本实验 中的代码更改才会显示在 Simulator 中。练习 2 使用 ISettings 检索语言设 置1. 本练习使用DBGPRINTF助手函 数和部分 AEEStdLib 库。请将头 文件添加到 myapp.c 源文件的“ Include 和变量声明”部分。2. 在 myapp.c 源文件中,导航到 myapp_HandleEvent 函数。此项目使用 EVT_KEY switch 来响 应在设备上按下“选择”键的操 作。此键的 wParam 是AVK_SELECT有关事件处理的更多信息,请参见API 参考指南。有关事件代码

14、的完整列表,请参见 AEEVCodes.h 头文件。3. 添加代码以在 InitAppData 中 创建 ISettings 接口的实例。确 保实例已创建。if (AEE_SUCCESS != ISHELL_CreateInstance(pMe- >piShell,AEECLSID_SettingsReg, (void *)&pMe->piSettings)DBGPRINTF("Failed to create ISettings object");pMe->piSettings = NULL; return FALSE; / Failureocc

15、urred4. 在 EVT_KEY 下输入一个 switch 以将 AVK_SELECT乍为 wParam 进行处理。switch(wParam) case AVK_SELECT: / Add code here.return TRUE;default: return FALSE;5. 在大括号之间,添加一个 int 变量来保存接口创建结果。int nRes;6. 创建一个缓冲区来保存 ISettings 查询结果。如果函数失 败,缓冲区将保存错误消息。char szCurrCode20;7. 将活动设备的语言设置加载到 缓冲区。验证是否已检索到语言。 如果未检索到语言,则在 nRes 变 量

16、中提供反馈。nRes = ISettings_Get(pMe- >piSettings,"/BREW/UI/Language",/ Key to get setting-value(char*)&szCurrCode, sizeof(szCurrCode), / Buffer size for setting valueNULL);if (AEE_SUCCESS != nRes) return TRUE; / Event handled regardless of errorDBGPRINTF("Current language is:%s"

17、;, szCurrCode);8. 要生成应用程序并在 Simulator 中运行,请单击“运 行”。9. 在 Simulator 中,选择“查看” “日志”。此时将显示输出 窗口。10. 在 Simulator 设备上,单击 “选择”。11. 导航到输出窗口。应显示以下 文本:实验 5练习 1 :研究和运行包含 Brew MP UI Widgets 的应用程序说明 本实验的目的是使用实现了多个 widgets 的基本 Brew MP 应用程序。 您将研究 widgets 项目中的组件。您将执行的操作? 将“ widgets ”项目复制到您的 计算机?研究应用程序代码的各个元素 在本实验中,您

18、将研究和运行现有代 码。执行时,代码将创建多个 widgets ,并允许用户与其中两个 widgets 进行交互。1. 从提供的配套软件中打开本练 习中使用的 widgets 项目。在 Visual Studio 中,单击“文件” “打开” “项目/ 解决方 案”。2. 在 Visual Studio 中,使用 Brew MP 插件工具栏执行以下操 作:A. 选择“模拟目标”作为目标 类型B. 选择 Brew MP 目标C. 单击 “运行”Brew MP 将启动 Simulator 并运行应 用程序。如果已经打开 Simulator , 它可能在另一个窗口后面运行。3. 使用“向上”和“向下”

19、导航 键以及“选择”键与应用程序进行 交互。现在,让我们返回源代码文件 widget.c 并检查代码。4. 在 widget.c 代码中找到以下 注释行 /DISCUSS P1_1 。如果您查看此部分,您会发现 其中包含该练习所需的 widgets 的 头文件和类 BID 文件。另外还有 新宏 RELEASEIF() 的定义,该宏 用于安全释放已经创建的任何类。 请注意,这不同于 FREEIF() 助手 函数(在 AEEStdLib.h 中提 供),后者用于释放存指针。5. 在 widget.c 代码中找到以下 注释行 /DISCUSS P1_2 。此时您看到的是 InitAppData()

20、过 程,这通常是创建和初始化 Applet 结 构数据的位置。要初始化 widgets 环境,必须从根容 器入手。创建 widgets 后,应查看设 备位图并使用其维度来设置容器约 束。然后,将 widgets 逐个添加到根 容器中。在此程序中,您将使用约束 widgets ,并通过设置每个 widgets 的 约束来管理自己的 widgets 位置。 对于每个 widgets (附示例),首先 需要创建该 widgets 的实例: nErr = ISHELL_CreateInstance(pMe- >piShell,AEECLSID_STATICWIDGET, (void *)&

21、;(pMe->piwTitle);然后,根据需要对 widgets 加以修 饰:(void)IWIDGET_SetText(pMe->piwTitle, awchTitle, TRUE); 接下来,计算 widgets 的围(大小) 并在 widgets 中对其进行设置。/ Set extent:IWIDGET_GetPreferredExtent(pMe- >piwTitle, &we);if(we.width < (pMe- >deviceInfo).cxScreen) we.width = (pMe- >deviceInfo).cxScreen

22、;IWIDGET_SetExtent(pMe->piwTitle, &we);最后,将 widgets 添加到根容器中。 (void)IROOTCONTAINER_Insert(pMe- >picRoot, pMe->piwTitle,WIDGET_ZNORMAL,&dwpos);6. 在 widget.c 代码中找到以下 注释行 /DISCUSS P1_3 。 切记,当调用 FreeAppData() 时,您将负责删除创建的所有类(例 如调用 CreateInstance() 时)。7. 在 widget.c 代码中找到以下 注释行 /DISCUSS P1_

23、4 。 此处是响应向上和向下箭头以及更 改根容器焦点的调用。完成后,您可以返回 TRUE 以表示您已经处理该事 件。8. 在 widget.c 代码中找到以下 注释行 /DISCUSS P1_5 。使用 widgets 时,您需要允许 widgets 基础结构来处理您未处理的 事件。练习 2 :将静态文本 widgets 和文本 widgets 添加到应用程序说明本实验的目的是将两个新 widgets 添 加到应用程序并添加一些代码,以便 在按下“选择”键时将文本从现有文 本 widgets 复制到新的静态文本 widgets 。您将执行的操作?修改现有应用程序以支持静态文本 widgets

24、和文本 widgets?测试修改后的应用程序 在本实验中,您将使用练习 1 中的应 用程序并修改代码。1. 从提供的配套软件中打开本练 习中使用的 widgets 项目。2. 从提供的配套软件中打开本练 习中使用的 AddedCode.c 文件。对于 widgets 项目中的每个/INSERT 注释:? 阅读说明? 从 AddedCode.c 文件中复制 / 粘贴该代码?在每次修改后保存更改3. 在 widget.c 代码中找到以下 注释行 /INSERT P2_1 HERE 。要访问文本 widgets 的容,您需要添 加头文件 AEETextWidget.h/Start P2_1#incl

25、ude "AEETextWidget.h"/End P2_14. 在 widget.c 代码中找到以下 注释行 /INSERT P2_2 HERE 。您需要在 Applet 结构中定义两个新的 widgets 指针。第一个 widgets 将保存并显示复制的文本。第二个 widgets 保存标题。/Start P2_2IWidget * piwCopy; /Text Ctl static text widget.IWidget * piwCpyTitle; /Text Ctl static text widget./End P2_25. 在 widget.c 代码中找到以下

26、 注释行 /INSERT P2_3 HERE 。 以下是标题的文本。/Start P2_3static const AECHAR * awchCopyTitle = (AECHAR*)L"This is the output"/End P2_36. 在 widget.c 代码中找到以下 注释行 /INSERT P2_4 HERE 。这是将执行复制操作的过程的正向定 义(代码位于 INSERT P2_8 步骤 中)。/Start P2_4static void widgets_HandleCopy(widgets * pMe);/End P2_47. 在 widget.c 代

27、码中找到以下 注释行 /INSERT P2_5 HERE 。 您应在此处将 widgets 添加到根容 器。这与您之前对任何文本 widgets 所执行的操作相同。请注意,静态文 本 widgets 没有边框,而文本 widgets 有。/Start P2_5/ Title widget for text outputnErr = ISHELL_CreateInstance(pMe- >piShell,AEECLSID_STATICWIDGET,(void *)&(pMe->piwCpyTitle);if (AEE_SUCCESS != nErr) return (nErr

28、);(void)IWIDGET_SetFlags(pMe- >piwCpyTitle,IDF_ALIGN_LEFT|IDF_ALIGN_TOP);(void)IWIDGET_SetText(pMe->piwCpyTitle, awchCopyTitle,TRUE);/ Set extent:IWIDGET_GetPreferredExtent(pMe- >piwCpyTitle, &we);we.width = (pMe- >deviceInfo).cxScreen - we.width - 2;IWIDGET_SetExtent(pMe- >piwCpy

29、Title, &we);/ Set location:dwpos.x = 0;dwpos.y += oldwe.height + 7; dwpos.bVisible = TRUE;/ Save the extent:oldwe = we;/ Insert widget into rootcontainer:(void)IROOTCONTAINER_Insert(pMe->picRoot,pMe->piwCpyTitle,WIDGET_ZNORMAL,&dwpos);RELEASEIF(pMe->piwCpyTitle);/ Copy widgetnErr =I

30、SHELL_CreateInstance(pMe->piShell,AEECLSID_STATICWIDGET,(void *)&(pMe->piwCopy);if (AEE_SUCCESS != nErr) return (nErr);/ Set extent:IWIDGET_GetPreferredExtent(pMe- >piwCopy, &we);we.width = (pMe->deviceInfo).cxScreen - 2;IWIDGET_SetExtent(pMe->piwCopy, &we);/ Set location:

31、dwpos.x = 0;dwpos.y += oldwe.height + 7; dwpos.bVisible = TRUE;/ Save the extent:oldwe = we;/ Insert widget into root container:(void)IROOTCONTAINER_Insert(pMe->picRoot, pMe->piwCopy,WIDGET_ZNORMAL, &dwpos);/End P2_58. 在 widget.c 代码中找到以下注释行 /INSERT P2_6 HERE 。调用 FreeAppData() 时,此代码将删 除这两个新

32、 widgets 。/Start P2_6RELEASEIF(pMe->piwCopy);RELEASEIF(pMe->piwCpyTitle);/End P2_69. 在 widget.c 代码中找到以下 注释行 /INSERT P2_7 HERE 。应在此处添加代码,以处理按下“选 择”键时会发生的情况。这将调用 INSERT P2_8 中的一个函数来处理事 件。/Start P2_7case AVK_SELECT:widgets_HandleCopy(pMe);break;/End P2_710. 在 widget.c 代码中找到以下注释行 /INSERT P2_8 HERE

33、 。以确保选* pMe)这是实际执行复制操作的代码。它将调用 IWidget_HasFocus() , 仅当在正确的 widgets 中按下 择”键时做出响应。/Start P2_8static void widgets_HandleCopy(widgetsboolean bFocus;AECHAR *pText;/ Only copy the data ifSELECT is pressed while the/ text widget is activeIWidget_HasFocus(pMe- >piwText, &bFocus);if (bFocus) / Copy th

34、e input to theoutputIWidget_GetTextWidgetText(pMe- >piwText, &pText);IWIDGET_SetText(pMe->piwCopy, pText, TRUE);/End P2_811. 生成并运行应用程序。不应存 在编译错误。 Simulator 中的初始 屏幕应如下所示:12. 更改文本 widgets 的焦点,并 输入文本“ hello ”,然后按“选 择”键。练习 3 :调试 widgets说明本实验的目的是测试调试 widgets 代 码的能力。您将执行的操作? 设置调试断点 ?使用调试菜单和工具栏控制调 试在本实验中,您将使用练习 2 中的应 用程序并使用调试方法。1. 退出 Simulator (如果正在运 行)。2. 在上一练习的步骤 P2_8 中的 if (bFocus) 行添加的代码中放 置一个断点。3. 按下 Brew MP 工具栏上的 “调试”按钮。 Simulator 将启 动,并运行该应用程序。4. 按下“选择”键,而不使用 “向上”或“向下”键。代码将中 断,您会看到 bFocus 的值为 0x00 或 FALSE。已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论