Frequentis TAPtools® - Python 在空中交通管制中的應用
引言
Frequentis 是全球領先的空中交通管理和公共安全與運輸領域安全關鍵解決方案提供商之一。公司擁有全球 500 多名員工,為客戶提供創新、以使用者為中心的解決方案。
Frequentis 一直在其 TAPtools® 產品系列中使用 Python,該系列專注於空中交通管制中的“塔臺和機場工具”部分。這些工具由空中交通管制員用於跟蹤天氣狀況、控制跑道照明以及監控和控制導航輔助裝置。
TAPtools® 產品為管理進港飛機的空中交通管制員顯示跑道和天氣狀況 放大
簡史
開發空中交通管制解決方案的問題之一是,每個客戶獨特的機場、監管環境和方法都對使用者介面的外觀和行為提出了特定且不同的要求。空中交通管制系統部署的一個重要部分是其介面的定製。
Frequentis 沒有為每個客戶從零開始開發使用者介面,而是開發了一個名為 PanView 的使用者介面佈局工具,類似於 QDesigner 或 Visual Studio 等產品。該工具用於設計和構建使用者介面,然後由名為 PanMachine 的軟體執行。PanMachine 執行在內部開發的名為 PowerPanel 的硬體上,這是一個 66MHz PowerPC,擁有 32 MB RAM 和一個 12 英寸觸控式螢幕輸入裝置。
TAPtools® 使用者介面是根據每個空中交通管制客戶的獨特要求開發的 放大
透過這些工具,Frequentis 開發人員可以在客戶面前快速製作原型佈局,大大減少了解決方案部署中所需的客戶設計研討會數量。
客戶至上
PanView 和 PanMachine 最初使用 Lua 作為指令碼語言,用於連線使用者介面與空中交通管制系統的底層功能。
這個選擇被發現對佈局實現者來說存在各種問題:
- 提供的錯誤資訊有限,使開發人員難以定位錯誤。
- 變數預設是全域性的,而不是區域性的。Python 則恰好相反,從而使程式不易出錯。
- Lua 沒有列表資料結構。儘管其字典可以作為列表使用,但這在實踐中造成了不必要的複雜性。
- 對於短指令碼來說,Lua 程式碼易於理解,但其語法和最小化的標準庫使其不適用於大型程式。
在一個非常重要的專案中,芬蘭民航局(FCAA)希望不僅在 PowerPanel 上執行其使用者介面佈局,還在網路瀏覽器中執行。這個要求非常重要,導致 PanMachine 用 Java 重新實現,以便它可以作為小程式在瀏覽器中執行。由於 Lua 不能在 Java 下執行,這是一個替換它的好時機。
選擇 Python 和 Jython(Python 的 Java 實現)是因為它們將允許 PanMachine 的 PowerPC 和 Java 實現執行相同的使用者介面佈局。Python(用 C 實現)用於 PowerPC,而 Jython(用 Java 實現)用於瀏覽器小程式。
用 Python 實現
使用 Python 重新實現進展順利。Python 語言直譯器和支援庫是用 C 編寫的,可以用大多數 C 編譯器編譯。在這個專案中,Python 嵌入到其他程式碼中的能力執行得非常好。文件非常出色,示例易於理解。
然而,PowerPanel 硬體沒有硬碟,因此無法自行編譯 Python 直譯器的 C 原始碼。為了解決這個問題,開發人員從另一臺機器上交叉編譯 Python,使用在另一種型別硬體上執行的編譯器為 PowerPC 生成目的碼。一旦完成,在任何機器上生成的 Python 位元組碼都可以在 PowerPanel 上執行而無需修改;只有語言本身的初始編譯才需要交叉編譯。
重寫 Lua 佈局
一旦基於 Python 的 GUI 佈局工具實現完成,就有必要使用 Python 重寫現有的 Lua 佈局。我們的佈局編碼員張開雙臂歡迎 Python,因為它解決了他們在使用 Lua 時遇到的所有問題,並且由於 Python 簡潔的語法和豐富的標準庫,使得編寫新程式碼更加容易。
在這次轉換中,我們發現 Python 的語法對於新使用者來說非常容易學習,我們的編碼員能夠完全重寫 Lua 佈局,以利用 Python 提供的新功能,而不僅僅是在語言層面進行移植。
完成的佈局程式碼大約有 5000 行,是原始程式碼的一半大小,更容易維護,並且在 PanMachine 的 Java 埠中與 Jython 完美配合。
結論
Python 使我們能夠在時間緊迫的專案中滿足客戶要求,同時提高了我們工具的整體質量。自從改用 Python 以來,由於各種原因,佈局實現變得更加容易:
- Python 的執行時錯誤處理使得定位和修復程式碼中的問題更容易。Python 生成的堆疊跟蹤,即使在自定義 PowerPanel 硬體上的分階段生產中執行,也有助於加快測試和除錯過程。
- Python 龐大的標準庫允許快速開發功能,而無需重新發明輪子。
- Python 非常簡潔的語法和基於縮排的程式結構使程式碼更易於閱讀和維護。
自從在開發中使用 Python 以來,為 TAPtools® 產品系列編寫新使用者介面佈局的時間縮短了三倍。
關於作者
Michael Bartl 最初於 2000 年加入 Frequentis 擔任軟體工程師,負責測試電信硬體,後來轉而開發天氣資訊系統。幾年後,他現在是 TAPtools® 產品系列的產品經理。他的主要愛好是 Java、Python 和國際象棋。
