一种基于ARINC661的CDS系统外部事件高效处理方法与流程

文档序号:17440837发布日期:2019-04-17 04:44阅读:624来源:国知局
一种基于ARINC661的CDS系统外部事件高效处理方法与流程

本发明涉及一种基于arinc661规范的座舱显示系统中外部事件的处理方法,属于综合式航空电子系统技术领域。



背景技术:

随着综合式航空电子系统的迅速发展,座舱显示系统作为航空电子系统的重要组成部分,也向着开放式构架发展。为适应这种发展需求,美国航空无线电协会于2001年提出了“驾驶舱显示系统人机接口规范”,即arinc661规范,该规范的提出为设计符合驾驶舱人机交互需求的显示系统提供了指导规范,它将显示系统分成两个主要功能模块,将ua(userapplications,用户应用)的逻辑功能与cds(cockpitdisplaysystem,座舱显示系统)的画面生成功能相隔离,两者通过arinc661规范定义的标准通信协议进行数据传输。

为了实现飞行员对飞机的控制功能,座舱显示系统需要响应飞行员的操作,实现人机交互。当飞行员点击座舱的显示屏幕时,座舱显示系统应能够快速响应飞行员操作并定位到被点击的窗体部件,做出反应,改变飞机状态。但是由于arinc661规范将座舱显示系统画面的显示与控制分开,建立了df文件库用于存储所有由窗体部件组成的显示画面,显示器只负责根据接收到的指令显示或隐藏相应图层或窗体部件,并不知道具体显示画面的内容,当飞行员点击显示器触摸屏时,显示系统并不能知道当前点击的窗体部件,因此,需要设计一种符合arinc661规范的窗体部件快速定位方法,使其能够根据飞行员手指在触摸显示屏上的点击位置快速查找到对应的窗体部件,以便座舱显示系统进行后续的处理。



技术实现要素:

本发明需要解决基于arinc661规范的cds系统在发生点击事件时无法快速定位窗体部件的问题,提出了一种基于arinc661的cds系统外部事件高效处理方法,通过点击事件的坐标遍历cds的窗口部件,并最终找到符合要求的窗体部件,对点击事件做出回应。

为解决上述技术问题,本发明采用了如下技术手段:

一种基于arinc661的cds系统外部事件高效处理方法,包括以下步骤:

s1、获取cds系统屏幕点击事件中点击位置的绝对坐标;

s2、根据获得的坐标依次遍历每一个有效ua的每一个图层;

s3、在每个图层内依次遍历该图层中的窗体部件,当该部件为容器类窗体部件时,进入容器中遍历容器中的子部件;

s4、结合点击位置的坐标和当前窗体部件的位置及尺寸信息,判断点击是否在该部件内部:

判断结果为是,中断遍历操作,并根据需求返回该窗体部件的信息或者改变其相关属性参数;

判断结果为否,查找下一个窗体部件;

s5、当遍历所有图层的所有窗体部件后未找到能响应外部事件的窗体部件,结束本次查找并返回无效提示信息。

进一步的,步骤s2是从每个有效ua的最后一个图层开始向前遍历。

进一步的,步骤s2优先遍历具有弹出部件的弹出图层。

进一步的,步骤s2中遍历的图层是激活状态且可见的图层。

进一步的,步骤s3是从该图层中显示在最上面的部件开始遍历。

进一步的,步骤s3中遍历的窗体部件是状态属性为可见且可交互的窗体部件。

采用以上技术手段后可以获得以下优势:

本发明提出了一种基于arinc661规范的窗体部件快速定位方法,在遍历ua内图层时,优先判断弹出图层,跳过对该ua内后续图层的遍历,此外本方法只遍历激活状态且可见的图层和可见且可交互的窗体部件,省去对无效图层和无效部件的冗余遍历,,这些操作提高了查找效率,缩短查找时间,可以帮助cds系统快速高效的对飞行员的操作做出回应。本发明方法加入了中断返回机制,在找到符合要求的部件后就中断查找线程,省去不必要的查找,提高资源利用。本发明在窗体部件查找中采用后续遍历的方法,比较符合实际的交互逻辑,相比前序遍历能够更快地响应交互时间,提高处理效率。

附图说明

图1为本发明基于arinc661规范的座舱显示系统的结构示意图。

图2为本发明基于arinc661规范的显示单元的结构示意图。

图3为本发明基于arinc661规范的座舱显示系统中图层的结构示意图。

图4为本发明一种基于arinc661规范的窗体部件快速定位方法的实例的步骤流程图。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明:

本发明提供一种基于arinc661规范的窗体部件快速定位方法,其本质是设计一种快速查找算法,根据交互点位置信息快速找到相应窗体部件。

基于arinc661规范的座舱显示系统具体结构如图1所示,包括座舱显示系统(cds)内核、定义文件(df)、用户应用(ua)和外部事件四个部分。cds内核在上电时加载df文件,在运行过程中接受ua发送的arinc661指令和外部事件模块发送的事件信息并将事件响应上报给ua,同时进行所有窗体部件的渲染和管理。df文件是符合arinc661规范的标准格式文件,可供cds内核加载并实例化生成窗体部件。用户应用ua向cds内核发送指令,控制显示画面的内容,同时接收由cds上报的事件,实现与cds间的指令交互。外部事件由飞行员触发,将飞行员的操作行为信息发送给cds内核。

