嵌入式SQLite数据库在电气工程师PDA中的应用

点赞:5916 浏览:17619 近期更新时间:2024-03-16 作者:网友分享原创网站原创

摘 要:针对电气工程师需要查询大量技术资料和公式以及测量电气参数等问题,对电气工程师PDA进行了研制,该PDA硬件采用ARM核微处理器、数据采集与处理电路和触摸屏/LCD显示电路.通过对现有嵌入式数据库的分析和研究,采用了嵌入式数据库SQLite,并移植到嵌入式微处理器S3C2440和Linux系统中.根据电气工程师PDA的功能,设计了波形存储表、电参数测量记录表、电学公式表和电气资料查询表,重点对电气工程师PDA数据表及其字段、电学技术资料查询模块数据库表的建立和电气资料查询模块中数据库查询程序设计进行了分析.通过在嵌入式微处理器上移植Linux操作系统和SQLite数据库进行电气工程师PDA的应用软件设计,实现了在线计算、编辑和查询电气资料的功能,圆满地完成了该PDA的设计要求.

关 键 词:PDA;嵌入式系统;SQLite

中图分类号:TP392文献标识码:A

[WT]文章编号:1672-1098(2011)02-0026-05

收稿日期:2011-03-25

基金项目:安徽省高等学校自然科学基金资助项目(KJ2009A093)

作者简介:李敬兆(1963-),男,安徽淮南人,教授,博士,研究方向为嵌入式系统.

WT3BZ]ApplicationofEmbeddedSQLiteDatabaseinElectricalEngineersPDA

LIJing-zhao,RENPing

(SchoolofComputerScienceandEngineering,AnhuiUniversityofScienceandTechnology,HuainanAnhui232001,China)

Abstract:TheelectricalengineerPDAwasdevelopedforsolvingelectricalengineersneedtolookforalotoftechnicalinformation,editformulas,measureelectricalparameters,andsoon.ThePDAhardwareiadeupofARMcoremicroprocessor,dataacquisitionandprocessingcircuit,andtouchscreen/LCDdisplaycircuit.TheembeddeddatabaseSQLiteisusedandtransplantedtotheembeddedmicroprocessorS3C2440andLinuxsystemsonthebasisoftheexistingembeddeddatabasesareanalyzed.Weformstoragetable,electricalparametermeasurementrecordtableandelectronicformulastablearedesignedbasedonthefunctionofelectricalengineersPDA.ThePDAdatasheet’ield,electricaltechnicaldataquerymoduledatabasetablecreationanddatabasedesignofelectricaldataquerymodulearemainlyanalyzed.LinuxoperatingsystemsandSQLitedatabasearetransplantedtotheembeddedmicroprocessor,electricalengineersPDAapplicationsoftwareisdesigned,andonlinecalculation,editingandqueryingelectricaldata,etcarerealized.ThedesignrequestofthisPDAwassuccesullypleted.

Keywords:PDA,embeddedsystems,SQLite

嵌入式系统已经成为IT产业一个新的经济增长点,PDA(PersonalDigitalAssistant)作为嵌入式系统的高端产品也得到了迅速发展.尤其是随着基于ARM核微处理器和源码开放的Linux操作系统的逐步流行,PDA的功能不断得到完善和丰富,应用也越来越广泛.然而目前通用型的PDA较多,而专业型PDA则较少.为此,作者对电气工程技术人员应用的专业PDA进行了研究,其集万用表、示波器、常用电学公式计算、电气技术参数资料手册查询等功能于一体,可将电气技术人员从多仪器携带、大量的资料查询、繁琐的公式计算中解放出来,大大提高了电气技术人员的工作效率.由于该PDA具有大量的资料和数据,因此在研制过程中基于ARM-Linux平台,移植了嵌入式数据库SQLite进行应用程序设计,本文主要对嵌入式数据库在电气工程师PDA中的移植与应用进行分析.

1PDA的结构与功能

电气工程师PDA的电信号测量通过底层数据采集模块获得,系统控制信号由触摸屏触发,用户通过触摸屏进行操作.该PDA的系统结构如图1所示.

图1PDA的系统结构

电气工程师PDA的主要功能如下:

1)万用表.可测量常用电信号和参数,如电阻、电容、电感、电压、电流、频率等,还可在线进行交流电压和电流的瞬时值、功率因数、视在功率、有功功率、无功功率等电参数的综合测量;

2)示波器.以波形和数字显示被测电信号如电压、电流、各种功率的波形;

3)公式计算以及在线编辑.可以进行常用电学公式的计算,用户可直接将测量值代入PDA上给出的公式进行计算并保存,同时还支持公式的在线编辑,从而使电气工程师PDA更具通用性;

4)电气技术资料查询.用户可按标题或关 键 词通过精确查询或模糊查询来查找所需的电气专业技术资料;

