英创主板Python, C#实例之二 SQLite数据库

 2020-10-16 10:44:56     作者:Emtronix    

  本文主要介绍在英创Linux工控主板(ESM8000、ESM7000和ESM6800H)上,采用Python和C#编程,实现SQLite数据库访问的方法。数据库为应用程序展现的是纯粹的数据,更便于像Python、C#这样的高级语言处理。而数据的获取则通过Linux系统的后端程序(Backend),采用效率更高的C来实现,以满足数据采集过程中的协议需求和时序需求。从系统程序架构上看,SQLite数据库把上层的Python, C#应用程序与后端的C程序连接在一起。


  本文的Python和C#实例,均采用Visual Studio Code作为基本的编程工具,其代码可在主板 + ESMARC评估底板上运行,其基本的硬件环境采用采用ESM8000工控主板 + 评估底板构成,如下图所示:


esm8000套件侧面2.png


  本文实例中SQLite数据库包含以下信息:


无标题文档

IDNameValue简要说明
INTTEXTTEXT字段数据类型
0refresh-数据更新周期,ms单位
1cpu-temperature-CPU芯片温度,℃单位
2cpu-payload-CPU当前负载率,包括各个核的负载率
3eth0-网口信息,包括名称、类型(RJ45、WiFi、4G等)、IP参数、连接状态(down、up、信号强度)
4eth1-
5eth2-
6-更多网口信息


  SQLite数据库文件保存在”/mnt/mmc/sysinfo.db”。


  系统的程序架构由客户应用程序、数据库、后端程序组成,它们与硬件环境的关系如下图所示:


英创Linux主板的Python, C#实例之二 SQLite数据库.png


  对简单的接口操作,Python,C#可通过各自的通用IO库来实现,如在《英创Linux主板的Python, C#实例简介之一》一文中介绍的那样。若接口通讯需要满足特定的协议,或有特殊的实时性要求,则可采用C编程的后端程序来实现,访问硬件获得所需数据,更新至SQLite数据库中。上层的Python,C#应用程序则直接访问数据库,无需关心数据获取过程的细节。


Python应用程序


  应用程序负载创建SQLite数据库。


英创Linux主板的Python, C#实例之二 SQLite数据库.png


C#应用程序


  创建工程后,需要从NuGet添加Microsoft.Data.SQLite类库。


英创Linux主板的Python, C#实例之二 SQLite数据库.png


英创Linux主板的Python, C#实例之二 SQLite数据库.png


后端C程序


  后端C程序打开已创建的SQLite数据库,根据更新率,周期性地把CPU和网络端口信息提交至数据库。


  后端C程序源码test_emdb.c可点击下载,对不同主板需要相应的GCC编译工具如下:


主板类型GCC
ESM6800cortexa7hf-neon-poky-linux-gnueabi
ESM7000cortexa7hf-neon-poky-linux-gnueabi
ESM6802cortexa9hf-neon-poky-linux-gnueabi
ESM8000aarch64-poky-linux


  相对说来,后端C程序比上层的Python,C#程序要复杂得多,这也正好体现了Python,C#的高效简洁的特性。