基于QT的模拟时钟设计毕业设计(DOC毕业设计论文).doc_第1页
基于QT的模拟时钟设计毕业设计(DOC毕业设计论文).doc_第2页
基于QT的模拟时钟设计毕业设计(DOC毕业设计论文).doc_第3页
基于QT的模拟时钟设计毕业设计(DOC毕业设计论文).doc_第4页
基于QT的模拟时钟设计毕业设计(DOC毕业设计论文).doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

上海电力学院本科毕业设计(论文)题目:基于Qt的模拟时钟的设计 院系:计算机与信息工程学院 专业年级:电子科学与技术2008级 学生姓名:刘唐辛学号:20072687 指导教师:金一鸣 2012年06月14日基于QT的模拟时钟的设计摘要图形用户界面(GUI)已经成为计算机系统、手持终端设备系统以及嵌入式设备系统的重要组成部分,是否具有良好的人机交互性已经成为决定系统设计好坏的重要因素。而在嵌入式手持设备中,对嵌入式终端的实用性、美观性和娱乐性提出了更高的要求,良好的人机交互界面已成为嵌入式系统设计的一个颇为重要和关键的技术。本文以采用qt程序开发框架开发的模拟时钟程序,成功实现了在嵌入式终端的运行,论证了qt 程序的跨平台的技术特点。文章首先论述了嵌入式linux的发展和前景以及与系统紧密相连的图形用户界面GUI,接着概要的讲述了qt编程技术及qtcreator开发工具,并简要介绍了硬件开发板mini2440、系统编程环境fedora。在程序的开发上,基于先设计后编写的原则,以模块化的方式完成各种功能设计之后,再进行代码编写实现功能。最后详细介绍了linux到嵌入式终端的移植和交叉编译环境的搭建,把遇到的问题及解决方法进行了精简的概述。关键词:嵌入式Linux ,QT,图形用户界面,模拟时钟,mini2440DESIGN OF ANALOG CLOCK BASED ON QTABSTRACTGraphical user interface(GUI) has become an important part of the system of computer,handheldterminals and embedded,Have a good human -computer interaction have become important factor in decision system design.And in embedded handheld devices,higher requirements in practical,beautiful and entertaining onembedded Terminal,good human-computer has been becoming a rather important and criticaltechnology in the design of interaction interface of embedded system.This article uses the analog clock program which bases on Qt application development framework to prove that Qt cross-platform technical features.First of all,the article deals with the development and prospects of embedded Linux,including the graphical user interface GUI which closes to above,went on to outline to you the Qt and qtcreator programming technology development tools,and provides an overview of hardware development board mini2440,Fedora systems programming environment.On the development of the program,based on the principle of designing before writing,after completing the various features designed in a modular manner,and then make the code to implement functionality.Final details on Linux to embedded Terminal porting and the building of cross - compilation environment ,problems encountered and solutions for the streamlining of overview。Key words: Embedded linux,Qt,GUI,Analog Clock,Mini2440目录1引言11.1设计背景11.2设计的目的和意义22嵌入式linux系统32.1嵌入式linux概念32.2嵌入式linux特点42.3嵌入式linux前景和应用52.4嵌入式系统组成63 基于Qt的GUI程序开发63.1图形用户界面GUI概念73.2图形用户界面GUI特点73.3图形用户界面GUI组成73.4 QT简介93.5 QT优点94软硬件环境104.1 min2440嵌入式开发板简介114.2 S3C2440芯片简介114.3 Fedora 概述144.4 Qt Creator概述145模拟时钟的设计与实现155.1模拟时钟功能设计155.2模拟时钟界面设计155.3代码的编写与编译155.3.1 模拟时钟功能和界面设计的实现165.3.2 模拟时钟的编译与运行195.4 嵌入式linux到开发板的移植205.4.1对Nand Flash进行分区215.4.2移植bootloader225.4.3移植linux内核235.4.4移植根文件系统245.5交叉编译环境的构建245.6模拟时钟到开发板的下载运行276结论29谢辞30参考文献31附录321引言随着用户要求的不断提高,越来越多的嵌入式设备使用功能强大、价格低廉的嵌入式 Linux作为操作系统并开始采用较为复杂的图形用户界面。Qt 以其强大的功能、良好的可移植性逐渐成为一种被广泛使用的GUI系统。正是由于嵌入式操作系统及其相应图形用户界面的不断发展,嵌入式软件的开发显得越来越重要。其中模拟时钟由于能够以美感的外观为用户提供时间信息逐渐成为了系统中的重要组成部分,在基于Qt的嵌入式系统中实现模拟时钟具有深刻的意义和实用价值。1.1 设计背景嵌入式产品的发展,往往要求嵌入式操作系统有网络和图形的功能。利用源代码开放的Linux搭建的嵌入式操作系统,由于强大的网络功能和低成本,近来得到了越来越多的应用。其能够提供全功能的桌面计算,定制非常方便并且支持大多数嵌入式系统上使用的芯片,包括Strong ARM,MIPS和Power PC等。在嵌入式Linux操作系统上使用一个功能完备的轻量级、高性能、高可靠、可配置的GUI系统成为可行的解决方案。全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现代化家庭起居,为嵌入式产品造就了崭新而巨大的商机。除了沟通信息高速公路的交换机、路由器和Modem,构建CIMS所需的DCS和机器人以及规模较大的家用汽车电子系统。最有量产效益和时代特征的嵌入式产品应数因特网上的信息家电(Internet Appliances),如Web可视电话、Web游戏机、Web PDA(电子商务、商务通)、WAP电话手机、以及多媒体产品,如STB(电视机顶盒)、DVD播放机、电子阅读机。以信息家电为代表的互联网时代嵌入式产品,不仅为嵌入式市场展现了美好前景,注入了新的生命;同时也对嵌入式系统技术,特别是软件技术提出新的挑战。这主要包括:支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理,此外,当然还需对付更加激烈的市场竞争。主要从以下几个方面体现出来:(1)嵌入式应用软件的开发需要强大的开发工具和操作系统的支持随着因特网技术的成熟、带宽的提高,ICP和ASP在网上提供的信息内容日趋丰富、应用项目多种多样。像电话手机、电话座机及电冰箱、微波炉等嵌入式电子设备的功能不再单一,电气结构也更为复杂。为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力;同时还采用实时多任务编程技术和交叉开发工具技术来控制功能复杂性,简化应用程序设计、保障软件质量和缩短开发周期。(2)联网成为必然趋势为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCP/IP协议簇软件支持;由于家用电器相互关联(如防盗报警,灯光能源控制,影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEE1394、USB、CAN、Bluetooth或IRDA通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML、WML等。(3)支持小型电子设备实现小尺寸、微功耗和低成本为满足这种特性,要求嵌入式产品设计者相应降低处理器的性能,限制内存容量和复用接口芯片。这就相应提高了对嵌入式软件设计技术要求。如,选用最佳的编程模型和不断改进算法。(4)提供精巧的多媒体人机界面嵌入式设备之所以为亿万用户乐于接受,重要因素之一是它们与使用者之间的亲和力,自然的人机交互界面,如司机操纵高度自动化的汽车主要还是通过习惯的方向盘、脚踏板和操纵杆。人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。手写文字输入、语音拨号上网,收发电子邮件以及彩色图形、图像已取得初步成效。1.2 设计的目的和意义虽然市场上现在已经有了众多的优秀的GUI应用软件,但随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部分应用软件在新环境下无法正常运行。如果舍弃原有软件而重新开发,将会耗费大量的人力和资金,而且浪费了许多成熟的软件成果。而QT在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。QT可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,这种技术称之为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。针对嵌入式产品的高度个性化,其外观、与用户交互的界面千差万别的特点,故而系统的设计目标是意在打造一个能在嵌入式终端运行、通用的、可以方便的支持各种控件、各种图形格式,具有体积小、可裁剪、可移植的这样一个面向嵌入式的应用程序系统,使各种嵌入式设备也同样能具有美观的用户界面,相对比较丰富的功能,操作起来简单而又直观3。本文通过对嵌入式Linux和QT的分析,在嵌入式QT的基础上,开发了面向嵌入式终端的模拟时钟应用软件。模拟时钟不仅能够精确的显示时间,还能够更换皮肤,装饰桌面环境。它体积小,移植方便,适用于掌上电脑、智能电话及一些高端的嵌入式设备中。此外它作为一种小型GUI解决方案,可用于那些对GUI大小要求苛刻的各种应用系统中。2嵌入式linux系统Linux从1991年问世到现在短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式系统的发展方向是与目标系统密切相关的嵌入性能、控制能力与控制的可靠性。嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后能够固化在容量只有几K或者几M字节的存储器芯片或者单片机中适合于特定嵌入式应用场合的专用Linux操作系统。嵌入式操作系统从它的产生到现在历经了几个阶段,嵌入式系统是以应用为中心以计算机技术为基础并且软硬件是可裁剪的适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。嵌入式系统最典型的特点是与人们的日常生活紧密相关,任何一个普通人都可能拥有各类形形色色运用了嵌入式技术的电子产品。小到MP3、PDA等微型数字化设备,大到信息家电、智能电器、车载GIS。各种新型嵌入式设备在数量上已经远远超过了通用计算机。2.1嵌入式linux概念嵌入式linux 是将标准Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。它以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。一个最小的嵌入式系统的基本组成为:一个用作引导的可用设施(工具);一个具备内存管理,进程管理和定时器服务的LINUX微内核;一个初始进程;硬件的驱动程序;一个或几个应用进程以提供必要的应用功效。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权费免费;全世界的自由软件开发者提供技术支持,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性、稳定性、安全性好。2.2嵌入式linux特点(1)模块化程度高Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分;其独特的模块机制可根据用户的需要,实时地将某些模块插入或从内核中移走,使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。(2)源码公开由于Linux系统的开发从一开始就与GNU项目紧密地结合起来,所以它的大多数组成部分都直接来自GNU项目。任何人、任何组织只要遵守GPL条款,就可以自由使用Linux 源代码,为用户提供了最大限度的自由度。这一点也正投嵌入式系统所好,因为嵌入式系统应用千差万别,设计者往往需要针对具体的应用对源码进行修改和优化,所以是否能获得源代码对于嵌入式系统的开发是至关重要的。加之Linux的软件资源十分丰富,每种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。这一切就使设计者在其基础之上进行二次开发变得非常容易。另外,由于Linux源代码公开,也使用户不用担心有“后闸”等安全隐患。同时,源码开放给各教育机构提供极大的方便,从而也促进了Linux的学习、推广和应用。(3)广泛的硬件支持Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多种体系结构的微处理器。目前已成功地移植到数十种硬件平台,几乎能运行在所有流行的处理器上。由于世界范围内有众多开发者在为Linux的扩充贡献力量,所以Linux有着异常丰富的驱动程序资源,支持各种主流硬件设各和最新的硬件技术,甚至可在没有存储管理单元MMU 的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。(4)安全性及可靠性好内核高效稳定。Linux内核的高效和稳定已在各个领域内得到了大量事实的验证。Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。(5)具有优秀的开发工具开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调试工具是在线仿真器(In Circuit Emulator,ICE),它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,从而使开发者能非常清楚地了解到程序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常高,而且只适合做非常底层的调试。如果使用的是嵌人式Linux,一旦软硬件能支持正常的串口功能,即使不用在线仿真器,也可以很好地进行开发和调试工作,从而节省了一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(Tool Chain),能够很方便地实现从操作系统到应用软件各个级别的调试。(6)有很好的网络支持利文件系统支持Linux从诞生之日起就与Internet密不可分,支持各种标准的Internet网络协议,提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Toker ring(令牌环网)、光纤甚至卫星的支持。并且很容易移植到嵌入式系统当中。目前,Linux几乎支持所有主流的网络硬件、网络协议和文件系统,因此它是NFS的一个很好的平台。另一方面,由于Linux有很好的文件系统支持(例如,它支持Ext2、FAT32、romfs等文件系统),是数据各份、同步和复制的良好平台,这些都为开发嵌入式系统应用打下了坚实的基础。(7)与UNIX完全兼容目前,在Linux中所包含的工具和实用程序,可以完成UNIX的所有主要功能12。2.3嵌入式linux前景和应用有巨大的市场前景和商业机会,出现了大量的专业公司和产品,如Montavista Lineo Emi等,有行业协会如Embedded Linux Consortum等,得到世界著名计算机公司和OEM板级厂商的支持,例如IBM Motorola Intel等。传统的嵌入式系统厂商也采用了Linux策略,如Lynxworks Windriver QNX等,还有Internet上的大量嵌入式Linux爱好者的支持。嵌入式Linux支持几乎所有的嵌入式CPU和被移植到几乎所有的嵌入式OEM板。应用领域非常广泛,其中,家电市场包括机顶盒、数字电视、可视电话、家庭网络等信息家电;工业市场包括工业控制设备、仪器;商用市场包括掌上电脑、瘦客户机、POS终端等;通信市场包括WAP手机、无线PDA等。目前被广泛看好的是信息家电市场,国内有很多开发厂商正加大投入、开发和研制新的产品,嵌入式LINUX将是他们首选的操作系统3。2.4嵌入式系统组成(1)硬件层硬件层中包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在一嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在中。中间层(2)中间层硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abstract Layer,HAL)或者板级支持包(Board Support Package,BSP),它半系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入工系统的硬件初始化的BSP功能,设计硬件相关的设备驱动。(3)系统软件层系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台4。3 基于Qt的GUI程序开发Qt采用一处编写,随处编译的方法支持开发跨平台的GUI应用程序。使用同一源代码和简单的重编译方式,可以为Windows98至Windows XP、Mac OS X、Linux、Solaris、HP-UX以及其他使用X11的Unix版本编写各种程序。此外,还可以编译在嵌入式Linux平台中运行的Qt应用程序。Qt引入了一种名为信号和槽的独特对象间通信机制。Qt还为2D和3D图形、国际化、SQL、XML、单元测试提供了卓越的跨平台支持,并为特定应用程序提供了针对具体平台的扩展5。3.1图形用户界面GUI概念图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。3.2图形用户界面GUI特点GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点6。3.3图形用户界面GUI组成(1)桌面在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。比如在微软公司的Windows XP系统中,各种用户的桌面内容实际保存在系统盘(默认为C盘):Documents and Settings用户名桌面文件夹里。墙纸,即桌面背景。可以设置为各种图片和各种附件,成为视觉美观的重要因素之一。(2)视窗应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。单一文件界面在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。多文件界面在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。(3)标签多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。上述中,多文件界面主要是微软视窗系统采用。而在其他环境中,通常多是单文件界面,所以无所谓单一/多文件界面的称呼问题。(4)菜单将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。即时菜单(又称功能表)与应用程序准备好的层次菜单不同,在菜单栏以外的地方,通过鼠标的第二按钮调出的菜单称为“即时菜单”。根据调出位置的不同,菜单内容即时变化,列出所指示的对象目前可以进行的操作。(5)图标显示在管理数据的应用程序中的数据,或者显示应用程序本身。数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。另外,点击数据的图标,一般可以之间完成启动相关应用程序以后再显示数据本身这两个步骤的工作。应用程序的图标只能用于启动应用程序。(6)按钮菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。应用程序中的按钮,通常可以代替菜单。一些使用程度高的命令,不必通过菜单一层层翻动才能调出,极大提高了工作效率。但是,各种用户使用的命令频率是不一样的,因此这种配置一般都是可以由用户自定义编辑78。3.4 QT简介Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程,支持windows、unix、嵌入式linux平台,有商业版和开原版,前者提供给商业软件开发。它们提供传统商业软件发行版并且提供在协议有效期内的免费升级和技术支持服务,后者仅仅为了开发自由和开放源码软件,提供了和商业版本同样的功能。GNU通用公共许可证下,它是免费的。3.5 QT优点(1)面向对象Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。(2)丰富的 APIQt包括多达 250 个以上的 C+ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理功能。(3)支持 2D/3D 图形渲染,支持 OpenGL。(4)大量的开发文档。(5)XML 支持。(6)Webkit 引擎的集成,可以实现本地界面与Web内容的无缝集成。(7)信号和槽信号和槽用于对象问的通讯。信号槽机制是QT的一个中心特征并且是QT与其它工具包的最不相同的部分。与其它工具包的最不相同的部分。的通讯方式来实现同一目的。回调是指一个函数的指针,所以如果希望一个处理函数通知一些事件,可以把另一个函数(回调)的指针传递给处理函数。处理函数在适当的时候调用回调。回调有两个主要缺点。首先它们不是类型安全的。从来都不能确定处理函数使用了正确的参数来调用回调。其次回调和处理函数是非常强有力地联系在一起的,因为处理函数必须知道要调用哪个回调。在QT中有一种可以替代回调的技术,使用信号和槽。当一个特定事件发生的时候,一个信号被发射。QT的窗口部件有很多预定义的信号,总是可以通过继承来加入自己的信号,槽就是一个可以被调用处理特定信号的函数。QT的窗口部件有很多预定义的槽,但是通常的习惯是可以加入自己的槽,这样就可以处理所感兴趣的信号。信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名)。因为签名是一致的,编译器就可以帮助检测类型不匹配。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。QT的信号和槽的机制可以保证如果把1个信号和1个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。从QObject类或者它的一个子类(比如QWidget类)继承的所有类可以包含信号和槽。当对象改变它们的状态的时候,信号被发送,从某种意义上讲,它们也许信号被发送,从某种意义上讲,它们也许通讯时所做的一切。它不知道也不注意无论有没有东西接收它所发射的信号。这就是真正的信息封装,并且确保对象可以用作一个软件组件。槽可以用来接收信号,但它们是正常的成员函数。一个槽不知道它是否被任意信号连接。此外,对象不知道关于这种通讯机制和能够被用作一个真正的软件组件。可以把许多信号和所希望的单一槽相连,并且一个信号也可以和所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的,这时,只要第一个信号被发射时,第二个信号立刻就被发射910。4软硬件环境任何程序都需要有开发工具以及其运行的软硬件环境。这一部分主要介绍了嵌入式开发板mini2440,初步开发的系统环境fedora以及开发工具Qt creator。4.1min2440嵌入式开发板简介Mini2440是一款真正低价实用的ARM9 开发板,是目前国内性价比最高的一款学习板;它采用Samsung S3C2440为微处理器,并采用专业稳定的CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。mini2440的PCB 采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产。通过对开发板Mini2440的学习,可以迅速掌握嵌入式Linux 和WinCE 开发的流程。4.2 S3C2440芯片简介本设计使用的硬件开发平台是S3C2440教学实验系统,FL2440 开发板采用核心板+底板的模式,核心板为6 层,底板为2 层。开发板的布局和走线经过专业人士精心设计,工作非常可靠,可稳定运行在400MHz。接口丰富,功能强大,适用于各种手持设备,消费电子和工业控制设备的开发。三星公司推出的这款16/32 位RISC 处理器S3C2440A,是面向高端手持设备或其它一般应用而设计的芯片。采用ARM920T 内核,其特点有低功耗,高速的处理计算能力。整体设计融合了MMU、AMBA BUS 和Harvard(哈佛)结构。具有独立的16KB 指令Cache 和16KB 数据Cache12。其内部结构框如图4-1:S3C2440体系结构:(1)为手持设备和通用嵌入式应用提供片上集成系统解决方案。(2) 16/32 位RISC 体系结构和ARM920T 内核最强大的指令集。(3) 增强的ARM 体系结构MMU 用于支持WinCE,EPOC32 和Linux。(4)指令高速存储缓冲器(ICache),数据高速存储缓冲器(DCache),写缓冲器和物理地址TAG RAM 减少主存带宽和响应性带来的影响。(5)采用ARM920T CPU 内核支持ARM 调试体系结构。(6)内部高级微控制总线(AMBA)体系结构(AMBA2。0,AHB/APB)。S3C2440系统管理器(1)支持大/小端模式。(2)支持快速总线模式和同步总线模式(3)寻址空间:每bank 128M 字节(总共1G 字节)。(4)支持可编程的每bank 8/16/32 位数据总线带宽。(5)从bank0 到bank6 都采用固定的bank 起始寻址。(6)bank7 具有可编程的bank 的起始地址和大小。(7)8 个存储器bank,其中6 个适用于ROM,SRAM 和其它,另外两个适用于ROM/SRAM和同步DRAM。(8)所有的存储器bank 都具有可编程的操作周期。(9)支持外部等待信号延长总线周期。(10)支持掉电时的SDRAM 自刷新模式。(11)支持各种型号的ROM 引导(NOR/NAND FLASH,EEPROM,或其它)。NAND FLASH 启动引导(12)支持从NAND FLASH 存储器的启动。(13)采用4KB 内部缓冲器进行启动引导。(14)支持启动之后NAND 存储器仍然作为外部存储器使用(15)支持高级NAND FLASHCache 存储器(1) 64 项全相连模式,采用ICache(16KB)和DCache(16KB)。(2)每行8 字长度,其中每行带有一个有效位和两个dirty 位。(3)伪随机数或轮转循环替代法。(4)采用写穿式(writethrough)或写回式(writeback)Cache 操作来更新主存储器。(5)写缓冲器可以保存16 个字的数据和4 个地址。图4-1 S3C2440 结构框图本次程序的开发使用的是linux的一个分支版本fedora,具体的内容为在fedora上安装qt开发工具qtcreator,然后进行模拟时钟的代码的编写和编译并调试成功,为程序到开发板上的移植做好准备。4.3 Fedora 概述Fedora 是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开放源码的软件和开放的标准。Fedora 项目由 Fedora 基金会管理和控制,得到了 Red Hat, Inc。的支持。Fedora 是一个独立的操作系统,是Linux的一个发行版,可运行的体系结构包括 x86(即i386-i686), x86_64 和 PowerPC。Fedora承继了Red Hat Linux的安装接口Anaconda、桌面环境(同时包含Gnome和KDE)、包管理器RPM、多国语系支持以及许多设置工具。 Fedora使用yum工具来协助RPM包的管理,可以有效避免相依性地狱(dependency hell)的问题,用户并可以利用yum来方便取得原先Fedora因专利权因素所缺乏的功能,例如:MP3播放支持、DVD影片支持以及NTFS文件系统支持等功能。4.4 Qt Creator概述Qt Creator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32位及64 位)、Mac OS X 以及 Windows。根据官方描述,Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,Qt Creator 包括项目生成向导、高级的 C+ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、图形化的 GDB 调试前端,集成 qmake 构建工具等。Qt Creator的特点如下:(1)使用强大的C+代码编辑器可快速编写代码:语言标识和代码完成功能;输入时进行静态代码校验以及提示样式;上下文相关的帮助;代码折叠;括号匹配和括号选择模式;高级编辑功能。(2)使用浏览器工具管理源代码:集成了领先的版本控制软件,包括Git、Perforce和Subversion;开放式文件,无需知晓确切的名称或位置;搜索类和文件;跨不同位置或文件沿用符号;在头文件和源文件,或在声明和定义之间切换。(3)为QT跨平台开发人员的需求而量身定制:集成了特定于QT的功能,如信号与槽;图示调试器,对QT类结构可一目了然;集成QT Designer可视化布局和格式构建器;只需单击一下就可生成和运行QT项目。(4)使用拖放功能快速设计用户界面;定制widget,或从标准widget库中选择widget;以本地外观快速预览格式。(5)通过界面原型生成C+或Java代码:将QT Designer与Visual Studio或Eclipse IDE配合使用;使用QT信号与槽机制构建功能齐全的用户界面11。5模拟时钟的设计与实现任何程序的开发都要从编写需求文档开始,鉴于此次设计有个人完成,所以直接从模块设计开始,把自己想要实现的功能、呈现的界面做一个详细规划、划分、关联,以下分别从功能和外观上进行模块的设计。5.1模拟时钟功能设计(1) 基本走时功能,调用系统时间,间隔一秒更新一次时间;(2) 皮肤更换功能,用不同的函数实现不同的显示,提供四种皮肤;(3) 透明功能,实现与桌面一定程度的融合;(4) 右键选项菜单功能,有退出、皮肤选项,允许快捷键操作;(5) 弹出窗口功能,与右键菜单相关联,以实现相应的功能;(6) 窗口拖动功能,去掉标题栏后,用函数重写鼠标时间,实现窗口的拖动。5.2模拟时钟界面设计(1) 底层窗口,正方形,用函数去掉标题栏;(2) 时钟界面,圆形,在底层窗口上用函数实现;(3) 右键菜单,关联到主界面,右键点击时弹出选择菜单;(4) 弹出窗口,关联到右键菜单,右键选择时弹出功能设置界面。5.3代码的编写与编译模拟时钟的功能和界面设计好后,就要用编写代码来实现各个模块的功能,然后对代码进行编译运行,检查是否达到了预期的效果。每一个模块的功能都是在cpp文件中实现的,h文件是类、槽、函数、变量的定义,main主函数用来调用显示,头文件和主函数的部分代码如下:Clock.h文件.public:void setTime(QTime &settime); /公有函数protected:int m; /保护变量private:QPushButton *pushButton_5; /私有对象private slots:void skinselect(); /私有槽.main主函数:.Clock clock; /定义一个对象Clock.show(); /调用显示.5.3.1 模拟时钟功能和界面设计的实现以下功能为在clcok.cpp文件中实现,有的类、函数、变量、槽已经在clock.h文件中定义。有些功能并不是孤立的,例如换肤功能画出的是时钟的边框,时钟界面里画出的只是时钟的三个指针,为了体现出模块化,也把他们进行了分割。(1)走时功能:模拟时钟走时为调用系统时间,用定时器每一秒钟更新一次draw函数,在表盘上显示为秒针跳动一格,由于始终与系统时间保持一致,所以完全可以作为直接的时间显示工具。流程如图5-1:图 5-1 走时流程图(2)换肤功能:换肤功能全部用函数实现,主要有画线函数drawline、画椭圆函数drawEllipse、画文本函数drawtext,本程序实现的4个皮肤,主要把以上三个函数组合使用,再设置不同的画笔、画刷的颜色。流程如图5-2:图5-2 换肤流程图(3)透明功能:透明功能可以在有特效的桌面完美的体现出来,可以与桌面环境实现一定程度的融合,用下面的函数实现setWindowOpacity(0.8); /设置透明度(4)右键菜单:用鼠标右键在模拟时钟界面点击,会弹出一个菜单,可以显示退出,皮肤设置功能。之所以把其他的功能以弹出菜单的形式实现,而不是直接嵌入到时钟界面里面,主要是为了外观的美感。流程如图5-3:图5-3 右键流程图(5)弹出窗口:本程序的弹出窗口即为皮肤设置窗口,窗口上设了不同皮肤的不同按键,简洁易操作。其中一个皮肤设置按钮的实现代码如下:.groupBox = new QGroupBox( ); /声明一个组合框groupBox-setGeometry(QRect(150,80,81,120); /设置组合框位置、大小pushButton_1 = new QPushButton(groupBox); /向组合框添加一个按钮pushButton_1-setObjectName(QString:fromUtf8(pushButton); /设置类名pushButton_1-setGeometry(QRect(10, 10, 61,21); /设置按钮位置、大小pushButton_1-setFlat(true); /去掉边框pushButton_1-setText(QApplication:translate(“clock”,”皮肤1”,0QApplication:UnicodeUTF8); /设置标签显示名称 connect(pushButton_1,SIGNAL(clicke

温馨提示

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

评论

0/150

提交评论