本文主要介紹在英創Linux工控主板(ESM8000、ESM7000和ESM6800H)上,采用Python和C#編程,實現SQLite數據庫訪問的方法。數據庫為應用程序展現的是純粹的數據,更便于像Python、C#這樣的高級語言處理。而數據的獲取則通過Linux系統的后端程序(Backend),采用效率更高的C來實現,以滿足數據采集過程中的協議需求和時序需求。從系統程序架構上看,SQLite數據庫把上層的Python, C#應用程序與后端的C程序連接在一起。
本文的Python和C#實例,均采用Visual Studio Code作為基本的編程工具,其代碼可在主板 + ESMARC評估底板上運行,其基本的硬件環境采用采用ESM8000工控主板 + 評估底板構成,如下圖所示:
本文實例中SQLite數據庫包含以下信息:
ID | Name | Value | 簡要說明 |
INT | TEXT | TEXT | 字段數據類型 |
0 | refresh | - | 數據更新周期,ms單位 |
1 | cpu-temperature | - | CPU芯片溫度,℃單位 |
2 | cpu-payload | - | CPU當前負載率,包括各個核的負載率 |
3 | eth0 | - | 網口信息,包括名稱、類型(RJ45、WiFi、4G等)、IP參數、連接狀態(down、up、信號強度) |
4 | eth1 | - | |
5 | eth2 | - | |
6 | … | - | 更多網口信息 |
SQLite數據庫文件保存在”/mnt/mmc/sysinfo.db”。
系統的程序架構由客戶應用程序、數據庫、后端程序組成,它們與硬件環境的關系如下圖所示:
對簡單的接口操作,Python,C#可通過各自的通用IO庫來實現,如在《英創Linux主板的Python, C#實例簡介之一》一文中介紹的那樣。若接口通訊需要滿足特定的協議,或有特殊的實時性要求,則可采用C編程的后端程序來實現,訪問硬件獲得所需數據,更新至SQLite數據庫中。上層的Python,C#應用程序則直接訪問數據庫,無需關心數據獲取過程的細節。
Python應用程序
應用程序負載創建SQLite數據庫。
C#應用程序
創建工程后,需要從NuGet添加Microsoft.Data.SQLite類庫。
后端C程序
后端C程序打開已創建的SQLite數據庫,根據更新率,周期性地把CPU和網絡端口信息提交至數據庫。
后端C程序源碼test_emdb.c可點擊下載,對不同主板需要相應的GCC編譯工具如下:
主板類型 | GCC |
ESM6800 | cortexa7hf-neon-poky-linux-gnueabi |
ESM7000 | cortexa7hf-neon-poky-linux-gnueabi |
ESM6802 | cortexa9hf-neon-poky-linux-gnueabi |
ESM8000 | aarch64-poky-linux |
相對說來,后端C程序比上層的Python,C#程序要復雜得多,這也正好體現了Python,C#的高效簡潔的特性。
成都英創信息技術有限公司 028-8618 0660