|
Summary
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格式比二进制格式多出一些元信息,其具体语法从标准给的例子可见一斑:
<?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>
Articles are licensed by Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.
This page was rendered on 2022-01-23 using TeXmacs version 2.1.