5)语音导航和GPRS通信等功能.该PDA具有语音导航使用操作功能,可使用GPRS来实现网络通信,以便浏览、下载数据或上传个人数据.

电气工程师PDA的功能模块设计如图2所示.

图2系统功能模块图

2嵌入式数据库分析

与通用计算机系统相比,嵌入式系统特殊的开发环境决定了其对数据库的需求有如下特点:

1)嵌入式数据库管理系统要占用非常小的内存空间,应尽量避免产生冗余数据;

2)嵌入式数据库应具备良好的实时性,以保证运行在嵌入式实时操作系统上,不会影响整个系统的实时性能;

3)由于嵌入式系统会不可避免地与底层硬件打交道,要求嵌入式数据库要有底层数据操作与控制能力.


常见的基于Linux平台嵌入式数据库主要有PostgreSQL,MySQL,mSQL,BerkeleyDB,SQLite等[1].

MySQL在保持中等体积的情况下提供了较为适用的功能,已经成为中小规模数据库应用的首选,但商业应用也要收费,而且对于嵌入式开发来说空间占用仍然太大;mSQL是一种简化的SQL数据库,短小精悍,开发方便,适用于嵌入式开发,但它只有30天的使用期限,并非完全的开源;PostgreSQL体积较大;BerkeleyDB会加大开发成本.SQLite支持绝大多数标准的SQL92语句,采用单文件存放数据库,速度快,存储量大.在操作语句上类似关系型数据库,使用非常方便.另外,SQLite的版权允许无任何应用限制,包括商业性的产品.在PHP5中已经集成了这个轻巧的嵌入式数据库产品[2].所以本文选用了SQLite进行电气工程师PDA的数据库系统系统开发.

3SQLite的移植

SQLite嵌入式数据库提供了以源码发布的方式,根据不同的硬件平台,对源码进行交叉编译即可实现移植,电气工程师PDA选用SQLite,其编译经过以下几个步骤:

1)下载SQLite源代码包,建立目录.将其解压后将生成sqlite目录,新建并转到一个与sqlite目录平行的同级目录,以便将编译结果单独存放.输入$tar-zxvfsqlite-325.tar.gz,将在同级目录下生成sqlite-3250.将arm-linux-gcc的目录加入到PATH环境变量中[3].

5)在PDA上运行SQLite.将SQLite交叉编译出来的库文件libsqlite.a添加到文件系统中的lib目录下,修改权限:“$chmod+wxlibsqlite.a”,这样,就可以使用SQLite提供的库函数进行进一步的应用程序开发了.

4嵌入式数据库设计

电气工程师PDA中数据库的设计包括数据库中表的设计和数据表中字段的设计两部分.

41数据表的设计

根据对电气工程师PDA的功能分析,系统主要分为示波器模块、万用表模块、电学公式计算模块和电气技术资料查询模块四个模块.示波器模块需要实现波形的存储和调出显示,在此模块中需要建立数据表来保存波形及相关信息;万用表模块需要建立数据表来保存各种电测量值和测量信息以供保存和查询.故电学公式计算模块需要实现公式的编辑和保存,需要建立数据表来保存电学公式,该模块还应有计算结果保存功能;电气技术资料模块的数据量大,主要为电气技术人员常用的资料.

经过以上分析,系统数据库可分为四个功能模块,为每个模块设计相应的数据表.

示波器模块建立波形存储表,字段包括测量时间、x轴单位刻度、y轴单位刻度和波形等;万用表模块建立电参数测量记录表,字段包括测量时间、电物理量和测量值等;电学公式计算模块建立电学公式表,字段包括计算物理量,电学公式,相关电物理量;另外,还要建立计算结果存储表,可以对计算结果进行保存和查询操作,字段包括计算时间,使用公式,计算结果.计算结果存储表要与电学公式表进行关联.电气技术资料查询模块建立电气资料表,字段包括资料类型、资料标题和资料内容等.

电气工程师PDA数据库eepda数据表的字段及功能如表1所示.

波形存储表保存示波器模块的波形测量时间、X轴刻度单位、Y轴刻度单位、波形

测量存储表保存万用表模块的测量结果测量物理量、测量时间、测量值

电学公式表保存电学计算公式计算变量、公式

计算结果表保存电学公式计算结果计算时间、使用公式、计算结果

电气资料表保存电气资料供查询资料类型、标题、内容

42电气技术资料数据表中字段的设计

在SQLite中,建立数据表时并不需要指定字段的数据类型,数据表中可以存储所有的数据类型,包括数值型、字符型、长文本等,系统会根据用户的输入设置数据类型.在设计数据库时就不需要考虑字段的数据类型,只需考虑合理设计数据库表结构即可(见表2).

字段名字段说明备注

资料类型分类型查看资料可以缩短查询时间

资料标题每条资料的标题电学资料表键值

资料内容资料的具体内容用户要查询的内容

5SQLite在资料查询中的应用

