? 英创主板Python, C#实例之二 SQLite数据库--技术天地

技術天地

英創主板Python, C#實例之二 SQLite數據庫    發布時間:2020-10-16 10:44:56    被閱覽數:

  本文主要介紹在英創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數據庫包含以下信息:


英创主板Python, C#实例之二 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#的高效簡潔的特性。

Go Top