嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库

2024-10-21

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库(通用10篇)

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇1

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库,SQLite,远程

监控系统,arm-μ

随着后PC时代的到来,各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机。嵌入式开发已成为当前IT行业的热点。同时,越来越多的用户希望能对嵌入式环境下的数据进行更有效的管理,构建嵌入式数据库便是一个有效的方法,使用户能在嵌入式设备中方便地存储、检索或修改数据,实现大部分传统数据库的功能。嵌人式系统和数据库技术的紧密结合已经成为嵌入式开发的一个重要方向。1嵌入式数据库SQLite与传统C/s结构的各种

随着后PC时代的到来,各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机。嵌入式开发已成为当前IT行业的热点。同时,越来越多的用户希望能对嵌入式环境下的数据进行更有效的管理,构建嵌入式数据库便是一个有效的方法,使用户能在嵌入式设备中方便地存储、检索或修改数据,实现大部分传统数据库的功能。嵌人式系统和数据库技术的紧密结合已经成为嵌入式开发的一个重要方向。

1嵌入式数据库SQLite

与传统C/s结构的各种大型关系数据库如Oracle,SQL Server,MySQL等相比,在嵌入式系统中由于软硬件资源有限,不可能安装庞大的数据库服务器,而且在很多时候,用户只需要使用这些数据库产品的一些基本特性而已。嵌入式系统的开发环境决定了其数据库的特点:无需独立运行的数据库引擎,而是由程序直接调用相应的API实现对数据的存取操作。嵌入式数据库与其他数据库产品的区别是,前者是程序驱动式,而后者是引擎响应式。

SQLite是D.Richard Hipp在2000年开发的一个小型嵌入式数据库。他是完全独立的,不具有外部依赖性,可以较为方便地应用于嵌入式系统中。其源代码完全开放,可以免费用于任何用途,包括商业目的。SQLite虽然是个极端轻量级的关系数据库,却保留了数据库的大部分特征,他提供了对SQL92标准的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。其主要特征如下:

(1)支持原子的、一致的、独立的和持久的(ACID)事务特性,即使系统崩溃和掉电。

(2)零配置(Zero-configuration),无需安装和管理。(3)一个完整的数据库存储在单一磁盘文件中。(4)数据库文件可以在不同字节顺序的机器间自由共享。(5)支持数据库大小至2 TB(2^41 B)。

(6)字符串和二进制大对象(BLOBs)的大小仅被有效内存限制。(7)源码体积小,编译后低于250kB。(8)大部分的操作比关系型数据库引擎要快。(9)简单易用的API。

SQLite由于小、快、简单、可靠,而且作者完全放弃版权,从他一发布出来,便深受欢迎。对于嵌人式环境,管理、执行、维护的简单化比企业数据库引擎提供的许多复杂应用更重要,因此SQLite数据库是一个很好的选择。2 SQLite内部结构及开发技术 2.1 SQLite内部结构

SQLite采用模块化的设计,主要由4个部分组成:内核(Core)、SQL编程器(SQL Compiler)、后短(Backend)以及附件(Accessories)。内部结构如图1所示。

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇2

本便携系统是在工程用PPC的基础上进行二次开发而成。通过自行设计的数据采集PLC和上位机软件完成对员工所携带的射频卡的搜索和呼叫。在设计中,因为便携系统的软硬件条所限,所以数据的存储采用嵌入式数据库。

1 SQLite数据库

SQLite是D.Richard Hipp采用C语言编写的一个轻量级、跨平台的关系型数据库,支持大部分SQL92标准(比如视图、事务、触发器、blob数据类型等),支持弱类型数据存储,开源免费。它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如C++、Tcl、C#、PHP、Java等,并且具有一系列的用户接口及驱动。

传统的数据库是引擎驱动,SQLite则是程序驱动,其是零配置的,没有独立的数据库引擎,用户请求和数据服务在同一个进程中进行,避免了频繁的进程间通信所造成的额外消耗。因此,它非常适合本系统对数据访问频繁,实时性高的要求。

1.1 SQLite的适用场合

SQLite适合用于嵌入式便携设备(如智能手机、PDA等),亦或是其他要求较低的桌面应用软件中,也可以考虑动态地嵌入到应用程序中,比如用于某些企业应用软件的本地磁盘格式文件或数据库。有经验的SQL用户还可以使用SQLite命令行程序去分析各种混杂的数据集。

1.2 SQLite的体系结构[3]

SQLite采用了模块化的设计,它由SQL编译器、内核、后端等三个组件组成,包括8个独立的模块。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展SQLite的内核变得更加方便。所有SQL语句都被编译成易读的、可以在SQLite虚拟机中执行的程序集。SQLite的体系结构如图1所示。

1)接口(Interface)

接口由SQLite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。

大部分SQLite的接口在main.c,legacy.c,vdbeapi.c源文件中实现,但是有些常规性的分散在其他的文件中,因为它们可以在文件作用域内访问一些数据结构。

2)编译器(Compiler)

在编译器中,分词器(Tokenizer)和分析器(Parser)对SQL进行语法检查,然后把它转化为底层能更方便处理的分层的数据结构———语法树,然后把语法树传给代码生成器(code generator)进行处理。而代码生成器根据它生成一种针对SQLite的汇编代码,最后由虚拟机(Virtual Machine)执行。

3)虚拟机(Virtual Machine)

架构中最核心的部分是虚拟机,或者叫做虚拟数据库引擎(Virtual Database Engine,VDBE)。它和Java虚拟机相似,解释执行字节代码。VDBE的字节代码由128个操作码(opcodes)构成,它们主要集中在数据库操作。它的每一条指令都用来完成特定的数据库操作(比如打开一个表的游标)或者为这些操作栈空间的准备(比如压入参数)。总之,所有的这些指令都是为了满足SQL命令的要求。

4)后端(Back-End)

后端由B-树(B-tree),页缓存(page cache,pager)和操作系统接口(即系统调用)构成。B-tree和page cache共同对数据进行管理。B-tree的主要功能就是索引,它维护着各个页面之间的复杂的关系,便于快速找到所需数据。而pager的主要作用就是通过OS接口在B-tree和Disk之间传递页面。

2 SQLite在煤矿井下人员定位系统中的应用

本便携系统基于Win CE平台,使用EVC(Embedded Visual C++)进行开发。PPC和数据采集PLC之间使用串口进行通信,PPC要向数据采集PLC发送控制指令达到操控数据采集PLC的目的,首先应按照通讯指令集(本便携系统使用自定义指令集)将相应指令按异步通讯编码要求进行封装,由于在异步通讯中没有硬件设备控制发送端与接收端的同步,因此要保证数据的正确性就要依靠通讯参数的一致性[4]。通讯参数包括:1)波特率,描述数字传输速度的单位。2)数据位,7或8位。3)奇偶校验,检查数据传输是否正确的一种方式。4)停止位,1、1.5或2位。PPC的通信参数设置必须与数据采集PLC的参数保持一致,否则无法完成通信(本便携系统通讯参数依次为1200,8,e,2)。为了方便系统能适用于不同设置的串口通信环境,软件提供交互界面让用户进行串口设置。程序里定义结构体保存串口设置信息,这样就可以很方便的实现串口设置的保存和修改。设置好通讯参数后即可使用PPC控制数据采集PLC,并与其进行双向通讯。