电气技术资料查询模块对数据库的操作主要是资料的查询和数据的导入.根据用户选择的资料类型和用户输入的关键字或标题,对电气技术资料进行查询,查询可以使用精确查询,也可以使用模糊查询.

51电气技术资料查询模块数据库表的建立

电气技术资料查询模块涉及到数据库部分,包括两个方面的内容,一是要将数据写入数据库,提供给应用程序进行查询;二是对这些数据的操作,让处理后的数据能显示在系统需要的地方,在本模块中为多行编辑框,利用SQLite提供的API函数可以方便地进行数据处理[4].

首先建立数据库,在shell终端下键入:“$sqlite3eepda.db”,完成数据库建立,接着就可在数据库中建立电气技术资料数据库表.输入“createtableelecinfo(title,type,info)”,就建立了一个名为elecinfo的数据表,里面有title、type、info三个字段.

在系统运行之前,需要将常用电气资料导入数据表,包括用户进行查询时选择的资料类型、资料标题,系统根据用户的选项查询数据库,并将查询结果显示在LCD上.

“sqlite3eepda.db'insertintoeledcinfovalues”这个语句就可实现把一条记录插入到elecinfo表中,其它记录也可以用相同方法导入(见图3).

图3电学资料数据存储过程

在电气工程师PDA中对数据的操作主要通过SQLite中提供的各种库函数来实现,包括sqlite3-open,sqlite3-exec,sqlite3-snprintf、sqlite3-close等.其中需要说明的是语句sqlite3-snprintf(sizeof(zSq12),zSq12,"insertintoelecinfovalues('%q','%q','%q')",在应用程序中对汉字的处理过程中显示为乱码,经调试发现,将汉字转换为GB2312格式就可正确显示,所以在插入数据的SQL语句中应该用‘%q’进行格式转换[5].

系统主窗口加载时,需要在主窗口过程函数的MSG-CREATE消息代码中添加数据初始化代码,如应用sqlite3-open(eepda.db,&db)函数打开数据库等.

52电气技术资料查询模块中数据库查询设计

在进行电气技术资料查询时,首先从组合框中选择资料类型,然后选择资料标题,比如要查询“模糊控制”分类下的标题为“模糊化”的资料内容,用户要从“资料分类”组合框中选择类型“模糊控制”,在资料标题组合框中选择标题“模糊化”,单击“查询”按钮就可以进行查询了,查询结果显示在多行编辑器中,当文本较长时,用户可以利用滚动条来阅读资料(见图4).

嵌入式SQLite数据库在电气工程师PDA中的应用参考属性评定
有关论文范文主题研究: 关于数据库的论文范例 大学生适用: 在职研究生论文、硕士论文
相关参考文献下载数量: 42 写作解决问题: 毕业论文怎么写
毕业论文开题报告: 论文模板、论文题目 职称论文适用: 杂志投稿、职称评初级
所属大学生专业类别: 毕业论文怎么写 论文题目推荐度: 免费选题

图4数据库处理过程

电气技术资料查询对话框加载时,在对话框窗口过程函数的MSG-INITDIALOG即对话框初始化事件中调用sqlite相关的API函数对电气技术资料查询模块中的数据库表进行初始化,并将数据库中的所有的电气资料类型从数据库中检索出来,检索的条件由SQL语句决定:


selectdistincttypefromelecinfo

这个SQL语句从电气资料表elecinfo中查询所有的资料分类,distinct参数用于返回唯一不同的值,以保证查询结果中的资料没有重复.

如果数据库查询成功,则将查询出来的所有电气资料分类填充到组合框控件IDC-TYPE中,通过SendDlgItemMessage函数向窗口中的该列表框控件发送一个CB-INSERTSTRING消息,该消息用来向列表框中插入新条目.

最后,释放SQLite的查询结果,并向控件IDC-TYPE发送消息CB-SETCURSEL,让组合框的当前选项为查询到的第一条数据[6],组合框数据填充设计如图5所示.

图5组合框数据填充过程

资料标题组合框的填充过程与资料分类组合框一样.当用户选择一个资料分类后,触发资料标题组合框的nc等于CBN-SELCHANGED事件,执行select语句查询出该分类下所有资料标题,显示在资料标题组合框中,供用户选择.用户选择标题后,单击查询按钮,触发查询按钮的单击事件,即BN-CLICKED,在MiniGUI程序代码中添加查询按钮的单击事件代码,并加入selectinfofromelecinfo查询语句,如果找到匹配的记录,则资料内容显示在多行编辑框中,否则返回-1,最后系统调用SetWindowText函数来显示查询结果.


6结束语

通过移植嵌入式Linux操作系统和嵌入式SQLite数据库进行电气工程师PDA的应用软件设计,已在基于嵌入式微处理器S3C2440的开发平台上调试通过,大大加快了程序开发进程和项目进度.