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 和国际象棋。
