ARINC 661驾驶舱显示系统标准简述

ARINC 661 Specification Cockpit Display System Interfaces To User System(驾驶舱显示系统人机接口规范)

因为要写一个基于同步模型的显示模块编译工具,查了一下已有的异步规范。把规范囫囵吞枣地看了一遍,随手记一点东西:

ARINC 661规范也就是「驾驶舱显示系统人机接口规范」,规定了驾驶舱内显示系统(CDS)和功能部件(UA)之间的通信标准和一系列显示逻辑。其规定按照组件(Widgets)的层次进行显示,组件树组成一个层次(Layer),这也是对于一个UA而言,所能获取到的最高显示层。

CDS内核控制着GUI的渲染和运行,将物理显示设备分为一个个窗口(Window)显示,每个窗口显示一个或多个层次。CDS控制层次的可见性与活动,通过网络保持和管理层次的UA的通信。

ARINC的事件是异步的,但是UA可以定期更新其层次内各组件的参数,以根据后端数据修改其显示效果。当操作员引发事件之时,事件会单向地通知给UA。个人理解:在这个过程中,UA实际上是完全异步于CDS的。

组件的显示效果取决于编译时参数和运行时参数。所有决定组件所需内存大小的参数都必须在编译时给定。运行时参数由UA根据其后端操控,CDS负责更新显示。

组件树以及其他的一些信息,存储在定义文件(DF)里。DF有两种格式:二进制与XML。XML格式比二进制格式多出一些元信息,其具体语法从标准给的例子可见一斑:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
<?xml version="1.0"?>
<!DOCTYPE a661_df SYSTEM "a661.dtd">
<a661_df library_version="0" supp_version="2">
  <model>
    <prop name="ApplicationId" value="0x6788"/>
  </model>
  <a661_layer>
    <model>
      <prop name="LayerId" value="66"/>
      <prop name="ContextNumber" value="0x1230"/>
      <prop name="Height" value="20000"/>
      <prop name="Width" value="20000"/>
    </model>
    <a661_widget name="CabinTempPanel" type="A661_PANEL">
      <model>
        <prop name="WidgetId" value="4641"/>
        <prop name="PosX" value="11000"/>
        <prop name="PosY" value="12700"/>
        <prop name="SizeX" value="7620"/>
        <prop name="SizeY" value="5978"/>
      </model>
      <a661_widget name="TemperatureCelciusScale" type="A661_PICTURE">
        <model>
          <prop name="WidgetId" value="4642"/>
          <prop name="PosX" value="750"/>
          <prop name="PosY" value="2390"/>
          <prop name="SizeX" value="6126"/>
          <prop name="SizeY" value="2490"/>
          <prop name="PictureRef" value="SymbolTemperatureCelciusScale"/>
        </model>
      </a661_widget>
      <a661_widget name="TemperatureIndicatedPointer" type="A661_SYMBOL">
        <model>
          <prop name="WidgetId" value="4643"/>
          <prop name="PosX" value="3810" />
          <prop name="PosY" value="2390" />
          <prop name="RotationAngle" value="9100" />
          <prop name="StyleSet" value="OEM_STYLESET_FREE_COLOR" />
          <prop name="ColorIndex" value="OEM_WHITE" />
          <prop name="PictureReference" value="SymbolTemperatureIndicatedPointer" />
        </model>
      </a661_widget>
      <a661_widget name="TemperatureSelectedPointer" type="A661_SYMBOL">
        <model>
          <prop name="WidgetId" value="4644"/>
          <prop name="PosX" value="3810" />
          <prop name="PosY" value="2390" />
          <prop name="RotationAngle" value="1820" />
          <prop name="StyleSet" value="OEM_STYLESET_FREE_COLOR" />
          <prop name="ColorIndex" value="OEM_GREEN4" />
          <prop name="PictureReference" value="SymbolTemperatureSelectedPointer" />
        </model>
      </a661_widget>
      <a661_widget name="IndicatedTempDRO" type="A661_LABEL">
        <model>
          <prop name="WidgetId" value="4645"/>
          <prop name="PosX" value="2864" />
          <prop name="PosY" value="1768" />
          <prop name="SizeX" value="950" />
          <prop name="SizeY" value="622" />
          <prop name="StyleSet" value="OEM_STYLESET_NORMAL_READOUT" />
          <prop name="Font" value="OEM_STYLESET_DEFAULT_FONT" />
          <prop name="MaxStringLength" value="4" />
          <prop name="Alignment" value="A661_RIGHT" />
          <prop name="LabelString" value="24" />
        </model>
      </a661_widget>
      <a661_widget name="IndicatedUnitLabel" type="A661_LABEL">
        <model>
          <prop name="WidgetId" value="4645"/>
          <prop name="PosX" value="3984" />
          <prop name="PosY" value="1768" />
          <prop name="SizeX" value="473" />
          <prop name="SizeY" value="622" />
          <prop name="StyleSet" value="OEM_STYLESET_NORMAL_READOUT" />
          <prop name="Font" value="OEM_STYLESET_DEFAULT_FONT" />
          <prop name="MaxStringLength" value="2" />
          <prop name="LabelString" value="°C" />
        </model>
      </a661_widget>
      <a661_widget name="IncreaseSelectTemp" type="A661_PICTURE_PUSH_BUTTON">
        <model>
          <prop name="WidgetId" value="4646"/>
          <prop name="PosX" value="473" />
          <prop name="PosY" value="473" />
          <prop name="SizeX" value="2864" />
          <prop name="SizeY" value="950" />
          <prop name="PictureReference" value="SymbolArrowUp" />
        </model>
      </a661_widget>
      <a661_widget name="DecreaseSelectTemp" type="A661_PICTURE_PUSH_BUTTON">
        <model>
          <prop name="WidgetId" value="4647"/>
          <prop name="PosX" value="3984" />
          <prop name="PosY" value="473" />
          <prop name="SizeX" value="2864" />
          <prop name="SizeY" value="950" />
          <prop name="PictureReference" value="SymbolArrowDown" />
        </model>
      </a661_widget>
    </a661_widget>
  </a661_layer>
</a661_df>
发表于 2019-12-04 最后修改于 2020-01-25
Ban
请勿转载或演绎此作品
JS
Arrow Up