1、基于Arm-Linux平台的模拟手机设计摘要随着社会的发展,人们的通讯方式越来越多,不仅仅是写信,发邮件,上网。手机的流行已成为了一种趋势。同时手机的普及也给人们的生活带来了很多的便利,如:可以随时随地连接英特网,可以随时和朋友,亲人联系,同时还能拍照,听歌,看文档。同时也兼有计算器,手表,相机的功能。基于Arm-Linux平台的模拟手机设计从理论上来说具备基本的手机功能,能进行通话,电话本管理,信息管理,MP3、MP4功能,具备记事本,计算器,图片查看,号码归属地查询等小功能,同是还能连接英特网,实现了简单的游戏,特别的是此系统能实现跨平台运行,可以交叉编译。如果能烧入开发板上面,将能够和手
2、机媲美。同时它能运行在ARM9,ARM11等开发板上面,进行一系列的模拟实验。关键词:Arm-Linux平台;模拟手机设计;ARM9;ARM11AbstractWith the development of society, peoples communication mode is more and more, just write, email, Internet access. The popular mobile phone has become a trend. Meanwhile the popularity of cell phone also give people life
3、brought a lot of convenience, such as: connect the Internet can at any time anywhere, can at any time and friends, family contact, but also photos, music, see documents. Also with calculator, watches, the camera functions.Based on the Arm - Linux platform from theory for analog phones have the basic
4、 design of the mobile communication function, can this management, telephone, information management, MP3, MP4 functionality, have notepad, calculator, picture viewer, number where inquiry on small function, is also can connect with the Internet, realized simple game, special is the system can reali
5、ze cross-platform operation, can cross-compiling. If can spread on development board, will be able to and cell phone rival. At the same time it can run on ARM9, such as ARM11 above development board, carries on a series of simulation experiment.Key words: arm-linux platform; analog phone design; arm
6、9; arm11II目 录摘要IAbstractII第1章绪论11.1引言11.2课题背景11.3研究方法21.4论文结构说明2第2章需求分析42.1系统功能分析42.2可行性分析4第3章概要设计63.1系统目标63.2系统模块图63.3系统功能流程图7第4章数据库设计84.1数据库需求分析84.2数据库概要设计84.3数据库物理设计10第5章系统详细设计115.1登录详细设计115.2通讯管理功能详细设计135.3情景设置145.4多媒体175.5小工具185.6英特网,地图搜索235.7娱乐235.8我的收藏255.9客户服务26第6章环境搭建及调试286.1开发环境286.2环境的配置2
7、8第7章开发技术、平台简介317.1开发技术简介317.2开发平台简介33第8章总结及展望35主要参考资料36致谢37基于Arm-Linux平台的模拟手机设计 第1章 绪论 第1章 绪论1.1 引言手机的质量是一个手机厂商的生命线,如果没有一个让人们用着放心,用着满意的手机质量,那么这个手机厂商将无立身之地。当然这里所说的手机质量包括硬件和软件两方面。因此,提高手机的质量是一个手机厂商的重中之重。基于Arm-Linux平台的模拟手机设计从理论上来说具备手机的基本功能。同时此系统能实现跨平台运行,可以交叉编译。同是也能在开发板上进行一系列的模拟实验。1.2 课题背景1.2.1 国外研究现状目前,
8、全球手机厂商的竞争已是异常的激烈,然而拥有一个好的手机操作系统已成为各大厂商的首选。根据市场调查公司Ovum表示,手机制造商陆续采用含有先进的图形与影音处理能力 高效能硬件,逐渐从ARM-11系列处理器过度到ARM Cortex A8,且Qualcomm(高通)Snapdragon芯片也正在紧锣密鼓的筹备中。相对于Symbian和Windows Mobile,现状登场的Android要更显年轻。Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟Open Handset Alliance开发。它采用了软件堆层的架构,主要分为三部分。低层以Linux内
9、核工作为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分1.2.2 国内研究现状国内手机市场热点频涌,产销量迈上新的台阶。彩屏手机、彩信手机、智能手机已逐渐成为市场主流,高像素照相手机、运营商定制手机、双模双卡手机开始纷纷登台亮相。与此同时,国内手机产销量经过二季度的短暂徘徊,三季度又出现恢复性增长,目前已占得全球三分天下。随着国外手机系统的出现,中国移动OMS智能系统应运而生,OMS是中国移动深度定制的手机操作系统,该系统是基于Linux内核、采用Android源代码进行重新开发的一套系统,在用户界面以及功能上与此前的Google手机有很大不同。在功能方
10、面,OMS深度集合了中国移动现有的各项业务,包括飞信、快讯、139邮箱、移动梦网等数据服务。在用户体验方面,OMS同样也汲取了iPhone,Android,Black Berry等多种移动终端的优势,并结合中国人自己的行为习惯和喜好方式,设计出了完全区别于Android的用户界面,其最大的特点就是采用大屏触摸式设计风格。1.3 研究方法广泛搜集研究资料,参考国内手机系统设计的成果,分析他人的设计方法和思想,对该系统的工作模式及其体系结构进行探讨,对系统进行概要设计。认真请教导师,在导师的指导下利用在大学所学的知识认真仔细做好需求分析,做好详细设计的准备。应用相关的理论、技术编码,如Sqlite
11、数据库理论,C+语法,Qt界面布局,交叉编译。最后运用构建知识将程序移植到mini2440上进行测试,并优化性能。开发过程中主要用到的开发工具有QT Creator4.6,ARM9,超级终端,设备驱动等。该系统预期实现的功能有:登陆功能,通信录管理,通话记录,信息服务,情景设置,多媒体,小工具,娱乐,客户服务,谷歌地图。1.4 论文结构说明本文从软件开发的角度并结合详细的图示和相关关键代码阐述了关于开发基于Arm-Linux平台的模拟手机设计的背景、意义、系统的需求分析,概要设计,详细设计,并对数据库进行了分析,从数据库的用户需求,概要设计,E-R图设计,逻辑设计,物理设计,都进行了详细的阐述
12、。一个好的软件开发过程是漫长的,本系统从设计到完成编码用了差不多三个月的时间,由于本人软件工程知识理解有限,难免会在使用的过程中产生开发过程中隐藏的问题,本文提供了该软件的基本运行,测试环境的搭建和调试方法,并提供了相关说明。由于作者水平和经验的限制,加之编写时间仓促,本文可能存在不当之处,敬请批评指正。38基于Arm-Linux平台的模拟手机设计 第2章 需求分析 第2章 需求分析2.1 系统功能分析基于Arm-Linux平台的模拟手机设计系统统过给定的密码登录页面进行操作。登录判定上首次基于数据库验证。使用者可以在登录成功后对密码进行修改,并同时可以选择进行一系列操作,通话记录,信息服务,
13、情景设置,多媒体,小工具,娱乐,客户服务。该系统的功能需求可归纳为:1. 用户通过密码进入主功能模块;2. 实现电话薄的基本管理;3. 记录本地的通话情况;4. 五子棋小游戏的简单实现;5. 背景,语言,时间的简单设置;6. 媒体播放器的简单实现;7. 计算器,记事本,系统实时监控,号码归属地查询,货币兑换等小工具的使用;8. 浏览器的实现;9. 简单客户信息的查看;2.2 可行性分析2.2.1 技术可行性分析根据自己四年所掌握的知识,熟练掌握的语言有:C , C+,Linux C,同事具备对数据库的基本使用能力,能用Sql, Mysql, Sqlite,进行程序开发。同时,对嵌入式进行过系统
14、的学习,懂得汇编语言,交叉编译,文件系统配置,驱动移植,并且能熟练运用QT进行程序开发。QT 是一个跨平台应用程序和 UI 开发框架。使用 QT 您只要一次性开发应用程序,无需重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序,Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根据官方描述,Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务综上所述,技术上开发条件
15、具备。2.2.2 经济可行性分析本系统的开发成本包括开发时间、软件、硬件。开发时间为三个月,由本人利用毕业设计的时间完成。软件成本为现有软件,已经网上找到的免费开发工具。完全可以胜任开发要求。硬件成本是已有的一台笔记本电脑,相关现有的外围设备,当然,演示的时候可能不能进行实践的操作。开发本系统的经济条件基本具备,可以开发。基于Arm-Linux平台的模拟手机设计 第3章概要设计 第3章 概要设计3.1 系统目标基于Arm-Linux平台的模拟手机设计,能进行简单的手机功能,通过这个系统,能进行通话,休闲,娱乐,学习等基本功能。3.2 系统模块图通过需求分析可得到模拟手机设计系统的模块由九大部分
16、构成,它们分别是登录模块、通讯管理、通话记录、信息服务、情景设置、多媒体、小工具、娱乐、客户服务。功能模块图如图3.1所示。模拟手机互联网信息服务情景设置多 媒体小工具登陆通讯管理娱乐客户服务图 3.1 系统模块图3.3 系统功能流程图开 始开 机成功失败互联网信息服务情景设置多 媒体小工具通讯管理娱乐客户服务图 3.2 系统功能流程图基于Arm-Linux平台的模拟手机设计 第4章数据库设计 第4章 数据库设计4.1 数据库需求分析数据库需求分析就是要了解在这个系统中,用户需要查询、更新、删除和保存哪些数据,收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打
17、下基础8。4.2 数据库概要设计概念设计是整个数据库设计的关键。它的目的是将需求说明书中关于数据的需求,综合为一个统一的DBMS概念模型。首先根据单个应用的需求,画出能反映每一应用需求的局部E-R模型。然后将这些E-R模型图合并起来,消除冗余和可能存在的矛盾,得出系统总体的E-R模型。E-R图(Entity-Relationship图,实体-关系图)是由P.P.Chen于1976年首先提出。它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。E-R数据模型问世后,经历了许多修改和扩充。E-R模型的构成成分是实体集、属性和联系集,其表示方法如下:1. 实体集用
18、矩形框表示,矩形框内写上实体名。2. 实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。3. 实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即11、1M或MM。本系统中的实体以及实体的属性如图4.1-图4.4所基于Arm-Linux平台的模拟手机设计 第4章数据库设计 用 户 IDPass图4.1 用户通讯者IDNamePhoneNInfo图4.2 通讯人号码ID索引归属地图4.3 号码短信IDRSName号码内容图4.4 短信4.3 数据库物理设计本系统采用QT里面自带的一种小数据
19、库,不需要另外再去安装。具体部分实现如下:QSqlDatabase db; /创建数据库对象 db = QSqlDatabase:addDatabase(QSQLITE); /设置数炤库类型db.setDatabaseName(info.db); /设置数据库的名字QSqlQuery query; /声明一个对象 query.exec(create table password(id int primary key, pass varchar(6); /建表query.exec(insert into password values(1, 123); /插入数据query1.exec(sele
20、ct * from password); /查询stModel = new QSqlTableModel(this, db); /创建数据模型 stModel-setTable(peoples); /模型关联students表stModel-setEditStrategy(QSqlTableModel:OnManualSubmit); /设置模型编辑策略 stModel-select(); /执行默认查询ui-viewInfo-setModel(stModel); / viewInfo 关联模型stModel-insertRow(dwMapper-currentIndex() + 1); /增
21、stModel-removeRow(dwMapper-currentIndex(); /删除dwMapper-submit();stModel-submitAll(); /修改基于Arm-Linux平台的模拟手机设计 第5章系统详细设计 第5章 系统详细设计5.1 登录详细设计5.1.1 登录流程本系统登录流程如图5.1所示。开始输入PIN验证登陆 成功YN图5.1登录流程5.1.2 登录页面登录代码设计/密码匹配 while(query1.next() if(strcmp(query1.value(1).toString().toLocal8Bit().data(), pass.toAsci
22、i().data() = 0) spass = ; pass = ;Menu *m = new Menu(this); this-hide(); m-setWindowFlags(Qt:Window|Qt:FramelessWindowHint); m-show(); else QMessageBox:warning(this, Error, 密码不对!); return;/将密码转换成*显示if(strlen(pass.toAscii().data() - strlen(ui-lineEdit-text().toAscii().data()!= 0) for(int num = 0; num
23、 lineEdit-text().toAscii().data(); num+) if(ui-lineEdit-text().toAscii().data()num != *) pass.append(ui-lineEdit-text().toAscii().data()num); spass.append(*); ui-lineEdit-setText(spass); 登陆界面: 图5.2 登录设计5.2 通讯录管理功能详细设计5.2.1 通讯录管理的流程图显示所有人显示成功YN增加查询删除姓名查找号码查找图5.3 通讯录管理流程5.2.2 通讯录管理的设计 部分代码设计: QString
24、name = ui-lineEditName-text();QSqlDatabase db;if(!db.isOpen() db = QSqlDatabase:addDatabase(QSQLITE); / 设置数据库类型 db.setDatabaseName(info.db); / 设置数据库名 if(!db.open() QMessageBox:warning(this, Error, 打开失败!); return; QSqlQuery query;if(!query.exec(select * from peoples) QMessageBox:information(this, 提示,
25、 query.lastError().text(); while(query.next() query.value(0).toString().toLocal8Bit().data(); if( !strcmp(name, query.value(1).toString().toLocal8Bit().data() ) ui-lineEditNum-setText(query.value(2).toString(); ui-lineEditOther-setText(query.value(3).toString(); flag = false; break; 通讯录管理的部分界面: 图5.4
26、 通讯录管理页面设计5.3 情景设置5.3.1 语言设置目前设置了2中语言的转换:中、英文,将来可能添加多语言。语言设置的过程是:1. 在工程中 .pro 中添加 translations = MyPhone_ch.ts (ts前面的名字可以不同);2. 通过终端进入项目的目录 执行lupdate .pro 命令 (这时,MyPhone_ch.ts中内容更新了,被tr()标注的字符串被提取出来了);3. 执行 linguistMyPhone_ch.ts,进行编辑,对提取的每个串进行翻译,也就是键入对应字串。在左边面板中列出所有可供翻译的字串,单击之,右边编辑区会显示出来;4. 在“File”菜
27、单下,单击Release项,这会生成我们需要的.qm文件; 语言设置的部分代码:QTranslator translator(this); /声明一个翻译类的对象translator.load(Myphone_ch,.); /将配置文件加载进来qApp-installTranslator(&translator); /在所有界面插入配置文件语言设置的界面: 图5.5 语言切换界面 5.3.2 背景设置背景设置就是皮肤设置,借用css 的灵感, Qt也支持Qt自己的css, 简称qss。同css 相似,qss的主要功能与最终目的都是能使界面的表现与界面的元素分离,即质与形的分离,就如同一个人可以
28、在不同的时候穿上不同的衣服一样,css机制的引入,使得设计一种皮肤与界面控件分离的软件成为可能,应用程序也能像web界面那样随意地改变外观。详细内容请参考: 。Qss的简单使用: QFile qss1(test.qss);qss1.open(QFile:ReadOnly);qApp-setStyleSheet(qss1.readAll(); qss1.close();5.3.3 日期查询 图5.6 日期查询5.3.4 开机PIN密码的设置 图5.7 PIN的设置5.4 多媒体5.4.1 本系统支持视频,音频的播放,具体部分实现如下:mObject = new Phonon:MediaObjec
29、t(this); aOutput = new Phonon:AudioOutput(Phonon:MusicCategory, this); /音频 vWidget = new Phonon:VideoWidget(ui-frameVideo); /视频 vWidget-setAspectRatio(Phonon:VideoWidget:AspectRatioAuto); /让解码器找到长宽比从媒体文件自动(这是默认的) vWidget-setScaleMode(Phonon:VideoWidget:FitInView); /这个录像将安装角度来填补保持长宽比 sSlider = new Ph
30、onon:SeekSlider(ui-frameProcessVideo); vSlider = new Phonon:VolumeSlider(ui-frameProcessListen); /声音进度条 Phonon:createPath(mObject, aOutput); Phonon:createPath(mObject, vWidget); /关联视频与 mObject对象 sSlider-setMediaObject(mObject); /播放进度条与播放位置关联 vSlider-setAudioOutput(aOutput); /声音进度条与音频关联 sSlider-setMi
31、nimumWidth(ui-frameProcessVideo-width(); /设置长度 播放进度条 vSlider-setMinimumWidth(ui-frameProcessListen-width(); /设置长度 音量大小进度条5.4.2 实现的界面: 图5.8 视频播放5.5 小工具5.5.1 计算器支持普通的数学运算功能,能进行 +,-, *、 %。同时还能进行二进制,十进制,十六进制的转换。计算器的部分代码如下:/以下是转换为二进制的部分代码:if(T_D_H = 10) /当前是十进制 number = ui-txtEdit-text().toDouble(); numb
32、er1 = (int)number; pnumber = number - number1; while(number1) listt+= number1%2; number1 /= 2; t-; while(t != -1) switch(listt) t-; if(pnumber != 0.0) /当前的十进制有小数部分 int pn = 3; temp.append(.); while(pn-) else if(T_D_H = 16) /当前是十六进制 strcpy(clist,ui-txtEdit-text().toLocal8Bit().data(); for(int t = 0 ;
33、 t txtEdit-setText(temp);T_D_H = 2;/以下是转换为十六进制的部分代码if(T_D_H = 2) else if(T_D_H = 10) j = 1; num = int(ui-txtEdit-text().toLocal8Bit().toDouble(); for(i = 0; ;i+) if(num % 16 9) switch(num%16) else clisti = (num % 16) + 40; num /= 16; if(num 9) switch(num) else clist+i = num + 40; break; QString hlis
34、t; for(;i -1;i-) hlist.append(clisti); ui-txtEdit-setText(hlist);T_D_H = 16; 计算器的运行界面: 图5.9 计算器5.5.2 系统监控这部分主要是模拟监控系统当前的参数,比如温度,信号强弱。部分代码如下:/设置画布背景ui-frameShow-setMaximumSize(VIEW_WIDTH+20,VIEW_HEIGHT+20); ui-frameShow-setMinimumSize(VIEW_WIDTH+20,VIEW_HEIGHT+20);scene = new QGraphicsScene(this);sce
35、neX = new QGraphicsScene(this);sceneY = new QGraphicsScene(this);ui-gvShow-setScene(scene);ui-gvShowX-setScene(sceneX);ui-gvShowY-setScene(sceneY);/设置画笔QPen pen(Qt:blue);sceneX-addLine(-VIEW_WIDTH/2+10, 10, VIEW_WIDTH/2-40, 10, pen);sceneY-addLine(10,-VIEW_HEIGHT/2+30,10,VIEW_HEIGHT/2-40, pen);/计时器t
36、imer = new QTimer(this);connect(timer,SIGNAL(timeout(),this,SLOT(DrawInfo(); /通过槽函数触发timer-start(1000); /更新时间为1秒timer1 = new QTimer(this);connect(timer,SIGNAL(timeout(),this,SLOT(DrawInfo1();timer1-start(1000);运行效果图: 图5.10 系统监控5.5.3 记事本使用者可以查看当前目录下的文本文件。部分代码如下: /将当前的工作目录放到赋值到buff path = getcwd(buff,
37、 sizeof(buff); QDir dir; dir.setPath(path + /mynotebook/); dir.cd(.); QStringList str; str listWidget-clear();/为了文件的读写提供接口 QTextStream in(&pathfile); QString lines = in.readAll(); pathfile.close(); Readnotebook *rn = new Readnotebook(this); this-close(); rn-setWindowFlags(Qt:Window | Qt:FramelessWin
38、dowHint); rn-show();rn-showText(filename, lines);记事本界面: 图5.11 记事本5.5.4 归属地查询,货币兑换通过对数据库里面的内容进行操作,查询出当前输入的号码的归属地。货币兑换完成的是人民币和美元,欧元的转换。5.6 英特网,地图搜索实现了互联网功能,也可以说是一个简单的浏览器。通过Qt下的 QWebView 类来加载一个地址。运行界面: 图5.12 浏览器5.7 娱乐 实现了简单的五子棋游戏(五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性)。 实现的部分代码:/人机对战if(arrij = 0) arrij = 1; /白方下了一个子 item-setIcon(QIcon(QPixmap(:/pic/b.png); ui-tableWidget-setItem(i, j, item); count+; ui-lineEdit-setText(QString:number(count); numrand = qran