ByToradex秦海
1). 简介
SQLite是包含在一个相对很小的C程序库中的关系数据库管理系统,与其他数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。基于上述特性,SQLite非常适合于在嵌入式系统中实现一个轻量级的数据库管理,本文就展示基于嵌入式Linux和Qt GUI开发一个SQLite演示例程。
本文所演示的平台来自于Toradex Colibri iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9。
2. 准备
a). Colibri iMX6 ARM核心版配合ColibriEva Board载板,连接调试串口UART1到开发主机方便调试。
b). ColibriiMX6系统使用基于OpenEmbedded框架重新编译的集成Qt5.7 base以及Qsqllite支持的Toradex Linux image releaseV27版本以及对应的SDK.这个可以结合这里的说明自己进行编译, 也可以通过这里直接下载编译好的image和SDK文件,image更新方法请参考这里。
c). 关于开发主机SDK安装和Qtcreator开发环境的配置请参考之前发布的《嵌入式Linux基于Qt开发GPIO应用一文》。
d). 演示程序使用的LCD为10inch 18bit LVDS屏幕,请参考这里修改配置uboot显示分辨率。
3). QT演示程序开发
本文演示应用程序思路为,每隔10s读取当前系统时间以及CPU核心温度,并选择可以将数据保存到SQLite数据库中;同时程序可以查看当前数据库的数据条目。
a). QT GUI 定义,如下所示
说明如下:
./ 上面一组文本框和按键用于显示当前系统的时间和CPU核心温度,每隔10s刷新一次;点击 ”ADD”按键可以将当前显示的数据保存到SQLite数据库中。
./ 下面一组文本框和按键用于显示SQLite数据库中的数据条目,”Previous” / “Next”按键用于查看上一条/ 下一条,”Delete” 按键用于删除当前条目,”Clear” 按键用于清除整个数据库。
b). SQLite 基本操作子程序
在工程中创建了 “sqliteset.cpp” 和 “sqliteset.h” 两个文件用于定义一些SQLite数据库的基本操作应用,具体代码如下:
sqliteset.h - https://github.com/simonqin09/QtSQLiteDemo/blob/master/sqliteset.h
sqliteset.cpp - https://github.com/simonqin09/QtSQLiteDemo/blob/master/sqliteset.cpp
主要定义了下面一些函数:
---------------------------------------------------
/* 创建Database */
QSqlDatabase sql_create();
/* 关闭database */
void sql_close(QSqlDatabase DatabaseName);
/* 创建database 表格 */
QSqlQuery sql_create_table(QStringsql_table_keys);
/* 插入数据到表格 */
int sql_insert_data(QSqlQuery sql_table,QString data_string);
/* 从表格删除数据 */
int sql_delete_data(QSqlQuery sql_table,QString delete_string, int id);
/* 清除整个表格 */
int sql_clear_table(QSqlQuery sql_table,QString clear_string);
/* 获取表格当前最大id */
int sql_select_maxid(QSqlQuery sql_table,QString select_string);
/* Colibri iMX6 CPU 核心温度读取 */
QString temp_read();
---------------------------------------------------
c). 主程序
由 “mainwindow.h” 和“mainwindow.cpp” 组成,具体代码如下:
mainwindow.h - https://github.com/simonqin09/QtSQLiteDemo/blob/master/mainwindow.h
mainwindow.cpp – https://github.com/simonqin09/QtSQLiteDemo/blob/master/mainwindow.cpp
说明如下:
./ MainWindow 主程序里面主要完成了一些初始化,创建数据库,如果数据库已经存在,则将最后一条数据显示在“Record Data” 部分;另外,设置Timer,每隔10s中获取系统时间和CPU核心温度,并显示到 “Real-timeData”部分。
./ “ADD” 按键,点击动作响应,将当前获取的实时数据保存到数据库。
./ “Previous” 按键,点击动作响应,显示上一条数据库数据信息,如果已经是第一条则无动作。
./ “Next” 按键,点击动作响应,显示下一条数据库数据信息,如果已经是最后一条则无动作。
./ “Delete” 按键,点击动作响应,删除当前条目数据,并将次条目后的所有条目id 序号减掉1,保证数据库数据条目id始终是连续的。
./ “Clear” 按键,点击动作响应,将整个数据库数据清除。
./ 最后还有一个 “data_time_temp_refresh”程序为计时器链接的10s到时的响应程序,对采集数据进行刷新。
4). SQLite程序部署配置
a). 将编译好的可执行程序 “qt-sqlite”复制到Colibri iMX6模块“/home/root” 目录下。
b). 配置SQLite程序开机自启动
./ qtdemo_x11.sh,程序启动脚本文件
https://github.com/simonqin09/QtSQLiteDemo/blob/master/qtdemo_x11.sh
---------------------------------------------------
$ cp qtdemo_x11.sh /usr/bin
$ chmod +x qtdemo_x11.sh
---------------------------------------------------
./ qtdemo_launch.service,systemd自启动配置文件
https://github.com/simonqin09/QtSQLiteDemo/blob/master/qtdemo_launch.service
---------------------------------------------------
$ cp qtdemo_launch.service /etc/systemd/system/
$ systemctl enable qtdemo_launch
---------------------------------------------------
5). SQLite 示例程序演示
a). 开机后,系统自动启动程序,如下所示
b). 一个演示操作视频请点击这里观看
6). 总结
本文基于NXP iMX6嵌入式平台在嵌入式linux系统下测试SQLite数据库应用。
文章评论(0条评论)
登录后参与讨论