專案開發中通信協議的復用
基于設備研發專案的軟體開發作業,上位機與下位機的通信是資訊互動的基礎,也是軟體控制設備運行的基礎,構建合適的命令體系有利于廣泛復用基礎代碼,
基于商議好的協議內容,構建合適的代碼是必要的,
協議組成
一般來說,硬體通信關注通信硬體協議和通信內容規范,硬體協議屬于設備控制范疇,內容規范則屬于自定義命令組成范疇,以專案中用的 can 通信為例,can 協議本身由 id + data 組成;而從內容方面看,data 則由 command type + command value 組成,其中,command type 有功能碼、狀態碼、自定義碼等區別,command value 則根據不同的 command type 有不同的解釋:在功能碼中,定義 command value 為執行具體功能引數;在自定義碼中,則為對應引數,
原始做法
一般做法,根據電子方面提供的協議和硬體劃分組成,會直接創建基于模塊的命令集,從而組成基礎物件,然而,一旦協議內容有所修改后,就要對原始代碼進行修改,這違反了代碼開發的原則,
功能封裝
按照面向物件開發的思路,一個基礎物件是包含一定命令集的功能體,命令集應該具有自定義功能,可以通過外部引數配置來管理,
從面向物件的角度來看,最基礎的控制設備物件具有以下功能:
- 具有基本的 id、name 等屬性,便于區分不同物件;
- 具有管理命令內容等功能,通過 add、remove、usecommand 等操作實作增加特定命令并命名索引、根據索引移除命令,以及根據索引使用命令,并設定引數、獲得回傳值等操作,
- 從外部讀取引數檔案,并根據配置內容自動豐富引數內容,
一些體會
面向物件抽象一個直觀做法:從輸入輸出兩個方面來關注物件功能,進行抽象,輸入瞄準的是物件屬性,輸出則關注物件如何使用屬性,
本文由博客一文多發平臺 OpenWrite 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/445854.html
標籤:C++
上一篇:遍歷檔案但忽略Bash中的前兩行
下一篇:動態規劃(DP)
