天天看點

開源飛控地面站 Openpilot GCS (現在的Librepilot GCS)源碼分析  (1)程式結構

(1)Openpilot GCS項目是插件化程式設計

開源飛控地面站 Openpilot GCS (現在的Librepilot GCS)源碼分析  (1)程式結構

(2)插件架構:

插件化程式設計的核心是coreplugin,程式運作時會直接執行coreplugin中的代碼.下面的其他plugin都要符合相同的形式,這些plugin中定義的gadget和widget類可以供coreplugin運作時調用.

我們可以根據自己的需要建立自定義plugin,需要滿足plugin類的建立格式.

因為我想基于這個開源飛控地面站項目開發自定義的飛控地面站,是以不需要研究他的插件機制是如何實作的,隻需要在他的插件架構下進行修改就行了.

(3)界面定義檔案:Defination File(DF)

Openpilot GCS的程式結構類似Server+DF檔案的格式,就是說GCS的界面布局不是在程式中設定的,而是将界面布局儲存在 xml格式的 Defination File中,主程式通過解讀xml檔案中的内容搭建GCS界面.

也就是說如果想修改地面站的界面隻需要修改Defination File就行了,而不需要修改程式的源代碼,非常友善.

但需要增加新功能或者加入新的widget時需要按照plugin格式建立新的plugin,在新的plugin中建立對應的gadget和widget. 這種插件化的程式+DF檔案的結構非常便于開發.

(4)OpenPilot項目中的Defination File 是:OpenPilotGCS_config.xml

1.OpenPilotGCS_config.xml檔案位置的查找方法:

在Coreplugin裡的mainwindow.cpp檔案中:

在void MainWindow::extensionsInitialized()函數中利用函數

    QString path=qs->fileName();

在該處添加斷點,調試過程中将path加入求職表達式.檢視path的值.就是資料庫儲存的位置.

查到的位置是:

    /home/zhiqiang/.config/OpenPilot/OpenPilotGCS_config.xml

注意:/home/zhiqiang/  是我的電腦中的主檔案夾的位置,對應不同電腦也就是各自的主檔案夾路徑;.config檔案夾是隐藏檔案夾,一般的方式無法打開。

2.檢視隐藏檔案夾

1.上面得到的檔案夾是隐藏檔案夾,無法直接被搜尋到.

2.其中/home/zhiqiang/檔案夾就是住檔案夾

3.在終端對話框中執行:(基本語句)

cd ..   退出到上一級目錄

ls -a    列出該目錄下的所有内容,以點開頭的檔案夾都是隐藏檔案夾

4.視窗界面顯示隐藏檔案的快捷鍵:

ctrl+h就可以切換隐藏檔案夾是否顯示了.

繼續閱讀