ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:40.56KB ,
资源ID:11733990      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11733990.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VRE实验7实验手册v30.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VRE实验7实验手册v30.docx

1、VRE实验7实验手册v30(项目七)手机应用开发IPSearch1、项目名称:项目名称:手机多媒体开发IPSearch课时安排:162、项目目标:IPSearch项目效果图如下:图7-1 IPSearch效果图功能:界面一是logo界面,3秒后跳转到界面二。界面二是查询界面,点击输入框位置可以输入IP地址,点击OK键得到查询结果,点击右软键退出程序。说明:学习VRE系统中的HTTP联网内容,完成这款IPSearch软件。通过本次实验让学员熟悉VRE平台程序架构、深入理解VRE的图形图像处理机制,掌握VRE发送HTTP网络请求的操作方法。(1) 熟悉VRE程序架构(2) 掌握VRE应用程序开发基

2、础(3) 深入理解VRE图形图像系统(4) 掌握VRE资源管理器的使用(5) 掌握VRE HTTP操作方法(6) 生成手机版本,打包安装到手机运行3、项目方式:(1) 老师带领下,每名同学独立完成该任务4、项目步骤4.1任务1:修改应用程序的图标和标题(时间:20分钟)4.1.1 任务描述(1) 修改应用程序的图标(2) 修改应用程序的标题4.1.2 任务目的(1) 熟悉VRE资源管理器及配置文件的使用(2) 掌握如何修改VRE应用程序的图标和标题4.1.3 任务要求(1) 编译生成手机版本,能在真机上正常运行。4.1.4 难点提示参考项目三任务一4.2任务2:界面设计及框架搭建(时间:20分

3、钟)4.2.1 任务描述(1) 设计程序UI界面(2) 实现UI框架部分4.2.2 任务目的(1) 进一步掌握框架(2) 掌握VRE GUI设计方法4.2.3 任务要求(1) 设计美观,合理(2) 能够在模拟器上正常运行4.2.4 难点提示(1) 参考界面如图7-1所示。(2) 框架搭建,首先在工程文件IPSearch_start.c的入口函数vm_main()中创建控制logo的定时器,在回调函数TimerCB()中实现logo界面的跳转。在draw_hello()中实现界面的绘制,根据界面标志位值的不同分别绘制相应的界面,参考代码如下:VMINT g_ViewFlag=0; /定义界面标识

4、符VMINT g_TimerHandle; /定义定时器句柄void vm_main(void) 。 g_TimerHandle=vm_create_timer(1000,TimerCB);。static void draw_hello(void) VMUINT8* buf; /* 获取目标缓冲 */ buf = vm_graphic_get_layer_buffer(layer_hdl0); /* 用白色黑底清屏 */ vm_graphic_fill_rect(buf, 0, 0, vm_graphic_get_screen_width(), vm_graphic_get_screen_he

5、ight(), VM_COLOR_WHITE, VM_COLOR_BLACK); switch(g_ViewFlag) case 0: draw_image(buf,logo.jpg,0,0); /显示logo界面 break; case 1: draw_image(buf,IP.png,0,0); /显示IP查询背景图片 draw_IPtext(buf); /绘制查询界面文字信息 break; default: break; void TimerCB(VMINT tid) g_ViewFlag+; /定时器刷新时界面跳转 if (g_ViewFlag=1) vm_delete_timer(g

6、_TimerHandle); /进入查询界面后删除定时器 handle_sysevt(VM_MSG_PAINT,0);4.3任务3:资源加载及UI界面绘制(时间:20分钟)4.3.1 任务描述(1) 加载程序所需的图片资源(2) 将资源导入到内存中(3) 显示界面图片4.3.2 任务目的(1) 掌握资源管理器的使用(2) 掌握图片资源的导入方法(3) 掌握图片的显示方法4.3.3 任务要求(1) 将导入并显示图片资源的功能实现方法封装成函数(2) 在模拟器上能正常运行(3) 以断点调试的方式保证结果的正确性4.3.4 难点提示(1) 资源导入功能,请参考项目三 任务、任务44.4任务4:网络连

