




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统设计与应用基于ARMCortex-A8和Linux第九章与第十章
嵌入式系统高级应用第九章与第十章嵌入式系统高级应用第九章、QT图形界面应用程序开发基础QT/QT和SQLite第十章、嵌入式数据库嵌入式数据库系统结构/SQLite关键技术VDBE/SQLite安装与接口测试第9章QT图形界面应用程序开发基础与普通GUI不同的是,嵌入式GUI的要求是轻量级的,如在嵌入式linux中使用的图形界面系统。同时嵌入式GUI还具有可定制,高可靠性,可裁减性等特点。嵌入式GUI的开发系统主要有XWindow、MiniGUI、OpenGL、Qt等。按不同的版本发行:Qt商业版:提供给商业软件开发。它们提供传统商业软件发行版并且提供在协议有效期内的免费升级和技术支持服务。Qt开源版:仅仅为了开发自由和开放源码软件,提供了和商业版本同样的功能。GNU通用公共许可证下,它是免费的。2009年3月发布的Qt4.5起,诺基亚为Qt增添开源LGPL授权选择。QtQt是一个跨平台应用程序和图形用户界面GUI开发框架。使用Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。信号与插槽机制信号和插槽用于两个对象之间的通信,信号和插槽(signal/slot)机制是Qt的核心特征,信号和插槽在Qt程序中,利用信号(signal)和插槽(slot)机制进行对象间的通信signal和slot机制真正实现了封装的概念,slot除了接收signal之外和其它的成员函数没有什么不同,而且signal和slot之间也不是一一对应的。事件处理的方式也是回调
当对象状态发生改变的时候,发出signal通知所有的slot接收signal,尽管它并不知道哪些函数定义了slot,而slot也同样不知道要接收怎样的signal下面举例来说明信号/插槽机制。
#include<QObject>classCounter:publicQObject{Q_OBJECTpublic:Counter(){m_value=0;}intvalue()const{returnm_value;}publicslots:voidsetValue(intvalue);signals:voidvalueChanged(intnewValue);private:intm_value;};在声明信号/插槽后,使用connect()函数将它们关联起来。Connect函数原型如下:boolQObject::connect(constQObject*sender,constchar*signal,constQObject*receiver,constchar*slot)[static]下面给出一个例子予以说明。Countera,b;QObject::connect(&a,&Counter::valueChanged,&b,&Counter::setValue);a.setValue(18);//a.value()==18,b.value()==18b.setValue(42);//a.value()==18,b.value()==42Counter类通过发射信号valueChanged来通知其他对象它的状态发生了变化,同时该类还具有一个插槽setValue,其他对象可以发信号给这个插槽。插槽setValue的定义如下:voidCounter::setValue(intvalue){if(value!=m_value){m_value=value;emitvalueChanged(value);}}当信号与插槽没有必要继续保持关联时,用户可以使用disconnect()函数来断开连接。其定义如下所示:boolQObject::disconnect(constQObject*sender,constchar*signal,constObject*receiver,constchar*slot)[static]这个函数断开发射者中的信号与接收者中的插槽函数之间的关联。9.4.1Helloworld程序新建一个helloworld项目,该项目使用的类信息中将基类选择为QDialog。项目构成如下图所示。图9-4helloworld项目构成在源文件Main.cpp中输入源码,如下:#include<qapplication.h>#include<qlabel.h>intmain(intargc,char**argv){QApplicationa(argc,argv);//创建了一个QApplication类的对象aQLabel*hello=newQLabel("Helloworld!",0);//创建了一个静态文本,将label设置为“Helloworld!”hello->show();//调用show()方法使窗口部件可见returna.exec();//exec()中qt接收并处理用户和系统的事件,并且把它们传递给适当的窗口部件}Qt数据库应用Qt中的QtSql模块提供了对数据库的支持,该模块中的众多类基本上可以分为三层,分别是驱动层、SQL接口层和用户接口层。除了QSqlQuery类外,Qt还提供了三种用于访问数据库的高层SQL模型,如表9-3所示。Qt中使用了这些模型来避免使用SQL语句,为用户提供了更简便的可视化数据库操作及数据显示模型,有效的减了开发工作量。(本节有微课)SQL模型第10章SQLite数据库嵌入式数据库系统是指支持移动计算或某种特定计算模式的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备或移动设备上。由于嵌入式数据库系统总是与移动计算相结合,所以通常情况下嵌入式数据库也被称为嵌入式移动数据库。嵌入式数据库系统具备了如下主要特点:(1)嵌入性(2)移植性(3)安全性(4)实时性(5)可靠性(6)主动性嵌入式数据库的分类方法很多,根据其嵌入的对象不同分为:面向软件的嵌入式数据库、面向设备的嵌入式数据库、内存数据库等。也可以根据其应用的不同分为:普通嵌入式数据库、嵌入式移动数据库、小型架构数据库等。在众多的数据库中,如何选择适用于嵌入式系统的数据库呢?嵌入式系统开发环境决定了其对数据库需求的要素:(1)体积较小(2)功能齐备(3)代码开源(4)性能可靠嵌入式数据库的系统结构嵌入式数据库通常与操作系统和具体应用集成在一起,而嵌入式操作系统种类繁多、系统特点不一,从而导致嵌入式数据库系统的应用环境也复杂多样。因此,嵌入式数据库没有一个比较固定的模式,其结构和采用的技术也因为不同的需求而多种多样。总的来说,嵌入式数据库系统体系结构可以分为外部接口和内部处理两大模块,嵌入式实时数据库除了具备传统数据库功能外,一个嵌入式实时数据库管理系统还具有以下特点:(1)数据库状态的确定性(2)事务和数据都具有时限性
(3)高效的实时压缩算法(4)系统的可定制性嵌入式移动数据库系统Oracle
Lite
SQLiteSQLite是一个开源的、内嵌式的关系型数据库。它是D.RichardHipp采用C语言开发出来的完全独立的,不具有外部依赖性的嵌入式数据库引擎。SQLite工具命令行Shell(CommandLineShellForSQLite)数据分析器(Sqlite3_analyzer)RBU(ResumableBulkUpdate)数据库文件比较程序(SQLiteDatabaseDiff)数据库哈希(DatabaseHash,Dbhash)FossilSQLite存档程序(SQLiteArchiver)SQLite的体系结构Sqlite主要由核心(core),后端(backend)和附件(accessories)三个子系统组成。SQLite通过利用虚拟机(也叫虚拟数据库引擎(VDBE)),使调试、修改和扩展SQLite的核心变得更加方便。虚拟数据库引擎(VDBE)VDBE程序执行原理及实例研究我们可以通过使用sqlite命令行工具看到VDBE程序:首先使用sqlite在一个空的数据库中创建表;然后改变sqlite的输出格式,使用.explain命令导出VDBE程序;最后,输入上文的insert语句,并在语句前面加上explain关键字,关键字explain使得只打印出VDBE程序,但并不执行。SQLite安装安装例子从功能的角度来区分,SQLite的API可分为两类:核心API和扩充API。核心API主要包括连接数据库、执行SQL和遍历结果集和一些功能函数。扩充API提供不同的方法来扩展SQLite,它向用户提供创建自定义的SQL扩展,并与SQLite本身的SQL相集成等功能。SQLiteC++接口及测试程序请查看本节微课本课小结Qt5是功能强大地新一代图形界面设计程序。Qt5包含众多的模块、工具和插件,可以完成不同领域不同目的的设计要求。本课只介绍了Qt的基本概念和数据库相关的知识。同时本课也介绍了嵌入式数据库的功能,特点和SQLite数据库的相关情况。当前嵌入式系统软件开发的重要环节之一就是对各种数据的管理,而嵌入式数据库是实现该目标的重要手段。SQLite数据库的特点十分适合嵌入式产品开发,而且完全免费开源。值得在日常学习中多实践多研究。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店承包合同工程合同弱电合同模板
- 钴铁基自支撑催化剂的制备及电解海水析氧性能研究
- 基于深度学习的冠心病风险预测与辅助诊断研究
- 大股东禁售期套现路径及后果研究
- 2024年阳泉市市属国有企业招聘笔试真题
- 2024年莆田市城厢区中小学招聘笔试真题
- 公司正规劳务合同模板
- 2024年当涂县事业单位招聘笔试真题
- 2025年度餐厅装修合同(含餐厅周边绿化设计与施工)
- 二零二五年度人员借用与市场拓展合作协议
- 湖北省武汉市2024-2025学年高三2月调研考试英语试题
- 教科版三年级下册科学全册同步练习(一课一练)
- 内蒙古机电职业技术学院单独招生(机电类)考试题(附答案)
- 2025年南京信息职业技术学院单招职业技能测试题库参考答案
- 2025年度共享办公空间转租合作协议
- 2025年公益项目合作协议
- 【凯度】2025年生鲜消费新趋势
- 《防波堤施工》课件
- 人教版(2024)七下 第二单元第1课《精彩瞬间》课件-七年级美术下册(人教版)
- 2025河南中烟安阳卷烟厂一线岗位招聘14人易考易错模拟试题(共500题)试卷后附参考答案
- 四川省2024年高等职业教育单独招生考试中职类语文试题及答案
评论
0/150
提交评论