实时采集的数据存储在SQLite数据库中。SQLite本身提供了C语言的API接口,其中的核心函数有如下几个:sqlite3_open()用于打开数据库,sqlite3_exec()用于执行SQL语句,sqlite3_close()用于关闭数据库。值得一提的还有回调函数callback()。callback()可用来输出sqlite3_exec()的执行结果,利用这几个函数就可以实现有效的数据存储和管理[4],3个API函数的调用如下:

1)打开数据库

2)执行SQL

3)关闭数据库

int sqlite3_close(sqlite3*);/*参数就是打开时的结构体,即数据库句柄*/

其中sqlite3_exec()函数的第二个参数用来处理一条或多条SQL语句,语句间必须用“;”号隔开。如果是查询(SELECT)语句,查询结果的每一条记录都必须调用第三个参数的Callback函数,第四个参数则为Callback函数的第一个参数指针。如果不是查询语句,第三、四个参数为NULL。所有SQL执行完毕后返回0,否则返回错误代码,可通过第五个参数值来查看详细错误信息。

数据库的表结构如表1所示,其中包含三张表,tb_Staffer存储员工信息,tb_Card存储射频卡信息,tb_CheckRecord存储成功的验卡记录。

使用该便携定位系统对矿下人员进行搜索,当搜索到附近的射频卡信号时,会将数据采集PLC通过串口传递来的射频卡具体信息显示出来并存储在tb_Card表中,根据具体的射频卡号在tb_Staffer表中查询出该员工的具体信息并在PDA屏幕上显示出来,根据该射频卡所接收到的定位器号可知该员工所处的具体位置以便进行救援或者作为考勤的一个记录,员工验卡成功的记录会自动保存在tb_CheckRecord表中。

3 结束语

系统使用嵌入式数据库SQLite来存储数据,设计和开发了便携式煤矿井下人员检测系统,该系统可用于对煤矿井下人员的定位、搜索和管理,为煤矿生产提供了有效的安全保障,以信息化手段提高了煤矿的安全生产能力。目前,该便携系统已被包括神华集团在内的几家大型煤矿集团采用,效果良好。

摘要:该文研制了一种便携式煤矿井下人员检测系统。该系统使用嵌入式数据库SQLite来管理数据,实时采集射频识别卡所发送的信息,上位机对采集的数据处理后可实现对人员的检测和定位。

关键词:SQLite,定位,EVC

参考文献

[1]罗云国,孙彦景,钱建生,等.基于SQLite的煤矿安全监控数据库研究[J].微计算机信息,2008,24(33).

[2]SQLite home page[EB/OL].http://www.sqlite.org.

[3]Architecture of SQLite[EB/OL].http://www.sqlite.org.

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇3

关键词:SQLite;嵌入式;数据库

中图分类号:TP31文献标识码:A文章编号:1007-9599 (2011) 07-0000-01

SQlite Database Application in Embedded Systems under Linux

Li Wenhao

(Xiamen University,Xiamen361005,China)

Abstract:SQLite is a excellent open source embedded database used for free,small,fast,easy to use and has reliable performance.During the construction of the distribution system,we need to manage a lot of data.It's simple,convenient and flexible to access programming the SQLite database under Linux environment.As so,building a database using SQLite embedded database applications,is an economic and efficient solution.

Keywords:SQLite;Embedded;Database

SQLite是D.Richard Hipp于2000年采用C语言编写的一个轻量级、跨平台的关系型数据库,支持大部分SQL92标准,支持弱类型数据存储,开源免费。主要由3个子系统、8个独立的模块构成,其体系结构如下图所示:

其主要部件介绍如下:

1.接口:由两部分组成:核心API(core API)和扩展API(extension API),核心API的函数实现基本的数据库操作,扩展API通过创建自定义的SQL函数去扩展SQLite。

2.编译器:在编译器中,分词器和分析器对SQL语句进行语法检查,然后把它转化为语法树,再把语法树传给代码生成器(code generator)进行处理。而代码生成器根据它生成一种针对SQLite的汇编代码,最后由虚拟机执行。

3.虚拟机:架构中最核心的部分是虚拟机,用于解释执行字节代码。VDBE的字节代码主要集中在数据库操作,每一条指令都用来完成特定的数据库操作或者为这些操作栈空间的准备。

4.后端:后端由B-树,页缓存和操作系统接口构成。B-tree的主要功能就是索引,便于快速找到所需数据;pager的主要作用就是通过OS接口在B-tree和Disk之间传递页面。

本项目在Linux下SQLite的编程主要分为创建数据库文件、数据库连接两个方向:

一、创建数据库文件

下表是部分组成元素:

CREATE TABLE ftudata(

idINTEGER PRIMARY KEY, U1_abREAL, U1_bcREAL, U1_caREAL, I1_aREAL, I1_bREAL, I1_cREAL, P1_aREAL,--有功功率 P1_rREAL,--无功功率 P1_fREAL,--功率因数

switch_p1 INTEGER,--开关位置(0/1) switch_p2 INTEGER,--开关位置(0/1) sw_f_c1INTEGER,--开关的功能(0/1) sw_f_c2INTEGER,--开关的功能(0/1) communINTEGER,--通信(0/1) curr_pro INTEGER,--电流建断保护(0/1) no_vo_pro INTEGER,--失压保护动作(0/1) sw_num INTEGER,--开关的动作次数 sw_timeINTEGER,--开关的动作时间 err_num INTEGER,--事故次数 ImaxREAL,--最大故障电流 IavgREAL,--平均电流 IproREAL,--过流建断保护定值 UproREAL,--失压保护定值 back1INTEGER, );

库文件中主要设置了电流电压量、功率参数等,back1则作为预留空间,可以进行功能扩充之用。

二、数据库连接(以插入为例)

插入:

Int sqlite3_exec(sqlite3*db,/*An open database*/

const char*sql, /*SQL to be evaluated*/ int (*callback)(void*,int,char**,char**),

/*Callback function*/

void*, /*1st argument to callback*/

char **errmsg/* Error msg written here */

);

配电自动化是我国电力系统现代化建设的必然趋势,要实现配网的管理,数据的管理是其中的关键。在嵌入式系统下,SQLite数据库以其占用系统资源少、使用方便、性能可靠等特点广受欢迎。本文中对其进行了结构分析,并采用该数据库实现了电力系统中数据的管理。不足之处在于:SQLite通过OS的文件锁实现库级锁,粒度很大,对并发控制、数据加密支持的不是太好。以后将作进一步改进。

参考文献:

[1]杜国祥,石俊杰.SQLite嵌入式数据库的应用[J].数据库与信息管理,2010

[2]http://www.sqlite.org.SQLite官方网站

[3]http://www.cnblogs.com/hustcat.arrowcat's技术随笔之SQLite专题

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇4

摘要:采用VHDL语言和图形输入设计方法,给出了用CPLD在远程多路数据采集系统中实现地址译码、串口扩展、模块测试、模数转换以及高位数据处理等功能的具体方法,同时简要介绍了远程多路数据采集系统的工作原理及软、硬件框架。

关键词:CPLD;单片机;译码;RS-232;VHDL; EPM7256SQC208

