实验 手册范本.docx

上传人:b****8 文档编号:29643151 上传时间:2023-07-25 格式:DOCX 页数:25 大小:27.03KB
下载 相关 举报
实验 手册范本.docx_第1页
第1页 / 共25页
实验 手册范本.docx_第2页
第2页 / 共25页
实验 手册范本.docx_第3页
第3页 / 共25页
实验 手册范本.docx_第4页
第4页 / 共25页
实验 手册范本.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

实验 手册范本.docx

《实验 手册范本.docx》由会员分享,可在线阅读,更多相关《实验 手册范本.docx(25页珍藏版)》请在冰豆网上搜索。

实验 手册范本.docx

实验手册范本

实验4.1

练习1:

在BrewMPSimulator6中运行样例应用程序

在BrewMPSimulator6中运行样例程序应用程序:

1.从“开始”菜单中,启动适用于QualcommBrewMPSDK的BrewMPSDKManager。

2.在SDKManager中,要显示制作工具和运行时工具,请单击“工具”选项卡。

3.启动TargetManager。

4.单击“翻盖手机”设备配置文件,然后单击“创建目标”。

5.当提示您输入“目标名称”时,保留默认名称,然后单击“继续”。

6.在“Simulator目标”窗口中,双击“翻盖手机”。

7.在模拟设备上,启动AppManager。

8.选择CLocalizedApp应用程序。

使用鼠标模拟设备上的按键功能。

9.要退出应用程序,请按“电源(结束)”。

10.在AppManager中,尝试其他应用程序。

11.完成后,关闭Simulator和TargetManager。

练习2:

从VisualStudio安装样例源代码并运行Simulator

将样例应用程序源代码安装到便携式计算机上:

1.从“开始”菜单中,启动BrewMPSDKManager。

2.要显示工具组和平台,请单击“设置”。

3.在“工具组”“可选组件”中,单击“安装”安装样例程序。

4.按照向导窗口中的提示进行操作。

请注意安装文件的位置。

使用安装的源代码打开项目:

1.在VisualStudio中,单击“文件”“打开”“项目/解决方案”。

2.导航到已安装的源代码,选择c_basicapp_VS.vcproj,然后单击

“打开”。

3.在VisualStudioSolutionExplorer窗格中,导航到“源文件”目录,然后双击c_basicapp.c加载文件。

4.在VisualStudio中,使用BrewMP插件工具栏执行以下操作:

A.选择“模拟目标”作为目标类型

B.选择BrewMP目标

C.单击“运行”

→BrewMP将启动Simulator并运行应用程序。

→如果已经打开Simulator,它可能在另一个窗口后面运行。

完成本实验后,您将:

▪在TargetManager中创建了设备配置文件,其特定于所需的BrewMPSDK版本

▪根据新创建的BrewMP目标配置文件运行了样例应用程序

▪将源代码从样例应用程序安装到便携式计算机中

▪在VisualStudio中打开了一个源代码项目

▪从VisualStudio窗口在Simulator上生成并运行了应用程序

实验4.2

练习1-运行BrewMP应用程序向导

生成BrewMP应用程序:

1.启动VisualStudio

2.选择“文件”“新建”“项目”。

3.在“项目类型”中,选择“BrewMP”。

4.在“VisualStudio已安装的模板”下,选择“C应用程序”。

5.在“名称:

”字段中,输入“myapp”。

6.单击“浏览”,导航至

C:

\DocumentsandSettings\\MyDocuments\VisualStudio\Projects。

7.单击“确定”。

练习2-查看源文件

熟悉BrewMP应用程序编程基础知识:

1.在VisualStudio的SolutionExplorer中,展开“头文件”文件夹。

打开myapp.bid文件。

此文件在AEECLSID_MYAPP常量中定义了应用程序的名称,并为其分配了十六进制值类ID。

2.打开myapp_res.h文件。

此文件定义了MYAPP_RES_.H头文件常量、MYAPP_RES_FILE(作为myapp.bar)、此应用程序使用的对应资源文件以及IDS_STRING_1001(作为对ID值为1001的文件中字符串资源的引用)。

3.展开“资源文件”文件夹。

打开myapp.car文件。

此文件包含资源文件中所含资源的名称、ID、类型和数据。

4.打开myapp.cif。

此文件标识各种重要模块资源,包括包含应用程序AEECLSID的myapp.bid文件。

也可用它标识应用程序和应用程序使用的任何MIME类型处理程序所使用的应用程序扩展。

5.打开myapp_ico.png。

此文件是为该应用程序创建的默认图标,将显示在Simulator和设备的AppManager中。

