




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于Qt+Linux平台的气象信息终端研究摘要:针对国家公共管理部门对气象信息的需求,设计了一种专业化的基于Qt平台的气象信息显示终端。该系统融合SMS短信技术、GPRS无线通讯技术、语音合成技术、LED显示技术、嵌入式Linux系统和Qt软件设计等技术,实现了远程气象信息接收,信息显示与语音播报功能。详细描述了系统任务要求、软硬件设计方案及基于Linux的LCD接口驱动。实验和使用表明:该终端信息内容显示清晰,通讯稳定性高,满足气象信息的获取。关键词:气象信息;嵌入式Linux;LED显示;LCD接口驱动Design of Meteorological Information Displa
2、y Terminal Based on Qt PlatformAbstract: Based on the national public administrations demandfor meteorological early warning, a specialized meteorological Information display terminal is designed. With interesting SMS technology , GPRS wireless communication technology, speech synthesis technology,
3、LED display technology, embedded Linux technology and Qt software designing technology, the system realizes receiving, displaying and broadcasting remote meteorological messages. The task requirement, hardware design, soft ideas and the LCD interface driver based on Linux are described in details. E
4、xperimental results show that the system displays images distinctly, communicates with the control center stably and meets the design requirement entirely.Key Words:meteorological information;embedded Linux; LED display; LCD Driver引言 由于现代自然环境的不断恶化,各种天气、地质等灾害越来越频繁。为了降低自然灾害的影响,如何将灾害信息和灾害预防知识及时的发布,是亟待解
5、决的问题。在现代条件下,虽然可以通过电视、广播、网络、手机短信等方式发布,但这些信息发布方式具有定时定点不够方便快捷、信息内容需要预先定制、信息传输时间滞后、覆盖人群有限等缺点。根据国家气象局“气象灾害预警系统”的整体规划,本文将现代信息服务技术与气象部门的实际需求紧密结合,融合SMS短信技术、GPRS无线通讯技术、3 网络技术、语音声讯技术、LED显示技术、嵌入式Linux系统和Qt软件设计等技术设计了一种专业化的气象信息显示终端。该终端的设计给出了基于Qt平台的系统软件设计和基于嵌入式Linux的LCD接口驱动设计。实验和应用表明:该系统通讯稳定可高,信息内容显示清晰,满足气象信息预测要求
6、。与传统的气象预警信息发布方式相比,这种依托LED显示技术的气象信息发布方式具有时效性强、覆盖面广、传输内容灵活,可控性强、信息多样化、信息符号显示明显和实用性强等优点,为各种气象信息的及时发布提供了一种新的专业化的途径。2相关知识和技术2.1 Linux简介Linux是个和Unix相似、以Unix核心为基础、完全内存保护、多任务多进程的操作系统。支持广发的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC等现有的大部分芯片。程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNU General Public License
7、)下发行(陈英和梁建武,2008),这样,开发人员可以对操作系统进行定制,再也不必担心像MS windows操作系统中"后门"的威胁。同时由于有GPL的控制,大家开发的东西大都相互兼容不会走向分裂之路。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)。其强大的语言编译器gcc、g+等也可以很容易得到。不但成
8、熟完善、而且使用方便,为嵌入操作系统提供了一个极有吸引力的选择。 Linux已经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。原型可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程。2.1.1 Linux主要特点1.符合POSIX 1003.1标准 POSIX 1003.1标准定义了一个最Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运Unix程序。考虑到Unix具有丰富的应用程序,当今绝大多数操作系统都把满足POSIX 1003.1标准作为实现目标,Linux也不例外,它完全支持POSIX 1003.1标准。另外,为了使
9、Unix System V和BSD上的程序能直接在Linux上运行,Linux还增加了部分System V和BSD的系统接口,使Linux成为一个完善的Unix程序开发系统。2. 支持多用户访问和多任务编程 Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。另外,Linux还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求。3.采用页式存储管理 页式存储管理使Linux能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。4. 支持动态链接 用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接
10、方式即在装配阶段就已将用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储空间的情况。Linux 支持动态链接方式,当运行时才进行库链接,如果所需要的库已被其它进程装入内存,则不必再装入,否则才从硬盘中将库调入。这样能保证内存中的库程序代码是唯一的。5.支持多种文件系统 Linux能支持多种文件系统。目前支持的文件系统有:EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系统是EXT2,它的文件名长度可达255字符,并且还
11、有许多特有的功能,使它比常规的Unix文件系统更加安全。 6.支持TCP/IP、SLIP和PPP 在Linux中,用户可以使用所有的网络服务,如网络文件系统、远程登录等。SLIP和PPP能支持串行线上的TCP/IP协议的使用,这意味着用户可用一个高速Modem通过电话线连入Internet网中2.1.2 Linux的优点(1)Linux可以随意地配置,不需要任何的许可证或商家的合作关系。 (2)它是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大量(3)它本身内置网络支持。 (4)Linux的高度模块化使添加部件非常容易。(5)Linux在台式机上的成功,使大家
12、看到了linux在嵌入式系统中的辉煌前景。嵌入式产品中选择什么样的操作系统极为重要,嵌入式Linux由于其开源特性、实时性好、可移植、内置网络支持等优点在嵌入式领域成为主力军。如今,业界已经达成共识:即嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 2.2 Qt开发工具简介 Qt是诺基亚开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的
13、基础。Qt也是流行的Linux桌面环境KDE 的基础。基本上,Qt 同X Window 上的Motif,Openwin,GTK 等图形界面库和Windows 平台上的MFC,OWL,VCL,ATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象、丰富的API、大量的开发文档等优点。 信号和槽机制是QT 的核心机制,要精通QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是QT 的核心特性,也是 QT 区别于其它工具包的重要地方。信号和槽是QT 自行定义的一种通信机制,它独立于标准的 C/C+ 语言,因此要正确的处理信号和槽,必须借助一个称为moc(Met
14、a Object Compiler)的QT 工具,该工具是一个C+ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。2.2.1 Qt主要特性(1)面向对象,很容易扩展,并且允许真正的组件编程;(2)Qt对各个模块进行了良好的封装,使各模块可重用性较好;(3)优良的跨平台特性,使用Qt类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台开发的难;(4)构件支持,对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽”的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。Qt的这些特点使它非常适合于真正
15、的构件编程,同时使各个组件之间的协同工作变得十分简单,并且Qt是直接基于Xlib的,不依赖Motif工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。2.2.2 Qt编程机制简介 (1)Qt系统的信号与槽机制简介 信号/槽机制是Qt的一个中心特征并且也许是Qt与其它工具包的最不相同的部分。在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。更一般地,我们希望任何一类的对象可以和其它对象进行通讯。 较老的工具包使用一种被称作回调的通讯方式来实现同一目的。回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些
16、事件,你可以把另一个函数(回调)的指针传递给处理函数。处理函数在适当的时候调用回调。回调有两个主要缺点。首先他们不是类型安全的。我们从来都不能确定处理函数使用了正确的参数来调用回调。因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。 Qt的信号与槽机制是不同的。Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。我们可以用
17、connect()函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。从某种意义上讲,它们也许对外面的世界感兴趣。这就是所有的对象通讯时所做的一切。它不知道也不注意无论有没有东西接收它所发射的信号。当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发射的信号也将返回。信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类。 信号和槽的机制是类型安全的:一个信号的签名必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以比它接收的信号的签名少,
18、因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。它以警告的方式报告类型错误,而不会使系统产生崩溃。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。 总体来看,信号和槽构成了一个强有力的组件编程机制。如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必
19、须加上Q_OBJECT宏。signals、slots和emit是Qt特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C+编译器。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个public slots:包含了任何信号都可以相连的槽。一个protected slots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。(2)Q
20、t元对象系统 Qt中的元对象系统是用来处理对象间通讯的信号/槽机制、运行时的类型信息和动态属性系统。它基于下列三类:QObject类、类声明中的私有段中的Q_OBJECT宏、元对象编译器(moc)。 moc读取C+源文件。如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C+源文件。这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。 除了提供对象间通讯的信号和槽机制之外,QObject中的元对象代码可以实现其它特征:
21、0;(1)className()函数在运行的时候以字符串返回类的名称,不需要C+编译器中的本地运行类型信息(RTTI)的支持。 (2)inherits()函数返回这个对象是否是一个继承于QObject继承树中一个特定类的类的实例。 (3)tr()和trUtf8()两个函数是用于国际化中的字符串翻译。 (4)setProperty()函数和property()函数,这两个函数是用来通过名称动态设置和获得对象属性的。 (5)metaObject()函数返回这个类所关联的元对象。虽然使用QObject
22、作为一个基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。根据元对象系统的观点,一个没有元代码的QObject的子类和它含有元对象代码的最近的祖先相同。举例来说就是,className()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。故强烈建议QObject 的所有子类使用Q_OBJECT宏,而不管它们是否实际使用了信号、槽和属性。3 气象终端总体构架设计4 SQLite数据库 SQLite 是一个开源的嵌入式关系数据库,它可以减少应用程序管理数据的开销,SQLite 可移植性好、很容易
23、使用、很小、高效而且可靠。目前在Android 系统中集成的是 SQLite3 版本,SQLite 不支持静态数据类型,而是使用列关系。这意味着它的数据类型不具有表列属性,而具有数据本身的属性。 当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则SQLite 会尝试将该值转换成列类型。如果不能转换,则该值将作为其本身具有的类型存储。SQLite 支持 NULL、INTEGER、REAL、TEXT和BLOB数据类型。例如:可以在 Integer 字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。但是有一种例外,如果你的主键是 INTE
24、GER ,那么只能存储64位整数,当向这种字段中保存除整数以外的数据时,将会产生错误。另外,SQLite 在解析REATE TABLE语句时,会忽略CREATE TABLE语句中跟在字段名后面的数据类型信息。4.1 SQLite数据库的模块分析 SQLite采用了模块的设计,它由三个子系统,包括8个独立的模块构成。 Interface B-TreeCompilerBackend PagerTokenizer OS InterfaceParser CoreCode GeneratorDatabaseVirtual Machine1. 接口(Interface) 接口由SQLite C API组成
25、,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的(我们通常用得较多的ODBC/JDBC最后也会转化为相应C API的调用)。 2.编译器(Compiler) 在编译器中,分词器(Tokenizer)和分析器(Parser)对SQL进行语法检查,然后把它转化为底层能更方便处理的分层的数据结构-语法树,然后把语法树传给代码生成器(code generator)进行处理。而代码生成器根据它生成一种针对SQLite的汇编代码,最后由虚拟机(Virtual Machine)执行。 3.虚拟机(Virtual Machine) 架构中最核心的部分是虚拟机,或者叫做虚拟数据库引擎(Virtual Database Engine,VDBE)。它和Java虚拟机相似,解释执行字节代码。VDBE的字节代码由128个操作码(opcodes)构成,它们主要集中在数据库操作。它的每一条指令都用来完成特定的数据库操作(比如打开一个表的游标)或者为这些操作栈空间的准备(比如压入参数)。总之,所有的这些指令都是为了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全球及中国急救医疗平板电脑行业市场发展分析及前景趋势与投资发展研究报告2025-2028版
- 全球及中国便民护理诊所行业市场发展现状及发展前景研究报告2025-2028版
- 中国黄粉胶木粉行业市场发展前景及发展趋势与投资战略研究报告2025-2028版
- 蒙古国植被生态变化研究
- 精子分析仪企业县域市场拓展与下沉战略研究报告
- 烘焙食材搭配行业跨境出海战略研究报告
- 炖牛肉小店行业跨境出海战略研究报告
- 智能文胸按摩器行业深度调研及发展战略咨询报告
- 盐酸尼莫司汀企业县域市场拓展与下沉战略研究报告
- 热带雨林秘境缆车行业跨境出海战略研究报告
- 激光武器简介
- 民事起诉状(股东资格确认纠纷)
- 基于交通冲突的信号交叉口交通安全评价研究论文设计
- 心理健康案例分析试题
- 铜螺母标准相关参考内容
- 八大作业票填写模板
- 2023年梅毒诊疗指南
- 挖掘机人员安全教育
- 非煤露天矿山安全确认牌
- GB/T 31349-2014节能量测量和验证技术要求中央空调系统
- GB/T 1470-2005铅及铅锑合金板
评论
0/150
提交评论