7、接(时间:60分钟)4.4.1 任务描述(1) 发送HTTP联网请求(2) 获得网络返回的数据4.4.2 任务目的(1) 掌握VRE发送HTTP请求的操作步骤(2) 了解webxml获取数据的方法4.4.3 任务要求(1) 成功联网并获取返回数据(2) 实现所需功能,能在模拟器上正确运行(3) 生成手机版本,能够在手机上正常运行4.4.4 难点提示(1) 发送HTTP请求在工程文件IPSearch_start.c的http_request()函数中实现,网络连接的步骤为:定义网络连接方式、组装联网地址、创建报头指针空间、组装URL和HTTP请求头、发送联网请求,最后释放指针空间。参考代码如下:

8、#define IP_URL void http_request( VMSTR number) http_head_t g_head1; /创建HTTP报头 asyn_http_req_t g_reg; /定义联网方式 VMCHAR wURL128 = 0; VMINT ret; /定义网络连接方式 g_reg.req_method = GET; g_reg.use_proxy = HTTP_USE_CMNET; strcpy(wURL, IP_URL); strcat(wURL, number); /组装联网地址 /创建报头结构指针指向的空间 g_reg.http_request = (ht

9、tp_request_t*)vm_calloc( sizeof(http_request_t) ); if ( NULL = g_reg.http_request ) return ; /组装URL strcat( g_reg.http_request-url,wURL ); /组装HTTP请求头 sprintf( g_head0.name,RANGE ); sprintf( g_head0.value,bytes=-1 ); g_reg.http_request-nhead = 1; g_reg.http_request-heads = g_head; ret = vm_asyn_http_

10、req(&g_reg,http_hook_cb,http_state_cb); /释放HTTP指针的空间 vm_free(g_reg.http_request);(2) 联网后,在http_hook_cb()函数中接收网络返回数据,将信息保存到全局数组中,传给数据解析函数,进行结果解析。参考代码如下:void http_hook_cb( VMINT bResponse, void* pSession) VMUINT nWriteLen = 0; VMINT file_hdl; VMCHAR g_Info500=0; http_session_t* session = (http_session

11、_t*)pSession; if ( 0= bResponse ) /把返回的信息保存到数组中 if (g_Info!= NULL ) memset(g_Info,0,500); strncpy( g_Info,session-resbody,session-nresbody ); /把联网返回的结果传给数据解析函数 g_show_info=http_result_parse(g_Info); handle_sysevt(VM_MSG_PAINT, 0); 4.5任务5:数据解析(时间: 70分钟)4.5.1 任务描述(1) 解析网络返回数据,获取IP地址信息4.5.2 任务目的(1) 熟悉X

12、ML文件(2) 掌握XML文件的解析方法4.5.3 任务要求(1) 成功解析得到IP地址信息4.5.4 难点提示(1) XML文件的解析在工程文件IPSearch_start.c的http_result_parse()函数中实现,数据解析中需要查找到XML文件中第二个和字符串所在的位置,两个字符串中间的内容即是要获取的结果。实现参考代码如下:/网络返回的xml数据的格式ArrayOfString xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xmlns:xsd=http:/www.w3.org/2001/XMLSchema xmlns=h

13、ttp:/WebX152.45.25.5 美国 /数据解析函数VMINT http_result_parse(VMSTR resbody) VMINT nSize = 0; VMINT i = 0; VMCHAR szStart = ; VMCHAR szEnd = ; VMCHAR chTemp2 = ; VMSTR pFileTemp1 = NULL; if(resbody = NULL) return 0; /查找地址信息所在位置 pFileTemp1 = strstr(resbody, szStart); pFileTemp1 = strstr(pFileTemp1+1, szStar

14、t); if(pFileTemp1) i+=8; while(1) if(pFileTemp1i = ) break; chTemp0 = pFileTemp1i+; strcat(g_Result, chTemp); return 1;4.6任务6:结果显示(时间:20分钟)4.6.1 任务描述(1) 将解析后的结果显示到屏幕上4.6.2 任务目的(1) 熟悉字符的编码转换(2) 熟练掌握文字的输出4.6.3 任务要求(1) 将获取到的UTF-8格式的字符转化成UCS-2格式的显示(2) 在模拟器上能正常运行(3) 以断点调试的方式保证结果的正确性4.6.4 难点提示(1) 成功获取查询结果