6.展开“源文件”文件夹。

请注意存在以下两个文件:

AEEMODGEN-包含模块接口定义

AEEAPPGEN-包含Applet接口定义

这两个源文件提供了所有模块和Applet接口及类的定义,所有MODApplet项目必须具有这两个源文件。

7.打开myapp.c。

8.找到“Include和变量定义”部分。

本部分包括各种类和接口的所有头文件。

9.找到myapp结构。

此数据结构是必需的,它定义了用于保存所有大型变量、全局变量和接口声明的数据结构。

10.找到AEEClsCreateInstance()函数。

此函数可基于应用程序的AEECLSID创建应用程序。

11.找到FreeAppData()函数。

此函数被用作析构函数,可在应用程序关闭时释放所创建的资源和接口。

12.找到myapp_HandleEvent()函数。

BrewMP使用事件驱动型模型,此函数可提供与应用程序交互的主要方式。

13.找到myapp_DrawScreen()函数。

此函数由myapp_HandleEvent()函数调用,用作EVT_APP_START事件的返回函数,它会调用IDisplay接口以绘制到屏幕。

此函数也使用ISHELL_LoadResString从myapp.bar资源文件加载文本字符串。

注意:

这些接口和函数将在下面几节讨论。

有关详细信息,请参见SDKManager“资源”页面上的APIReference(《API参考》)。

练习3-使用资源文件

1.在VisualStudio中,打开myapp项目(如果尚未打开)。

2.从BrewMP工具栏中,选择“启动BrewMP工具”,然后选择“ResourceManager”。

3.在ResourceManager中,选择“文件”“打开”,导航到练习1中创建的myapp项目文件夹。

找到myapp.car文件,然后单击“打开”。

4.在“编辑数据”字段中,将“HelloWorld”更改为“Hello”,其中“”是您的名字。

完成本实验后,您将:

▪使用应用程序向导创建新的BrewMPMOD应用程序

▪浏览新创建应用程序的源文件

▪使用ResourceManager编辑应用程序CAR文件

▪重新编译应用程序并在Simulator中运行以查看带有您名字的字符串Hello

实验4.3

练习1-向myapp应用程序添加ISettings接口

此项目使用ISettings接口读取设备的语言设置并在Simulator的输出窗口中返回该设置。

1.打开SDKManager。

2.使用APIReferenceguide(《API参考指南》)(可从SDKmanager的“资源”选项卡中找到)查找要包括在项目中的头文件。

3.启动VisualStudio,然后打开myapp项目(如果尚未打开)。

4.导航至myapp.c的“Include和变量定义”部分。

5.编写语句,以包括在步骤2中找到的ISettings头文件。

6.读取和更改设置时,ISettings接口使用注册表对象提供通知。

要确保提供此功能,请将以下语句添加到“Include和变量定义”部分:

#include"AEESettingsReg.bid"

7.将ISettings对象的指针添加到Applet结构中的接口。

使用IDisplay指针作为线索,以确保语确。

8.导航到FreeAppData函数,添加所需代码以释放接口。

9.生成项目并检查错误。

注意:

直到完成下一练习后,本实验中的代码更改才会显示在Simulator中。

练习2-使用ISettings检索语言设置

1.本练习使用DBGPRINTF助手函数和部分AEEStdLib库。

请将头文件添加到myapp.c源文件的“Include和变量声明”部分。

2.在myapp.c源文件中,导航到myapp_HandleEvent函数。

此项目使用EVT_KEYswitch来响应在设备上按下“选择”键的操作。

此键的wParam是AVK_SELECT。

有关事件处理的更多信息,请参见《API参考指南》。

有关事件代码的完整列表,请参见AEEVCodes.h头文件。

3.添加代码以在InitAppData中创建ISettings接口的实例。

确保实例已创建。

if(AEE_SUCCESS!

=ISHELL_CreateInstance(pMe->piShell,

AEECLSID_SettingsReg,

(void**)&pMe->piSettings)){

DBGPRINTF("FailedtocreateISettingsobject");

pMe->piSettings=NULL;

returnFALSE;//Failureoccurred

}

4.在EVT_KEY下输入一个switch以将AVK_SELECT作为wParam进行处理。

switch(wParam){

caseAVK_SELECT:

{

//Addcodehere...

}

→returnTRUE;

default:

returnFALSE;

}

5.在大括号之间,添加一个int变量来保存接口创建结果。

intnRes;

6.创建一个缓冲区来保存ISettings查询结果。

如果函数失败,缓冲区将保存错误消息。