图2展示了基于arinc661规范的显示单元的结构,显示单元上的每种格式都包含一组由cds的配置进行管理的窗口,窗口内细分为图层,图层包含在ua内,是ua的层次结构中级别最高的容器,同时图层提供了一个区域来显示其中的窗体部件。

一种基于arinc661的cds系统外部事件高效处理方法,包括以下步骤:

s1、获取cds系统屏幕点击事件中点击位置的绝对坐标;飞行员在点击显示屏时,显示屏以屏幕的左上角为坐标原点,捕捉点击位置生成(x,y)坐标,因为cds系统窗体部件的位置定义是以屏幕左下角为原点,所以需要进行坐标转换,将显示器获得的坐标转换到与窗体部件的绘图坐标同一坐标系下,最终得到绝对坐标。

s2、根据获得的坐标依次遍历每一个有效ua的每一个图层;根据图层的优先级管理,ua中先定义的图层会先得到绘制,最后定义的图层会渲染在最上面,在遍历过程中从每个有效ua的最后一个图层开始向前遍历。

在画面显示中,某些窗体部件需要显示在该窗口中所有窗体部件的最上面,这些部件被称为弹出部件,具有弹出部件的图层称为弹出图层,由于弹出部件会显示在所有图层的最上面,所以当一个ua中存在弹出图层的时候,优先遍历弹出图层。

图层具有两个属性:活动性和可见性。活动性属性决定该图层是否能接受指令的控制,当图层变为激活(active)状态时,图层可以接收控制指令并响应交互事件;可见性属性管理该图层的可见状态,但并不影响图层内每个窗体部件的可见性参数的当前值,当图层变为可见(visible)状态时,图层内的所有构件才能根据自身的可见性参数进行显示或隐藏。为了避免无效图层的冗余遍历,只有当图层的状态是激活且可见的时候,才对图层进行遍历。

s3、在每个图层内依次遍历该图层中的窗体部件。arinc661规范中规定图层内的窗体部件可分为容器类和非容器类两类,如图3所示,容器类部件可以作为一个父节点被引用,它可以将一些部件组合在一起设计出同一层中窗体部件的层次结构,当访问的部件为容器类窗体部件时,则进入容器中遍历容器中的子部件。

根据arinc661规范中窗体部件的绘制顺序,同一层中后定义的部件将绘制在最上面,在遍历某一个图层内的窗体部件时,应按照各部件的组织结构,采用后序遍历的方法,即从同一层中显示在最上面的部件开始遍历。此外,窗体部件有两个通用状态属性:可见性和启用性。可见性参数决定该部件是否可见,若部件状态为可见且父容器状态也为可见时,该部件会被渲染;反之若部件状态为不可见或父容器状态为不可见,该部件均不会得到渲染,即显示不可见。启用性参数决定该部件是否可交互,若部件状态为启用(enable)且父容器状态也为可交互时,该部件是可交互的;反之若部件状态为非启用(disable)或父容器状态为不可交互或该部件的可见性状态为不可见时,则该部件不可交互。根据窗体部件的不同状态,仅有状态属性为可见且可交互的窗体部件才具有事件响应能力,因此只需要遍历可见且可交互的窗体部件。

s4、结合点击位置的坐标和当前窗体部件的位置及尺寸信息,判断点击是否在该部件内部:

判断结果为是,中断遍历操作,并根据需求返回该窗体部件的信息或者改变其相关属性参数;

判断结果为否,查找下一个窗体部件。

s5、当遍历所有图层的所有窗体部件后仍然未找到能响应外部事件的窗体部件,结束本次查找,并返回提示信息提示此次点击操作无效。

本具体实施方式中提供了一个实例来进一步解释本发明方法,如图4所示:

s1、查找线程循环等待屏幕操作事件,当获取到屏幕操作事件后,得到事件坐标,从第一个ua开始进行遍历。

s2、判断当前ua是否为空;若为空,说明已经遍历完成所有的ua且未找到能响应操作事件的窗体部件,则结束此次查找线程;若不为空,则进入当前ua内部进行图层级别的处理。

s3、判断是否有弹出层;若有弹出层显示,由于弹出层的优先级最高,显示在所有图层最上面,所以只需判断操作事件是否对弹出层有效即可,即执行s4的处理;若无弹出层显示,则从最后一个图层开始遍历,执行s6。

s4、若操作事件不在弹出层内,则关闭弹出层,本次查找线程结束;若操作事件在弹出层内,则进入当前层内进行窗体部件级别的遍历,执行s5。

s5、按照顺序依次遍历弹出层内的所有可交互窗体部件,判断该操作事件是否对该窗体部件有效;若有效,则由该窗体部件响应和处理操作事件,完成此次查找线程;若无效,则结束此次查找线程。

s6、判断当前图层是否为空,若为空,说明该ua中所有图层均已遍历完成,且未找到能响应操作事件的窗体部件,则进入下一个ua,再次执行s2;若不为空,则进入当前层内进行窗体部件级别的遍历,执行s7。

s7、按照顺序依次遍历该图层内的所有可交互窗体部件,判断该操作事件是否对该层内的窗体部件有效,若有效,则由当前窗体部件响应和处理操作事件,完成此次查找线程;若均无效,说明当前图层内的全部窗体部件均不能响应该操作事件,则应进入前一个图层,再次执行s6。

s8、当遍历所有图层和窗口部件,没有找到可以响应飞行员操作的部件时,返回提示信息,提示飞行员此次操作无效。

上面结合附图对本发明的实施方式作了详细地说明,但是本发明并不局限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1