注意: 雖然 JavaScript 不是本網站的必需品,但您與內容的互動將受到限制。請啟用 JavaScript 以獲得完整體驗。

Frequentis TAPtools® - Python 在空中交通管制中的應用

簡介

Frequentis 是全球領先的空中交通管理和公共安全與交通領域安全關鍵解決方案供應商之一。在全球擁有 500 多名員工,它為客戶提供創新、以使用者為中心的解決方案。

Frequentis 一直在其 TAPtools® 產品系列中使用 Python,該產品系列專注於空中交通管制中的塔臺和機場工具領域。這些工具被空中交通管制員用來跟蹤天氣狀況、控制跑道照明以及監控和控制導航輔助儀器。

Runway Control Screen

TAPtools® 產品向空中交通管制員顯示跑道和天氣狀況,以管理進場飛機的進近 放大

簡史

開發空中交通管制解決方案的一個問題是,每個客戶獨特的機場、監管情況和方法都會對使用者介面的外觀和行為提出特定且不同的要求。部署空中交通管制系統的一個重要部分是其介面的定製。

Frequentis 沒有在每個客戶的基礎上從頭開始開發每個使用者介面,而是開發了一個名為 PanView 的使用者介面佈局工具,類似於 QDesigner 或 Visual Studio 等產品。此工具用於設計和構建使用者介面,然後由一個名為 PanMachine 的軟體執行。PanMachine 在內部開發的硬體 PowerPanel 上執行,該硬體配備 66MHz PowerPC、32 MB RAM 和 12 英寸觸控式螢幕輸入裝置。

Custom Interface Screenshot

TAPtools® 使用者介面的開發滿足了每個空中交通管制客戶的獨特需求 放大

藉助這些工具,Frequentis 開發人員可以在客戶面前快速構建佈局原型,從而大大減少了解決方案部署中所需的客戶設計研討會的次數。

客戶至上

PanView 和 PanMachine 最初是使用 Lua 作為指令碼語言開發的,用於將使用者介面連線到空中交通管制系統的底層功能。

事實證明,由於各種原因,這種選擇對於佈局實施者來說是有問題的

  • 提供的錯誤資訊有限,使得開發人員難以定位錯誤。
  • 預設情況下,變數是全域性的,而不是區域性的。Python 正好相反,這使得程式更不容易出錯。
  • Lua 沒有列表資料結構。雖然它的字典可以用作列表,但這在實踐中導致了不必要的複雜性。
  • Lua 程式碼對於短指令碼來說很容易理解,但是它的語法和最小的標準庫使得它難以管理更大的程式。

在一個非常重要的專案中,芬蘭民航局 (FCAA) 希望他們的使用者介面佈局不僅在 PowerPanel 上執行,而且在 Web 瀏覽器的環境中執行。此要求非常重要,以至於導致在 Java 中重新實現 PanMachine,以便它可以在瀏覽器中作為 applet 執行。由於 Lua 無法在 Java 下執行,這是替換它的好時機。

之所以選擇 Python 和 Jython(Python 的 Java 實現),是因為它們允許 PanMachine 的 PowerPC 和 Java 實現執行相同的使用者介面佈局。在 PowerPC 上使用了用 C 實現的 Python,在瀏覽器 applet 中使用了用 Java 實現的 Jython。

用 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 和國際象棋。