charszCurrCode[20];

7.将活动设备的语言设置加载到缓冲区。

验证是否已检索到语言。

如果未检索到语言,则在nRes变量中提供反馈。

nRes=ISettings_Get(pMe->piSettings,

"/BREW/UI/Language",//Keytogetsetting-value

(char*)&szCurrCode,

sizeof(szCurrCode),//Buffersizeforsettingvalue

NULL);

if(AEE_SUCCESS!

=nRes){

returnTRUE;//Eventhandledregardlessoferror

}

DBGPRINTF("Currentlanguageis:

%s",szCurrCode);

8.要生成应用程序并在Simulator中运行,请单击“运行”。

9.在Simulator中,选择“查看”“日志”。

此时将显示输出窗口。

10.在Simulator设备上,单击“选择”。

11.导航到输出窗口。

应显示以下文本:

实验5

练习1:

研究和运行包含BrewMPUIWidgets的应用程序

说明

本实验的目的是使用实现了多个widgets的基本BrewMP应用程序。

您将研究widgets项目中的组件。

您将执行的操作

▪将“widgets”项目复制到您的计算机

▪研究应用程序代码的各个元素

在本实验中,您将研究和运行现有代码。

执行时,代码将创建多个widgets,并允许用户与其中两个widgets进行交互。

1.从提供的配套软件中打开本练习中使用的widgets项目。

在VisualStudio中,单击“文件”“打开”“项目/解决方案”。

2.在VisualStudio中,使用BrewMP插件工具栏执行以下操作:

A.选择“模拟目标”作为目标类型

B.选择BrewMP目标

C.单击“运行”

BrewMP将启动Simulator并运行应用程序。

如果已经打开Simulator,它可能在另一个窗口后面运行。

3.使用“向上”和“向下”导航键以及“选择”键与应用程序进行交互。

现在,让我们返回源代码文件widget.c并检查代码。

4.在widget.c代码中找到以下注释行//DISCUSSP1_1。

如果您查看此部分,您会发现其中包含该练习所需的widgets的头文件和类BID文件。

另外还有新宏RELEASEIF()的定义,该宏用于安全释放已经创建的任何类。

请注意,这不同于FREEIF()助手函数(在AEEStdLib.h中提供),后者用于释放存指针。

5.在widget.c代码中找到以下注释行//DISCUSSP1_2。

此时您看到的是InitAppData()过程,这通常是创建和初始化Applet结构数据的位置。

要初始化widgets环境,必须从根容器入手。

创建widgets后,应查看设备位图并使用其维度来设置容器约束。

然后,将widgets逐个添加到根容器中。

在此程序中,您将使用约束widgets,并通过设置每个widgets的约束来管理自己的widgets位置。

对于每个widgets(附示例),首先需要创建该widgets的实例:

nErr=ISHELL_CreateInstance(pMe->piShell,

AEECLSID_STATICWIDGET,(void**)&(pMe->piwTitle));

然后,根据需要对widgets加以修饰:

(void)IWIDGET_SetText(pMe->piwTitle,awchTitle,TRUE);

接下来,计算widgets的围(大小)并在widgets中对其进行设置。

//Setextent:

IWIDGET_GetPreferredExtent(pMe->piwTitle,&we);

if(we.width<(pMe->deviceInfo).cxScreen){

we.width=(pMe->deviceInfo).cxScreen;

}

IWIDGET_SetExtent(pMe->piwTitle,&we);

最后,将widgets添加到根容器中。

(void)IROOTCONTAINER_Insert(pMe->picRoot,pMe->piwTitle,

WIDGET_ZNORMAL,&dwpos);

6.在widget.c代码中找到以下注释行//DISCUSSP1_3。

切记,当调用FreeAppData()时,您将负责删除创建的所有类(例如调用CreateInstance()时)。

7.在widget.c代码中找到以下注释行//DISCUSSP1_4。

此处是响应向上和向下箭头以及更改根容器焦点的调用。

完成后,您可以返回TRUE以表示您已经处理该事件。

8.在widget.c代码中找到以下注释行//DISCUSSP1_5。

使用widgets时,您需要允许widgets基础结构来处理您未处理的事件。

练习2:

将静态文本widgets和文本widgets添加到应用程序

说明

本实验的目的是将两个新widgets添加到应用程序并添加一些代码,以便在按下“选择”键时将文本从现有文本widgets复制到新的静态文本widgets。

您将执行的操作

▪修改现有应用程序以支持静态文本widgets和文本widgets

▪测试修改后的应用程序

在本实验中,您将使用练习1中的应用程序并修改代码。

1.从提供的配套软件中打开本练习中使用的widgets项目。

2.从提供的配套软件中打开本练习中使用的AddedCode.c文件。

对于widgets项目中的每个//INSERT注释:

•阅读说明

•从AddedCode.c文件中复制/粘贴该代码

•在每次修改后保存更改

3.在widget.c代码中找到以下注释行//INSERTP2_1HERE。

要访问文本widgets的容,您需要添加头文件AEETextWidget.h

//StartP2_1

#include"AEETextWidget.h"

//EndP2_1

4.在widget.c代码中找到以下注释行//INSERTP2_2HERE。

您需要在Applet结构中定义两个新的widgets指针。

第一个widgets将保存并显示复制的文本。

第二个widgets保存标题。

//StartP2_2

IWidget*piwCopy;//TextCtlstatictextwidget.

IWidget*piwCpyTitle;//TextCtlstatictextwidget.

//EndP2_2

5.在widget.c代码中找到以下注释行//INSERTP2_3HERE。

以下是标题的文本。

//StartP2_3

staticconstAECHAR*awchCopyTitle=(AECHAR*)L"Thisistheoutput";

//EndP2_3

6.在widget.c代码中找到以下注释行//INSERTP2_4HERE。

这是将执行复制操作的过程的正向定义(代码位于INSERTP2_8步骤中)。

//StartP2_4

staticvoidwidgets_HandleCopy(widgets*pMe);

//EndP2_4

7.在widget.c代码中找到以下注释行//INSERTP2_5HERE。

您应在此处将widgets添加到根容器。

这与您之前对任何文本widgets所执行的操作相同。

请注意,静态文本widgets没有边框,而文本widgets有。

//StartP2_5

//Titlewidgetfortextoutput

nErr=ISHELL_CreateInstance(pMe->piShell,

AEECLSID_STATICWIDGET,

(void**)&(pMe->piwCpyTitle));

if(AEE_SUCCESS!

=nErr){

return(nErr);

}

(void)IWIDGET_SetFlags(pMe->piwCpyTitle,

IDF_ALIGN_LEFT|IDF_ALIGN_TOP);

(void)IWIDGET_SetText(pMe->piwCpyTitle,awchCopyTitle,

TRUE);

//Setextent:

IWIDGET_GetPreferredExtent(pMe->piwCpyTitle,&we);

we.width=(pMe->deviceInfo).cxScreen-we.width-2;

IWIDGET_SetExtent(pMe->piwCpyTitle,&we);

//Setlocation:

dwpos.x=0;

dwpos.y+=oldwe.height+7;

dwpos.bVisible=TRUE;

//Savetheextent:

oldwe=we;

//Insertwidgetintorootcontainer:

(void)IROOTCONTAINER_Insert(pMe->picRoot,

pMe->piwCpyTitle,WIDGET_ZNORMAL,&dwpos);

RELEASEIF(pMe->piwCpyTitle);

//Copywidget

nErr=ISHELL_CreateInstance(pMe->piShell,

AEECLSID_STATICWIDGET,(void**)&(pMe->piwCopy));

if(AEE_SUCCESS!

=nErr){

return(nErr);

}

//Setextent:

IWIDGET_GetPreferredExtent(pMe->piwCopy,&we);

we.width=(pMe->deviceInfo).cxScreen-2;

IWIDGET_SetExtent(pMe->piwCopy,&we);

//Setlocation:

dwpos.x=0;

dwpos.y+=oldwe.height+7;

dwpos.bVisible=TRUE;

//Savetheextent:

oldwe=we;

//Insertwidgetintorootcontainer:

(void)IROOTCONTAINER_Insert(pMe->picRoot,pMe->piwCopy,

WIDGET_ZNORMAL,&dwpos);

//EndP2_5

8.在widget.c代码中找到以下注释行//INSERTP2_6HERE。

调用FreeAppData()时,此代码将删除这两个新widgets。

//StartP2_6

RELEASEIF(pMe->piwCopy);

RELEASEIF(pMe->piwCpyTitle);

//EndP2_6

9.在widget.c代码中找到以下注释行//INSERTP2_7HERE。

应在此处添加代码,以处理按下“选择”键时会发生的情况。

这将调用INSERTP2_8中的一个函数来处理事件。

//StartP2_7

caseAVK_SELECT:

widgets_HandleCopy(pMe);

break;

//EndP2_7

10.在widget.c代码中找到以下注释行//INSERTP2_8HERE。

这是实际执行复制操作的代码。

它将调用IWidg

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1