上位機架構
上位機使用C#、WPF技術開發。軟體并不是一個exe了事,這樣維護和協作都很難去做。
整個系統主要包括以下子產品:
主程式 | EQMSClient | 負責将各子產品組裝在一起 |
基礎類庫 | EQMS.DAL | 部分資料通路層,實作通路資料庫的功能 |
EQMS.Model | 各種結構體的定義 | |
EQMS.ProtocolInterface | 通訊協定和子產品的接口 | |
EQMS.Services | 系統流程 | |
EQMS.Tools | 各種輔助方法 | |
通訊協定 | WQMSClassLib | 水質裝置通訊協定 |
AQMSClassLib | 空氣裝置通訊協定 | |
EQMSClassLib | 其他裝置通訊協定 | |
子產品庫 | EQMS.Module.DeviceConfig | 裝置配置子產品 |
EQMS.Module.Licence | 軟體認證子產品 | |
EQMS.Module.Platform | 平台功能子產品 | |
EQMS.Module.WaterQuery | 水質報表子產品 | |
EQMS.Module.FlowMap | 流程圖子產品 | |
動态子產品 | EQMS.Module.ImportData | 導入資料子產品 |
EQMS.Module.QualityControl | 運作模式子產品 | |
EQMS.Module.SMS | 短信發送子產品 |
各部分間的邏輯關系如下圖所示:

上位機是分層設計的,但并不嚴格按照書本上定義的層去做。EQMS.Module下面的都是一些包含界面的子產品,這些子產品可能是固定加載的,也可能是動态加載的,以适應不同的站點需要不同的功能的需要。在記憶體裡的資料是核心資料,包括裝置資料和平台資料。這些資料會經采集系統進行更新,經傳輸系統發送到平台。同時,資料會定時儲存到資料庫,經過DAL層,可能儲存到SQL Server,也可能儲存到SQLite。
上位機最核心的是EQMS.Services、EQMS.ProtocolInterface和各種裝置協定。EQMS.Services控制整個站點的流程運作,什麼時候做采集,什麼時候做傳輸,都有它去完成。EQMS.ProtocolInterface裡都是一些虛類、基類,定義了流程類需要調用的函數。而各種裝置協定類則完成采集和傳輸的拼裝和解析工作。