CPLD(Complex Programmable Logic Device?复杂可编程逻辑器件)是在传统的PAL、GAL基础上发展起来的。目前,CPLD已在通讯、DSP及微机系统中有着非常广泛的应用,它不仅可使设计的产品小型化、集成化和稳定可靠,而且还具有在系统或在芯片直接编程的能力,从而使电子系统的设计、开发、更新与维护变得更为方便,更便于装配和批量生产。因此,利用CPLD可大大缩短设计周期,减少设计费用,降低设计风险。远程多路数据采集系统,不但需要较多的片选信号,而且模块测试所占用的I/O口资源也较多,用一般的芯片较难实现,而用CPLD/FPGA则不但可以较好地实现其功能,而且还可大大提高设计能力和设计效率。

1 系统组成思路

本远程多路数据采集系统以Altera公司7000S系列CPLD产品中的EPM7256SQC208-10为控制核心,并由A/D(模拟量采集)模块、DI(数字量采集)模块、D/A(模拟量输出)模块、DO(数字量输出)模块、MCU模块、电源模块及I/O接口模块组成,其系统组成原理图如图1所示。

图中,MCU模块主要由CAN总线模块、RS-485模块、RS-232模块、时钟和复位模块、CPLD模块等组成,MCU模块的电路原理图如图2所示。该远程多路数据采集系统的I/O接口板共有14个插槽,其中12个插槽可实现A/D模块、D/A模块、DI模块、DO模块等四种模块的任意配置。因此,单个数据采集系统最大可采集192路模拟量或192路数字量,也可以提供最大96路模拟量输出或192路数字量输出。多个数据采集系统也可以根据实际和现场需要通过CAN总线、RS-485总线或RS-232总线进行连接,从而实现上百个或上千个采集频率不高的远程数据采集。该远程多路数据采集系统可采集0~5V的电压信号和4~20mA的电流信号,数字量输出电平为12V,可直接控制12V的继电器。(本网网收集整理)

显而易见,传统的设计思路不但要使用大量的外围芯片,而且需要主处理器直接控制各种采集模块和控制模块,并完成各模块和通道的自检。因此,这种解决方案需要占用主处理器大量的I/O资源和处理时间。然而,一般处理器的 I/O资源极其有限,而且又要求大量的汇编软件配合,这就使设计移植变得比较困难;此外,由于I/O的频繁操作也不利于系统调度软件的设计和其他软件模块的实时执行,因而在现场更难以组成分布式控制管理系统(FCS)。可见,如果采用传统的设计方法,不但使系统设计较为庞大,而且开发成本高、设计周期长、设计效率低。所以,传统的设计思路在远程多路数据采集系统中是不可取的,而使用CPLD或FPGA器件则可以较好地解决上述问题。

2 CPLD设计

2.1 顶层软件设计

