一种HCI自适应的解决办法
数目不固定,可视实际情况而变化。每层都是一个闭环的双向回路,可进行水平双向遍历。层与层之间由父节点与长子节点双向连接。父层节点对子层节点是一对一联系,由父节点进入子层时在长子节点驻足;子层节点对父节点是多对一联系,意味着由每个子节点都可回溯至父节点。由父层切换至子层的每次遍历必须经过长子节点,然后可由长子节点依次进行水平循环遍历,子层切换至父层则比较灵活,每个子节点均可到达其父节点。
3.2 方案实现
3.2.1 内存结构设计
节点应该具备4个域,除了标示身份外还至少应该具备指向上层父节点的指针域、指向下层子节点的指针域以及指向同层左、右兄弟的指针域。
图1是一个简单的HCI结构图,从功能上看,它分为5层,第一层有5个节点项形成一个闭环,第二层闭环是第一层第一个节点的子节点组,该子节点组的第二项又有子节点组。如此下去共有5层,处在最高位置的节点其父指针为空,最低位置的节点的儿子指针为空。
图1 一个简单的HCI结构图
3.2.2 类设计
依据模型定义如图2所示的类对象。左边所示是个基本的菜单节点类,除了模型中提到的几个节点指针,还增加了几个相关的属性域,Id用来标识节点身份,displayValue用来存储菜单的显示标题,布尔成员editable指明当前节点是否可编辑,另外还增加一个ptr_function域,用来指向一个功能函数,该函数完成节点在接受确定消息后要做的工作。
图2 菜单结点的类定义和菜单代理类定义
在节点类中还定义了几个成员方法,与私有属性相关的命名符合OOP的命名规定,均使用Get—Set前缀规则。除针对几个成员属性的方法外,还引入了另外几个成员方法,CoUp执行向父节点的跳转,CoDown执行向长子节点的跳转,CoLeft和GoRight负责向左右邻居的跳转。
从软件设计独立与资源来考虑,提出一个界面代理的概念,界面代理就是基于事件驱动,处在界面与环境之间一个中间对象。外界事件的消息均由代理来接收识别,并由它调用界面元素,对界面做出改变。图2右边上部所示的定义的是菜单代理类MenuManageAgent。该类对象用来作为菜单体系与外界交互的媒介物,它用来记录菜单的头指针,菜单体系的规模以及菜单的总体状态;初始化菜单结构,创建菜单系统并代表菜单接受外来的消息,并对消息加以识别和做出合理的响应。图2右下是对外部消息的定义。消息的列表可以依据实际情况扩展和修正。
4 嵌入式HCI的可适应性实现
静态可适应的实现是基于用户主观意图进行的。这个过程强调人机交互,因此用户的工作内容很重要,一般也作为静态可适应性实现的输入参数。而实现的技术细节相对简单。在算法设计上,该种可适应性实现工作重点仍然放在用户交互内容的管理上,由用户的“交互内容”综合系统功能可以得到界面的“变更差”,进而推导出系统HCI的具体参数集的变化。
如图3所示,设备在使用环境中的动态可适应以系统状态检测开始,这是一个周期性的行为,频率依据系统在HCI上的实时性要求而定。系统状态检测应该包含几部分的工作:1)应该有监测环境参数的手段,比如传感器、接入信号等;2)要依据特定的算法来测定这个矛盾,其中包括差异的获取,尺度的制定。状态检测的结果是,是否有矛盾输出,如果有矛盾出现的情况下,还需要做决策分析,其主要任务是基于系统现有条件是否可实现动态可适应,比如已经达到了临界状态时,就丧失了这种可能性。所以这里涉及到对系统资源的管理调度。下一步就是在动态适应的情况下,采用动态适应策略对系统HCI给出合适的调整,从而达到普适环境下可动态适应的目的。
图3 动态自适应性算法流程
5 工程应用
5.1 工程介绍
我们在一个系列工程中采用了以下方案构造HCI的菜单体系。某公司研发一款嵌入式的数据采集产品,该产品的代码与数据独立存储在两个Flash芯片,通过采集外界的模拟量和数字量对其处理后进行输出。产品的人机交互界面采用按键、LED数码管,计算控制单元采用飞思卡尔半导体的微处理器Coldfire V2系列,该CPU基于变长RISC处理器核心,具有32位地址线和数据线以及集成的调试模块,MAC/eMAC单元能提供高性能的品质。
嵌入式操作系统采用Nucleus PLUS,Nucleus PLUS实时操作系统是Accelerated Technology公司开发的嵌入式RTOS产品,只需一次性购买Licenses,就可以获得操作系统的源码。最终是以C库的形式提供给用户,可以选择所需要的部分链入到应用程序中。具有如下特性:
1)快速响应时间:对临界资源的检测时间不依赖于占有该临界资源的线程执行时间长短,一旦低优先级线程释放掉临界资
- 单片机软件抗干扰的这几种办法,以后不能说不知道啦~(11-22)
- 芯片死锁的恢复办法(04-27)
- WinCE启动时频繁死机的原因分析及解决办法(03-07)
- SN2005学习系统 数字语音室解决方案(05-19)
- 以可编程DSP架构应对TD-SCDMA以及TD-LTE带来的设计挑战 (02-14)
- 基于DSP的电源解决方案(06-13)