15、后,最后一步工作是结果显示,由于VRE手机只支持显示UCS-2格式的字符,所以首先需要调用UTF8toUCS2Code()函数进行字符转码,该函数定义在工程文件IPSearch_start.c中,实现参考代码如下:VMINT UTF8toUCS2Code(VMUINT8* utf8_code, VMUINT16* ucs2_code) VMUINT16 temp1, temp2; VMINT is_unrecognized = FALSE ; VMUINT step = 1,counter = 0, end = 0; VMUINT8* utf8string= utf8_code; if(!ut

16、f8_code | !ucs2_code) return 0; end = strlen(char *)utf8_code); while(counter end + 1) if(0x00 = (*utf8string & 0x80) /* 1 byte UTF-8 Charater.*/ temp1 = *(VMUINT8 *)(utf8string); wstrcpy(VMWCHAR *)ucs2_code+, (VMWCHAR *)&temp1); step = 1; counter += step; utf8string += step; is_unrecognized = TRUE;

17、 else if(0xc0 = (*utf8string & 0xe0) & 0x80 = (*(utf8string + 1) & 0xc0) ) /* 2 bytes UTF-8 Charater.*/ temp1 = (VMUINT16)(*utf8string & 0x1f); temp1 = 6; temp1 |= (VMUINT16)(*(utf8string + 1) & 0x3f); step = 2; counter += step; utf8string += step; wstrcpy(VMWCHAR *)ucs2_code+, (VMWCHAR *)(&temp1);

18、is_unrecognized = TRUE; else if( 0xe0 = (*utf8string & 0xf0) & 0x80 = (*(utf8string +1) & 0xc0) & 0x80 = (*(utf8string + 2) & 0xc0) ) /* 3bytes UTF-8 Charater.*/ temp1 = (VMUINT16)(*utf8string &0x0f); temp1 = 12; temp2 = (VMUINT16)(*(utf8string+1) & 0x3F); temp2 = 6; temp1 = temp1 | temp2 | (VMUINT1

19、6)(*(utf8string+2) & 0x3F); step = 3; counter += step; utf8string += step; wstrcpy(VMWCHAR *)ucs2_code+, (VMWCHAR *)(&temp1); is_unrecognized = TRUE; else temp1 = *(VMUINT8 *)(utf8string); wstrcpy(VMWCHAR *)ucs2_code+, (VMWCHAR *)&temp1); is_unrecognized = TRUE; utf8string +; counter +; return is_un

20、recognized;(2) 转码后,在draw_IPtext()函数中完成结果显示,当全局标志位g_show_info的值为1时,表示结果解析成功,则显示结果,否则返回。实现参考代码如下:VMINT g_show_info=0;VMCHAR g_Result500=0;void draw_IPtext(VMUINT8* buf) VMWCHAR s100=0; if (g_show_info=1) UTF8toUCS2Code(g_Result,s); vm_graphic_textout(buf,50,130,s,wstrlen(s), VM_COLOR_BLUE); if (0=g_sh

21、ow_info) return; 4.7项目扩展4.7.1 要求(1) 仿照IPSearch软件,做一个QQ是否在线查询的软件4.7.2 实现思路(1) 利用www. 提供的开放接口,仿照上述开发过程实现(2) QQ在线查询的URL为:“ webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=”5、项目总结报告项目总结报告项目名称开发环境配置与搭建项目组成员完成情况全部完成 大部分完成少部分完成 没有思路自我评分代码规范度项目中遇到的主要问题及解决办法项目体会自我评定修改应用程序的图标和标题界面设计及框架搭建资源加载及UI界面绘制网络连接数据解析结果显示

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

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