上述功能可在MAX+PLUSII 9.5环境下设计完成。该系统的软件设计采用“自顶向下”、“软硬兼施”的设计方法,主要设计了五大功能模块,分别是DECODE?地址译码?模块、AD?模拟量输入数据处理?模块。DATA?数据处理?模块、TEST?模块自动识别?模块、UART?串口扩展?模块,其设计原理图如图3所示。其中译码模块用于完成处理器对CPLD片内和片外模块的寻址和译码,这是一种简单的`译码逻辑和触发电路,共产生34个片选信号。AD模块用于完成对10位A/D 转换芯片TLV1578高位D8、D9的处理以及实现D9/A1、D8/A0的分时复用,是一般组合逻辑电路和数据缓冲及锁存电路。TEST模块用于完成对各种模块的自动识别,包括识别某一插槽有无模块以及具体是何种模块,该模块共需处理36个测试信号。DATA模块用于简单处理各种数据,包括数据的缓冲、锁存以及驱动放大等。由于该系统中单片机的串口被RS-485占用,因此,UART模块一般用于实现RS-232串口扩展。

2.2 底层软件设计

底层软件设计是基于顶层软件中五大功能模块而设计的,其中UART模块设计采用VHDL语言描述完成,而DECODE模块、TEST模块、DATA模块和AD模块由于原理和时序相对简单,则采用图形输入设计方法,并通过编译、综合、仿真后生成底层设计文件(即生成相应的设计符号*.sym),以供顶层设计调用。

为了突出重点,这里只简单介绍UART模块的底层设计。UART模块是一个8位全双工异步接收发送器模块,该模块主要由四个子模块构成,即并入串出模块、串入并出模块、接口模块、时钟产生模块。该UART模块的主要功能是:从计算机接收8位并行数据并发送到串口输出;二是从串口读入外部串行数据并将其转换为8位并行数据送到计算机。

并入串出操作由输入信号的高电平触发的,串行输出结束后,结束信号变为‘0’。而串入并出操作则由串行输入的下降沿触发,且串行输入要保持低电平持续半个周期以上。此半周期时钟同时可作为输入移位时钟,8位数据输入结束后,结束信号变为‘0’并维持到下次数据输入。数据口是8位双向三态I/O口。

时钟产生模块产生的时钟用于并入串出模块和串入并出模块。在串入并出操作中,工作时钟只有高于移位时钟,才能检测是否开始一次新的输入过程,因此,工作时钟是移位时钟的4倍。其时钟产生模块的VHDL源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;?

ENTITY clkgen IS

PORT (iclk,oclk:BUFFER STD_LOGIC);?

END clkgen;

ARCHITECTURE clk OF clkgen IS

SIGNAL iclk_lag,oclk_lag:TIME:=0 ns;

SIGNAL temp_iclk,temp_oclk:STD_LOGIC;

BEGIN

PROCESS(temp_iclk,temp_oclk)

BEGIN

temp_iclk<=NOT temp_iclk AFTER iclk_lag/4;

temp_oclk<=NOT temp_oclk AFTER oclk_ lag;

END PROCESS;

iclk<=temp_iclk;

oclk<=temp_oclk;

END clk;

限于篇幅,UART模块的其它底层模块设计这里不作一一介绍。

图3

3 系统仿真和验证

软件设计完成后,可根据Protel99SE中的电路原理图进行引脚锁定,然后启动编译程序来编译项目。编译器将进行错误检查、网表提取、逻辑综合和器件适配,然后进行行为仿真、功能仿真和时序仿真。最后采用并口下载电缆ByteBlaster并通过JTAG编程方式将top.pof文件下载到EPM7256SQC208-10芯片中,从而生成硬件电路。4 结束语

为了将该远程多路数据采集系统应用到污水处理自动控制系统中,笔者设计了以计算机为核心的分布式控制管理系统(FCS),从而高性价比地实现了污水处理设备的自动化控制和信息化管理,稳定可靠地发挥了污水处理设备的作用,实现了现场数据信息传递的完全数字化,同时保证了数据采集的准确性和控制功能的可靠性。

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇5

摘要:J2ME是Java2平台的一个版本,使用在各种各样的消费电子产品和嵌入式设备上。JavaCard技术规范得Java应用能运行在智能卡和更小的嵌入式设备上。本文介绍J2ME和JavaCard的硬件平台和软件体系结构,以及如何进行J2ME和JavaCard应用程序开发。Java在移动通信领域的应用已经引起广泛的关注,本文对此进行了详细的描述。

关键词:Java嵌入式系统Java卡J2ME移动通信

1Java概述

Java是在1991年由Sun公司JamesGoslingPatrickNaughton、ChisWarth、EdFrank以及MikeSherindan等组成的“STAR7”小组所构想出来的。于1995年5月正式推出。Java计算平台包括JVM(Java虚拟机)和JavaAPI(Java应用编程接口)。JVM是一种抽象化的计算机,运行在操作系统之上,可以在它上面执行Java的字节线,使Java应用程序在现有的各种平台上都可以顺利执行。JavaAPI和Java的函数类库,分为基本核心类库和各种外加功能的扩展类库。

12月8日,Sun公司的最新一个版本的JDK(JavaSoftwareDevelopmentKit)正式发布,Sun的升级版本,而且还是完善的Java平台。

Java2定义组成Java企业平台的核心技术包括15个核心API。这15个核心API构成了整个Java2技术的灵魂,包括Applet、AWT、Beans、IO、Lang、Math、Net、Rmi、Security、SQL、Text、Util、Accessibility、Swing和CORBA。与以往的JDK比较,Java2平台具有很多优势,如更灵活的安全模式、更好的性能、与其他企业级系统的互用性、应用开发更容易、全球化的提高以及更好的跨平台性等。

Java2可以根据对软、硬件需求的不同分为4个版本。J2EE(Java2Platform,EnterpriseEdition)用于企业服务器端应用程序开发;J2SE(Java2Platform,StandardEdition)用于个人计算机上的应用程序开发;J2ME(Java2Platform,MicroEdition)用于信息家电等资源有限的设备上的应用程序开发;JavaCardPlatform用于智能卡上的应用程序开发。

Java程序语言在其产生之初,本身就是为嵌入式设备--机顶盒设备设计的。现在Java又凭借J2MEE和JavaCardPlatform回到嵌入式系统开发领域。

2Java卡

(1)Java卡简介

Java卡是Java平台中最小的子集,也是一种特殊的智能卡。智能卡是一种嵌入计算机芯片的卡片,广泛应用于通信、交通、金融、证券和保险等领域。智能卡分为两大类:一类是存储器卡,另一类是微处理器卡。存储器卡仅仅被用于存储器数据。微处理器卡有数据处理的功能:它有自己的CPU、I/O端口、存储器和操作系统,可以被看作是一台微型电脑;可以安装并运行小的应用程序,通过串行通信接口与外部通信。ISO(国际标准组织)制定了智能卡的国际标准ISO7816。

影响智能卡推广的主要因素是其不够开放,不同的卡片制造商生产的卡片的应用程序开发没有统一的标准。为了解决这个问题,工业界提出了能运行Java程序的智能卡--Java卡,并且制定了Java卡的.技术规范,包括JavaCardVM(Java卡虚拟机)和API的详细信息。JavaCardVM位于智能卡的操作系统之一,用通用的编程语言和系统接口屏蔽了不同智能卡硬件和操作系统的区别。Java卡的框架定义了供应用程序开发者使用的API。Java卡的应用程序称为Applet,每个Applet由唯一的AID(应用程序标识符)来识别。

(2)Java卡对硬件的最低要求

512BRAM:主要用于存储应用程序运行时的栈以及I/O缓冲区。

24KBROM:主要用于存储程序代码和系统的运行时系统。

8KBEEPROM:主要用于存储Java卡的Applet和堆。

8位处理器:8位处理器是Java卡的最低要求。

(3)Java卡软件体系结构

Java卡软件体系结构如图1所示。

最底层的CardOS(操作系统)和NativeFunctions(基本函数)相不于个人计算机的操作系统,负责低层的处理工作。

JavaCardVM位于CardOS和NativeFunctions之上,隐蔽了底层智能卡的不同技术,实现了卡接口的统一和编程语言的统一。

JavaCardFramework(Java卡框架)为开发人员定义了一整套API,主要负责运行Java卡Applet以及为Applet运行提供所需要的环境。

CardOS、JavaCardVM和JavaCardFramework共同组成了JCRE(Java卡运行时环境)。IndustrySpecificExtensions是服务方所提供的类,使企业与公司能够提供属于自己的服务程序。例如,如果这张卡是GSM网络的SIM(用户识别模块)卡,那么这一层就是SIM卡所需的接口类。

(4)JavaCardAPI

JavaCard的2.1版包括四个包:Javacard.langpackage、Javacard.frameworkpackage、Javacard.securitypackage和Javacardx.cryptopackage。

Javacard.langpackage提供Java程序语言中重要的类,例如所有Java类的根类Object类。

Javacard.frameworkpackage是JavaCardAPI的核心包,提供了实现JavaCardApplet基本类和工具。其中ISO7816抽象接口提供了ISO7816所使用的常数值。PIN(个人识别号码)抽象接口使其子类能够验证PIN是否合法。Shareable抽象接口使得不同的Applet能够互相通信。AID类使得JCRE能够通过一个AID表来识别Applet。APDU类通过管理一个缓冲区来接收与传送终端的指令以及回传Applet运行结果与状态。Applet类是所有JavaCardApplet的根类,管理JavaCardApplet的生命周期。JCSystem类管理Applet与JavaCard的系统资源,如AID与事务。OwnerPIN类管理卡片持有者的PIN,并提供相关验证与更新等方法。Util类提供了开发中的常用工具。

Javacard.securitypackage负责提供安全机制,包括Key抽象接口、KeyBuilde类和MessageDisest类。

Javacardx.cryptopackage包含了关于加密与安全的抽象接口和类。

(5)Java卡应用的开发

Java卡的生命周期从操作系统、JVM、API库和可选的Applet被写入Java卡的ROM开始。在正式使用之前,Java卡要经过初始化(在卡上写入制造商和发行商名称等通用信息)和个人化(在卡上写入密钥等个人信息)。然后用户就可以购买并使用Java卡了,当然还要与读卡器相配合。Applet的生命周期从被安装并注册到Java卡系统开始,在被从系统注册表中删除时结束,在被选择时激活。

Java卡的应用程序可以用一般的Java编译器来编译。但是由于智能卡只有有限的存储器资源和计算功能,Java卡上的应用开发与普通的Java程序开发有很大的不同,很多Java语言的特性在Java卡应用的开发中都不能使用。Java卡的应用开发(在Windows系统下)过程如下:

①安装JDK和JavaCard2.1.1DevelopmentKit;

②设置有关环境变量;

③编辑Java源代码,可以使用任何Java代码编辑工具;

④编译Java源代码,用Java编译器编译Java源代码,生成class文件;

⑤生成Cap文件,在Java卡上不能直接运行class文件,必须用Java卡转换器(converter)、把class文件转换为Cap文件;

⑥安装Applet,用PC机和与之相连的读卡器把Cap文件安装到Java卡上。

图2为Java卡应用开发过程示意图。

(6)Java卡在移动通信领域的应用

SIM(用户识别模块)作为一张内含大规模集成电路的智能卡,目前主要用于GSM手机。最初SIM卡主要用来存储一些个人身份认证和识别信息,例如IMSI、鉴权密钥等。SIM卡不能向手机发出命令。19ETSI(欧洲电信标准化委员会)制定了STK卡(SIM应用工具箱技术)的技术规范,大大增强了SIM卡的能力。STK卡上可以安装运行应用程序,可以向手机发出命令,例如在手机上建立新的菜单。SIM卡还可以收发短消息甚至发起呼叫。这样就可以在SIM卡上运行客户端的软件,通过短消息与服务器交互,同时通过菜单为用户提供友好的界面。

尽管STK对SIM卡的使用方法进行了标准化,但是各个制造商仍旧使用自己的开发工具为自选的芯片掩膜,因此引入开放的SIM卡开放平台成为必要。ETSI已在其协议中增加了有关JavaCard的内容。GSMSIM卡采用JavaCardAPI在保证安全的同时提供开放的SIM开发,使得STK应用在不同制造商的SIM卡上运行。在开发过程中,

软件开发商可采用开放的开发工具,开发出与Java兼容的SIM卡应用程序。

ETSI的协议GSM03.19是STKJava卡的技术标准,规定了STKJava卡的体系结构。最底层是JCRE和GSM文件系统。之上是GSM框架,提供了一些供Applet接入GSM文件系统的API。在GSM框架之上是SIMToolkit框架,负责Applet的触发、注册、安装和卸载,主动式命令的处理,Applet的安全性管理。

3J2ME

(1)J2ME简介

J2ME是Sun公司为资源有限的设备上使用Java编程语言而设计的,使用在各种各样的消费电子产品上,例如智能卡、手机、PDA、电视机顶盒等。J2ME平台是建立在Java编程语言上的,可为资源有限的设备提供最大的功能。

J2ME目前有两种配置层。一种是“面向连接的设备配置”CDC(ConnectedDeviceConfiguration),它采用典型的Java虚拟机技术。这种全功能的虚拟机包含了基于台式机系统上的虚拟机的所有功能,适用于拥有至少几兆字节内存的设备。它的目标是高档的消费类电子产品和嵌入式设备,例如智能通信器、高级“智能”寻呼机、智能个人数字助理(PDA)以及交互式数字电视机顶盒。对于无线设备和其它内存不足的设备,J2ME采用“面向连接的受限的设备配置”CLDC(ConnectedLimitedDeviceConfiguration)技术。

(2)J2ME对硬件的最低要求

CDC与CLDC对硬件平台有不同的要求:

CDC-32位的微处理器,大于2MB的存储器。

CLDC-16位或32位处理器,大于128KB的存储器。

(3)J2ME软件体系结构

图3所示为J2ME软件体系结构。

JavaVirtualMachineLayer(Java虚拟机层)是Java虚拟机的一个实现,它是为特定设备的主机操作系统定制的,而且支持一个特定的J2ME配备。CDC配置的JVM是CVM(C虚拟机),CLDC配置的JVM是KVM(K虚拟机)。

ConfigurationLayer(配置层)定义了Java虚拟机功能和特定类别设备上可用的Java类库的最小集。从某种程序上说,一个配置定义了Java平台功能部件和库的共同性,开发者可以假设这些功能部件和库在属于某一特定类别的所有设备上都是可用的。

ProfileLayer(框架层)定义了特定系列设备上可用的应用程序编程接口的最小集。框架在一个特定的配置上面实现,在配置层上增加适用特定规格的配置文件,如MIDP就是用于移动终端的配置文件。应用程序是针对特定的框架编写的,因此可以移植到支持该框架的任何设备上,一个设备可以支持多个框架。

(4)J2MEAPI

CDC提供支持全兼容Java2虚拟机所必需的最小API集。这一API集包括所有为CDC定义的API和针对文件I/O、网络连接、高级完全性、对象序列等API。其中Java.io支持系统输入与输出,JavalangJava提供编程语言基本类,Java.lang.ref包括了一些特别参考类,Java.lang.reflect提供对反映的支持,Java.math支持数学运算,Java.net提供用于网络连接的类和工具,Java.security提供完全支持,Java.security.cert提供证书支持,Java.text提供文本处理类,Java.util包括集合、日期和时间支持等各种实用工具类,Java.util.jar提供Jar文件支持,Java.util.zip提供Zip文件支持,支持Javax.microedition类属连接。

由于MIDP/CLDCAPI将在一个性能有限的设备上运行,因此Java的一些功能被取消或修改。Java.lang、Java.io、Java.util包是J2SE包中标准类的一个子集。Javax.microedition.io包提供了对网络连接的支持,Javax.microedition.io包中的主要对象是Connector类。可将该类强制转换为不同的连接类型,例如HttpConnection。Javax.microedition.lcdui提供了用于定义midlet用户接口的类。Javax.microedition.rms包用来在设备上实现一个临时存储数据库,当然该数据库的存储和获取信息的性能受到设备的限制。Javax.microedition.midlet中包含有MIDlet的类。MIDlet类执行midlet的生命周期,并且提供getAppProperty(key)方法来由应用属性中获取信息。应用属性设置在jad(Java应用程序描述器)文件中。

(5)Java卡在移动通信领域的应用

CLDC和MIDP为创建移动电话应用程序提供了完整的环境。MID框架的核心是一个MIDlet应用程序,所有应用程序MIDlet都继承MIMlet类,以允许应用程序管理软件对MIDlet进行控制、从应用程序描述符检索属性以及对状态变化进行通知和请示。MIDlet类提供了用于调用、暂停、重新启动和终止MIDlet应用程序的API。应用程序管理软件可以在运行时环境内管理多个MIDlet的活动。此外,MIDlet可以自己发起一些状态变化,并把这些变化通知给应用程序管理软件。

移动电话J2MEMIDP应用程序包括用户界面开发、数据库程序开发和网络程序开发。

Javax.microedition.lcdui包中包括了用于用户界面开发的各种类。用户界面的根类是Display,所有的用户界面类都是在Display里显示出来的Displayable对象,Display对象是其它对象演示的舞台,应用程序道德需要获得Display对象的引用,然后就可以把场景对象放入演示舞台中。MIDP提供了Screen和Canvas两种演示场景。Screen的子类包括Alert、Form、List和TextBox。Javax.microedition.lcdui中定义了Command类来接收用户的输入信息,又在Display类中定义了Screen对象与Command对象组合的方法,使得应用程序能够响应用户的输入。

在Screen场景中可以使用的对象包括Alert(信息窗口)、Form(窗体)、List(选项列表)和TextBox(文本框)。其中Form可以放置Item类,包括TextFiled(文本字段)、StringItem(字符串项目)、ImageItem(图像项目)、DataField(日期字段)、ChoiceGroup(选项集合)和Gauge(标尺)。TextBox使应用程序能够在屏幕上显示文本框;Alert类似于消息框,可以为用户提供一些信息;List类以列表的形式提供选项使用户选择;Form是一个容器对象,可以放置包括文本字段、字符串项目、图像项目、日期字段、选项集合和标尺等在内的Item对象。

Canvas是Displayable中用来给开发者创建整个用户接口的,用于创建复杂的用户界面,例如视频游戏中使用的界面。用户在Canvas对象上的绘画与Applet中的AWTCanvas类似。

Javax.microedition.rms定义了在设备上实现一个临时存储数据库程序开发的类。其中采用由字节数组RMS(记录管理系统)机制,使用称为RecordStore(记录存储区)的小型数据库。每个记录存储区对象是Javax.microedition.rms类的一个实例。记录存储区是由字节数组组成的记录构成的。RecordStore提供了用于用户操作记录和管理存储区的方法,对记录的操作包括增加、删除、更新和查询。

Javax.microedition.io为应用程序开发者提供GCF(通用联机框架),用于网络编程。网络编程的根类是Connecter,通过Connecter提供了HTTP、SOCKET、Datagram(数据报)和SerialPort(串行口)等网络通信方式,其中HTTP为设备的必选项。

(6)J2MEMIDP应用程序的开发过程

Sun公司最近推出的工具包J2MEWTK(Java2MicroEditionWirelessToolkit)简化了MIDlet的开发,为MIDlet开发提供了一个全面的工具包。应用程序的开发过程如下:

①安装J2SE或者JavaRuntimeEnviroment。

②安装J2MEWTK。

③配置仿真器。

④编辑Java源文件,可以使用任何Java代码编辑工具。

⑤编译Java源代码,用Java编译器编译Java源代码,生成Class文件。除了编译以外,编译器还会检查源文件中有没有使用CLDC和MIDP以外的类和属性及方法。

⑥验证字节码。

⑦封装成MIDletSuite,把经过验证的Class文件及应用程序中将用到的资源文件封装成JAR文件,这一步会生成JAD文件和mainfest文件。

⑧测试,然后下载到目标机上运行。

结语

嵌入式移动数据库研究 篇6

移动计算环境中的数据库管理系统,是一种动态分布式数据库管理系统。由于嵌入式移动数据库管理系统运行在移动计算的环境之下,应用于嵌入式操作系统之上,所以它有自己的功能需求:

(1)微小内核结构

考虑到嵌入式设备的资源有限,嵌入式移动DBMS应采用微型化技术实现,可在满足应用的前提下,紧缩其系统结构以满足嵌入式应用的需求。

(2)对标准SQL的支持

嵌入式移动DBMS应能提供对标准SQL的支持。支持SQL92标准的子集,支持数据查询(连接查询、子查询、排序、分组等)、插入、更新、删除多种标准的SQL语句,以充分满足嵌入式应用开发的需求。

(3)事务管理功能

嵌入式移动DBMS应具有事务处理能力,可自动维护事务的完整性、原子性等特性;支持实体完整性和引用完整性。

(4)完善的数据同步机制

数据同步是嵌入式数据库最重要的特点。通过数据复制,可以将嵌入式数据库或主数据库的变化情况应用到对方,以保证数据的一致性。

(5)支持多种连接协议。

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇7

随着信息化社会的发展, 能够提供持续、稳定、不间断的电源供应的UPS已广泛地应用于各个业务环节, UPS可以在市电突然中断时还能持续一定时间给各设备供电, 使用户不致因停电而影响工作或丢失数据, 其重要性随着信息应用重要性的日益提高而更加突显出来。

作为UPS系统重要组成部分的单体蓄电池组, 其性能决定了UPS性能, 要了解电池性能状况需实时跟踪蓄电池的变化特性, 蓄电池监控设备是用来通过采集并分析电池特性数据, 实现对电池进行有效的管理, 其中电池特性数据的管理方式是决定系统性能的重要因素。传统的UPS蓄电池在线监控设备中对采集的数据沿用的是早期数据管理, 直接将数据存放在文件系统。由于简单的文件系统存在一些缺点, 比如数据与程序独立性差;数据共享性差, 冗余大;产品后续功能扩展差等问题导致系统性能低下。因此, 蓄电池监控系统的数据管理水平的提高是系统设计的一个重要目标。

基于此, 本文提出一种有效解决方案:在蓄电池监控系统主机中嵌入SQLite数据库管理系统, 主机实时采集的蓄电池各项特性参数管理工作交于SQLite数据库完成, 程序和数据间相互独立, 数据库管理系统提供应用程序和数据间的接口管理。本文第2节对相关知识进行介绍;第3节介绍设计方案的开发平台, 系统架构及实现方法;第4节给出方案结果验证;第5节对方案进行总结。

二、相关知识

SQLite是一种开放源码的超轻量级嵌入式数据库引擎, SQLite很小巧编译后的SQLite3.0的动态链接库只占用几百K的空间, 管理的数据量可达2TB, 提供B-Tree存储数据模式, 数据以ASCII码形式存储, 支持SQL快速查询, 具有小、快、稳定、免费特点。

SQLite支持跨平台, 操作简单, 提供Windows/Linux/Unix等各种操作系统接口, 同时能够跟很多程序语言相结合, 比如Tcl、PHP、Java等。同Mysql、Postgre SQL世界著名的开源数据库管理系统相比, 它的处理速度甚至比他们还快。

三、方案设计

(一) 方案平台。产品硬件开发平台使用了内核为32位工业级品质的CPU ARM9系列AT91SAM9260, 200MHZ主频, 32MB系统内存, 32MB FLASH存储器。基于这个硬件平台预装了微软的Windows CE5.0操作系统, Windows CE操作系统是当前市场上最流行的实时多任务操作系统之一, 微软针对CE的应用开发提供了相应的SDK开发包, 包括各种接口驱动程序API, 以及推出一系列完善的开发工具, 用户可在此基础上方便、快速的开发出各种工控产品。

(二) 蓄电池在线监控系统架构。系统由在线监测主机、单体电池传感器模块 (以下简称传感器模块) 、信号转接器组成。蓄电池在线监控系统原理示意图如图1所示, 其中传感器模块是一种电子数字传感器, 直接连接到单体电池组上, 用于测量连接的单体电池组电压, 温度及阻抗。模块之间通过标准通信线与在线监测主机以RS485或RS232通信方式进行数据交换。监控主机端通过液晶显示屏来监测参数和设定报警阀值及通信参数。同时主机通过TCP/IP网络或者RS485接口, 将采集的数据和告警事件信息实时上传给后台管理系统。 (图1)

(三) 软件设计流程。系统整个实现流程为:在线监测主机通过RS485或RS232端口定期向传感器模块发送测量单节电池的电压、电流、内阻和温度等电池参数的命令, 然后等待接收传感器发回采集的特性数据, 这些接收的特性数据一方面用于刷新监控主机的实时数据界面;另一方面被交给SQLite数据库管理系统, 保存到嵌入在本机设备中的数据库, 系统组成如图2所示。 (图2)

此外, 用户通过主机界面接口从SQLite数据库中提取电池的历史特征参数, 显示到主机的历史数据界面进行查询, 主机端具有的智能分析功能可以根据设定的报警阀值自动判断电池的性能, 发出告警信息。主机端采集的数据同时发给后台管理系统, 通过后台管理界面进行远程集中监控系统, 完成电池特性数据查询, 性能分析等处理工作。

(四) SQLite嵌入数据库实现。SQLite 3.0提供了丰富的API接口函数, 但简单的程序仍然使用三个函数就可以完成:sqlite3_open () , sqlite3_exec () , 和sqlite3_close () , 其中int sqlite3_open () 是打开指定的数据库, 如果数据库不存在, sqlite会自动建立它。如果它存在, 就尝试把它当数据库文件来打开;int sqlite3_close () 是关闭数据库, 一个数据库开启后, 结尾时不要忘了用这个函数关闭数据库;sqlite3_exec () 是使用回调来执行select操作。下面简单介绍蓄电池监控系统中嵌入SQLite数据库过程。

第一步:将编译好的sqlite3.lib, sqlite3.h, sqlite3.dll添加到项目工程文件夹中。

第二步:应用程序中加入头文件:

第三步:程序中调用API函数, 实现数据库的创建, 打开, 查询, 关闭等操作。

第四步:编译运行项目, 系统文件中将生成保存电池的特性参数的数据库文件*.db3。

四、结果分析验证

使用SQLite数据库图形化管理工具将数据库文件导入到图形界面中, 用户可以查询实时监测的电池各项特性参数, 视图效果如图3和图4。 (图3、图4)

图3是蓄电池电压-温度数据表, 记录了电池所在组号、节号, 及被蓄电池传感器模块采集的电压、温度、内阻值和该数据采集的时间点。图4是蓄电池告警事件数据表, 保存的是被系统监测到的告警事件及事件发生的时间点信息。

依据上述结果图表中得出结论:系统监测到的参数都交由SQLite数据库管理, 解决了程序独立性差的问题;数据库中的所有数据都是唯一有效地数据, 不存在多余或重复的数据;依据两个基本表的关联操作能导出局部关系视图, 方便产品的功能扩展。

五、总结

本文提出UPS蓄电池在线监测系统中嵌入SQLite数据库管理系统的方案, 详细介绍了系统架构原理和实现流程, 依据实验数据说明了将SQLite数据库管理系统嵌入蓄电池在线监测系统中, 能有效地提高电池特性参数管理的可靠性。

参考文献

[1]王力坚.UPS蓄电池监控[J].应用实践, 2010.

[2]彭艳.基于嵌入式数据库SQLite的智能导游系统[J].计算机系统应用, 2011.

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇8

随着科技的进步,视频监控系统正在向嵌入式、数字化、网络化方向发展。嵌入式视频监控系统充分利用大规模集成电路和网络的科技成果,实现了体积小巧、性能稳定、通讯便利的监控产品。本文以S3C2410为核心硬件平台开发了基于嵌入式的远程视频监控系统,并对关键技术进行了论述和研究。首先给出了系统总体软硬件设计方案,针对本系统硬件对vivi进行了修改和移植,对编译和移植Linux内核以及制作YAFFS文件系统也做了深入的研究,重点讨论了在嵌入式Linux操作系统下开发USB接口摄像头驱动程序和利用linux提供的Video4Linux API函数实现视频数据采集,其次采用背景差法实现了对视频图像中运动目标的检测,然后通过MJPEG压缩算法实现了视频数据压缩,接着介绍了在Linux下基于TCP/IP协议的socket编程,实现了视频数据的网络发送。最后着重论述了嵌入式Web服务器的设计,编写了视频监控主界面程序,并实现了基于B/S模式的视频监控系统结构。本系统采用模块化设计方法,使得设计更加简洁、高效,具有良好的扩展性和易用性,有利于系统升级。另外采用嵌入式的方法,系统成本较低,易于推广使用。

【关键词相关文档搜索】: 控制理论与控制工程;ARM;嵌入式Linux;USB摄像头;Video4Linux;嵌入式Web服务器

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇9

摘 要:将网络技术和嵌入式技术相结合的远程视频监控系统是视频采集技术的发展趋势,文中提出了一种基于对等网络模型的嵌入式远程视频监控系统的设计方案。该方案将嵌入式系统和Web开发技术相结合,再利用USB摄像头作为视频监控系统的终端进行图像采集,并使用网络TCP协议将其远程发送给服务器终端。相较于传统的Client/Server网络模型,本系统实现采用对等网络模型,即确定发送命令的控制程序既可以是客户端,又可以是服务端。文中选择嵌入式开发平台ARM系列A8处理器进行研究和设计,并采用PC机下的Linux系统作为主机开发环境。

关键词:嵌入式;视频监控;网络远程控制;对等网络

中图分类号:TP39 文献标识码:A 文章编号:2095-1302(2016)05-00-03

0 引 言

网络远程控制(Network Remote Control,NRC)是利用计算机网络对远程计算机进行操作的一种控制方式。计算机技术和网络技术目前都在高速发展,现在监控系统已经发展到网络视频监控系统[1]。网络视频监控具有数字视频监控和网络传输技术的优点,其具有不受地理位置约束、扩展方便简单、信息处理较容易等特点,可以使远程的管理和维护变成现实,只要是网络覆盖的地方,就能实现网络监控[2]。嵌入式系统向网络发展已成必然趋势,目前嵌入式系统对网络协议如TCP/IP协议和HTTP协议的支持也越来越广泛。系统硬件设备选择与配置

系统硬件设备选择凌阳嵌入式A8教学实验系统进行设计与实现。该实验箱基于ARM CortexTM-A8内核的处理器S5PV210,该芯片又名“蜂鸟”(Hummingbird),是三星公司推出的一款适用于智能手机和平板电脑等多媒体设备的应用处理器[3]。本系统使用了人机交互模块的USB接口、多媒体模块摄像头接口及通信模块以太网接口。

1.1 USB摄像头

摄像头属于视频类设备。在目前的Linux核心中,视频部分的标准是Video for Linux(简称V4L)。这个标准其实定义了一套接口,内核、驱动、应用程序以这个接口为标准进行交流。目前的V4L涵盖了视、音频流捕捉及处理等内容,USB摄像头也属于它支持的范畴。

本系统所采用的嵌入式Linux操作系统如果需要使用USB摄像头则必须在内核配置时添加Video4Linux驱动和对USB摄像头驱动模块的支持。本系统的设计与实现采用静态加载以上驱动。首先进入Linux源代码所在的目录,在终端输入make menuconfig命令,在基于Ncurses内核配置图形界面进行内核选项的配置。选中多媒体设备选项“Multimedia device->”,进入多媒体设备配置界面,选中“Video For Linux”,加载Video4Linux模块,就可以使内核实现对Video4Linux驱动的支持,为视频采集设备提供编程接口。在内核配置主界面,选中USB支持选项“USB support―>”,选中“USB Multimedia device”选项下的“USB OV511 Camera support”,使内核中加入OV511接口芯片的USB数字摄像头的驱动支持。OV511 USB 摄像头驱动配置界面如图1所示。

图1 OV511 USB 摄像头驱动配置界面

1.2 开启帧缓冲设备

帧缓冲(Frame Buffer,FB)是Linux为显示设备提供的一个接口,是把显存抽象后的一种设备,它允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。由于FB设备驱动为受限驱动,因此必须进行设备开启。本系统开发环境采用发行版Linux操作系统Ubuntu10.10,Ubuntu下启用FB设备的一般步骤如下所示:

安装v86d和hwinfo两个包查看显卡是否支持,并设置本机支持模式。

修改启动文件/etc/default/grub,如图2所示。

图2 修改启动文件图

修改modules文件/etc/initramfs-tools/modules,如图3所示。

图3 修改modules文件

更新以上两个文件并重启系统,即可查看到FB设备,具体如图4所示。

图4 查看FB设备系统软件设计

本系统软件由摄像头驱动模块、图像采集模块、网络传输模块和网络服务器模块组成[4]。摄像头驱动模块使得摄像头为应用程序编写提供系统编程接口。功能主要包括摄像头设备信息的获取与设置、设备的打开和关闭、信号通道选择、窗口初始化等。图像采集模块的作用是使用编程接口获取摄像头采集来的图像信息并进行暂时存储。服务器通过网络传输模块与远程监控PC机端进行信息交流。

2.1 V4L图像信息采集流程

V4L图像信息采集流程分为如下几步:

(1)打开摄像头设备

int vd->fd = open(“/dev/video0”,O_RDWR);

(2)读video_capability 中的信息,成功后可读取vd->capability各分量ioctl(vd->fd,VIDIOCGCAP,&(vd->capability));

(3)读video_picture中的信息,成功后可读取图像的属性ioctl(vd->fd,VIDIOCGPICT,&(vd->picture));

(4)初始化channel

int i;

for(i = 0; i capability.channels; i++){

嵌入式数据库SQLite在远程监控系统中的应用,嵌入式数据库 篇10

关键词:嵌入式数据库,SQLite数据库,Wince

0.前言

随着嵌入式系统的软硬件平台和功能多种多样, 嵌入式芯片功能的逐渐增强和现实对嵌入式系统功能要求的逐渐提高, 在嵌入式系统中逐渐要求使用数据库, 导致了嵌入式数据库系统的应用环境的要求也非常丰富多样, 其结构和采用的技术手段因为不同的需求而多种多样, 总的来说, 嵌入式数据库系统从结构上可以分为两大模块:外壳和内壳。嵌入式数据库体系结构具体见图1。

SQLite作为一款轻型的数据库, 它的设计目标是针对嵌入式产品的, 由于它占用资源非常的低, 可能只需要几百K的内存就够了, 就能在嵌入式设备中使用。相对于传统嵌入式数据库, SQLite数据库具有较好的实时性、系统开销小、底层控制能力强的特点, 并且能够高效地利用嵌入式系统的有效资源, 提高数据的存取速度, 增强系统的安全性。同时它能够支持Windows/Linux/Unix等等主流的操作系统, 还能够跟PHP、Perl、Tcl、C#、Java、Python等很多程序语言相结合, 还有ODBC接口, 同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲, 它的处理速度比他们都快。

1、SQLite的技术特点和内部结构

SQLite作为开源的轻量级的嵌入式关系数据库, 本身有三级模式结构体系, 即用户模式、逻辑模式和存储模式, 结构紧凑, 可靠性强, 其具有如下特点:

(1) 支持ACID事务, SQLite数据库不需要安装和管理配置, 在系统崩溃或失电之后可自动恢复, 不会出现数据丢失现象。

(2) 支持标准SQL, 只需要掌握3个核心API函数, 大多数的SQL语句都可以使用。特别是SQLite支持视图、触发器, 支持嵌套SQL。

(3) SQLite不同于Server数据库, 没有中间服务器进程。在使用SQLite时, 访问数据库的程序直接从磁盘上的数据库文件读写。

(4) 占用较少的存储器空间, 存储量大, SQLite完全独立, 数据库引擎和应用程序在同一系统进程中, 最高能支持2TB的数据库, 运行速度较MySQL快1~2倍。

(5) 可靠性较好, SQLite数据库的API简单、易用, 有良好注释的源代码, 支持多种语言和多个嵌入式操作系统平台, 像C/C++/C#、Linux系统

(6) 无数据类型的限制。SQLite最大的特点在于其数据类型为无数据类型 (Typelessness) 。无论这列声明的数据类型是什么, 可保存任意类型的数据到所想要保存的任何表中的任何列。在生成表结构时要声明每个域的数据类型, 但SQLite并不做任何检查。

SQLite的体系结构如图2所示, 包括内核、SQL编译器、后端/后台以及附件4个部分。该体系结构的核心是虚拟数据库引擎 (VDBE) , VDBE完成与数据操作相关的全部任务, 是客户和存储之间信息交换的中间单元, 分为操作系统接口层、存储管理层、虚拟机层及用户接口层。

其中内核是标记处理器 (tokenize) 和分析器 (parser) SQLite有自己高度优化的代码生成器, 可以快速、高效地生产出代码;SQL编译器完成SQL语句的接收、提取、执行;而后台是经过优化的B树, 这样有助于运行在可调整的页面缓冲上时, 对磁盘的查找降低到最小。再往下是页面高速缓存, 它作用在OS的抽象层之上, 这样的体系结构使数据库的可移植性变为可能。分别完成SQL指令对系统函数的调用进而执行这些指令;附件包括常用内存定位和哈西表等工具和部分Assert和MD5等测试代码。

2. SQLite数据库的应用开发

2.1 准备编译WinCE平台所需要的SQLite库文件

SQLite编译主要有以下几个步骤:

(1) 首先到http://www.sqlite.org/download.html网站下载最新的SQLite源代码包, 解压后将生成sqlite目录, 另外新建并转到一个与sqlite目录平行的同级目录, 如project目录。

(2) 在Visual C++中创建项目工程, 选择Pocket PC 2003平台;创建一个“Win32智能设备项目”;选择一个空dll项目应用程序类型;

将下载之后的文件解压放到dll项目的工程目录之下。删除其中的tclsqlite.C和shell.C文件。

(3) 修改相关代码和属性设置

在预处理器中添加“SQLITE_ENA_BLE COL-UMN METADATA”;

模块定义文件:“sqlite3.def”;

将fts3_taokenizer.C和fts3.c文件中的宏SQLITE_EXTENSION_INITl修改为“extern const sqlite3_api_routines*sqlite3_api;”。

修改项目属性中创建/使用预编译头:“不使用预编译头”;

2.2 SQLite数据库应用基础, 和所有数据库一样的步骤

(1) 连接打开数据库及数据库操作函数

如果调用成功会返回SQLITE_OK, 否则返回错误码。

(2) 构造SQL语句并执行

这和SQLite本身无关, 根据需要使用适当的方法构造, 注意传给SQLite函数的时候, 字符串编码要记得转换为UTF8/UTF16

(3) 执行SQL语句, 获取查询结果

(4) 关闭数据库函数

2.3 在WinCE应用软件中调用SQLite数据库 (1) 加载动态库和参数文件。

在项目中直接调用SQLite动态库, 将编译生成dll文件和1ib文件以及sqlite3.H

定义数据库:sqllte3*db=NULL:

记录错误信息:char*zErrMsg=O;

(2) 打开数据库

如果数据库打开成功, 则返回值为0;如果返回值不为0, 则可以根据返回值在sqlite3.h文件中查看数据库打开失败的原因。

打开数据库函数:int sqlOpen;sqlOpen=sqlite3_open (FileRoot, &db) ;

打开失败, 返回:if (sqlOpen!=SQLITE_OK) re-turn;

(4) 启动、结束事务处理:

(5) 执行SQL语句函数

3. 嵌入式数据库SQLlite的应用成果

SQLite作为一款小巧的嵌入式数据库, 发展前景很大, 在基于ARM的Wince操作系统有着广泛应用。目前, 随着智能手机的快速发展, 智能手机平台将成为GIS技术和互联网新的应用平台。以Google Map Api的导航应用为基础, 实现了一种基于Android和SQLite数据库的应用, 能够给用户提供智能化的地质数据地图导航服务。

而且SQLite数据库已经广泛应用于嵌入式家居能源控制系统的数据处理, 在家居能源控制系统中将实现设计成以数据管理为基础的方式, 通过嵌入式数据库系统有效地组织和管理家居中的各类数据, 从而达到控制系统实时查询、控制等功能的设计要求。所有对数据库的操作都在保证数据安全的前提下进行。

在嵌入式系统的数据管理中, SQLite都表现出了良好的应用效果, 为应用程序运行效率的提升提供了后台保障。

参考文献

[1]http://www.sqlit.org官方网站, 包括各种资料和源代码

[2]http;//WWW.sqlite.com.cn SQLite中文网站, 包括各种中文资料和应用文档

[3]龚星宇, 许佳, 龚尚福.嵌入式数据库的研究.现代电子技术[J], 2007

[4]唐敏, 宋杰.嵌入式数据库SQLite的原理与应用[J].电脑知识与技术, 2008

[5]太东, 卢秉亮等.嵌入式数据库SQLite在Windows程序中的应用[J].沈阳航空工业学院学报, 2009, 26[硕士学位论文]

上一篇:优化农村金融生态环境的几点思考下一篇:煤仓爆破安全技术措施