您当前的位置:五五电子网电子知识电器控制触摸技术目标驱动的人机界面设计 正文
目标驱动的人机界面设计

目标驱动的人机界面设计

点击数:7865 次   录入时间:03-04 12:03:42   整理:http://www.55dianzi.com   触摸技术

    (1)键值处理模块
    OSTaskCreate(KEYTaskStart,(void*)O,&TaskKey-Stk[],7);
先初始化所有的模块,然后在循环中接收并处理键盘的输入,Key-Process(char KeyValue)根据相应的输入键值和系统所处的状态,对菜单进行相应的操作。
State_Trans(char RxData)根据键值输入事件负责调度系统的状态,并在相应的状态下,根据从主系统收到的信息显示菜单。
    (2)主机通信模块
    OSTaskCreate(UARTTaskskStart,(void *)O,& TaskU-artStk[],6);
通过消息队列OSQPend(OS_EVENT*pevent,INTl6U timeout,INT8U*err),接受串口中断发来的消息队列,对其中的数据进行处理。在人机交互的过程中,需要大量的与主系统的交互,单独用一个任务负责与主系统的通信,实现串口接收数据驱动的有限状态机。
    (3)时钟模块
    OSTaskCreate(TimcTCk,(void*)O,&TimeTickStk[],5);
时钟任务,使用单片机的时钟中断,可以设置各个任务需要的定时器,通过消息队列发给需要定时的任务。

    2.3.1 串口接收数据驱动的有限状态机
    为了保证通信的可靠,系统中采用停止等待协议。在发送数据前要对数据打包,接收到数据要先解包,单片机在接收主系统发过来数据包的后需要去掉通信协议字段,然后对有效数据进行正确的处理。为此,定义了一个Frame-FSM类型的数据结构,用来对接收到的数据进行处理。
    typedefstruct{
    byte State; //当前所处的状态
    byte SYM_Plas;//转义字符标志,若为1,表示需对当前
    //数据转义
    bytc DatoLenoth;//数据长度
    byte CheekSum;//校验和
    byte Offset; //偏移地址,对应当前接收到的数据在
    //该帧中的位置
    byteFrame_Data;//帧内的有效数据 
    }Frame_FSM;
    利用主机发送过来的消息驱动有限状态机,串口接收数据驱动的有限状态机包括以下几种状态;

    ①任意状态。无论单片机原来处于何种状态,收到字符0xaa,都表明1帧新的数据即将开始发送。此时,如果单片机处于1帧正在接收的状态。就会丢弃原数据重新进入收到同步字符状态。
    ②任意状态(除了INIT_STATE之外)。无论单片机原来处于何种状态.收到字符0xfc,都表明系统中出现了转义字符。此时,将转义字符标志置1,丢弃当前接收的数据后返回;每一次进入重建帧处理函数后,系统会首先判断转义字符标志是否为l。若为l,则根据当前字符进行转义(当前字符为0x00,则转义为Oxaa;当前字符为0x01,则转义为Oxfc;如果为其他字符则丢弃),然后将转义字符标志重新清O。
    ③INIT_STATE,初始状态。在这个状态下,将重建帧的偏移地址和校验和清0,然后等待接收数据。收到起始宇符Oxaa后,将状态转入AA_SYN_STATE;收到其他字符都丢弃不理。
    ④AA_SYN_STATE,收到同步字符状态。在这个状态下,MCU将重建帧的偏移地址和校验和清0,然后将状态置为接收源地址状态。
    ⑤SRC_ADDR_STATE,收到源地址状态。此时比较源地址是否是主机地址。若是,则转接收目的地址状态;否则,转初始状态。
    ⑥DEST_ADDR_STATE,收到目的地址状态。此时比较目的地址是否是MCU地址。若是,则转接收数据长度状态;否则,转初始状态;
    ⑦DATA_LEN_STATE,接收数据长度状态。将数据长度备份,转入接收数据状态。
    ⑧DATA_STATE,接收正常数据状态。将接收的数据存入接收数组REBUF中,每接收到一个数据就将对应的偏移地址加l,接收数据长度减1,并且计算此时的校验和。当数据长度减为0时,表明l帧数据已经全部接收完毕,转入检验校验和状态。
    ⑨CHECKSUM_STATE,接收校验和状态。将接收的校验和与本地计算的校验和进行比较。如果两者相等,将状态转为INIT_STATE,然后对正确的数据帧进行处理,并给主系统发送一个确认帧;如果两者不等,丢弃该帧,状态转入INIT_STATE,等待接收新的数据帧。
    对应的状态转换图(state transition diagram)如图2所示。

    2.3.2 键值和命令码驱动的有限状态机
    这组有限状态机主要依靠用户对菜单的操作进行状态转换,即把键值和命令码作为FSM的激励源,其中键盘消息是最主要的激励源。应用层的FSM具有多种主状态,用户未按键或者是没有接收到新的数据帧时,状态处于IDLE_STATE;接收到消息后,转入对应的主状态。然后,根据按键的不同或者是接收命令码的不同,转入对应的子状态进行处理。任务处理完毕,再将状态置为IDLE_STATE,按取消键,可回到上一级状态。

    以用户控制云台上下左右转动为例,系统开始处于IDLE_STATE。若用户按云台镜头控制键,则进入云台镜头选择状态,并显示云台镜头控制菜单.选择云台控制选项后,进入云台方向设置状态;选择向上键,转入向上状态。在该状态执行向上命令操作后,状态重新转入IDLE_STATE,并伴随着输出菜单的相应变化,按取消键可回到上一级云境选择状态。对于其他按键,系统全部过滤掉不作响应,状态也不进行转换。云台控制的状态转换图如图3所示。


3、测 试

    μC/OS—IIV2.52较以前的版本,增加了两个系统任务一一CPU负荷监测任务与堆栈容量检查任务。这两个任务给程序的调试带来很大的方便。

    将系统配置常数OS_TASK_STAT_EN设为l,统计任务OSTaskStat()就会建立。它每秒钟运行1次,计算出当前CPU的利用率,放在一个有符号的8位整数0SCPUUsage中,精确度是l%。

    μC/OS-Ⅱ内存是固定分配的,通过0STaskStkChk()可确定每个任务实际需要的最大堆栈空间,根据测得结果合理地分配内存空间。表l是用以上函数测出的系统参数。

    与MSP430单片机系统相应的调试工具Embedded Workbench,可跟踪程序的运行。通过运行在PC机上Embedded Workberlch能够追踪程序中各种参数的变化,查看单片机内存的使用情况。

结语

    本系统使用μC/OS—II后,系统的总体性能有了很大提高。使用实时操作系统前。运用前后台的程序设计方式。在需要显示较多数据在屏幕上,同时又需要接收数据时,单片机处理不及时,可以通过调试工具WorkbenCh看到接收缓存接收的数据帧不完整,而不能正确地在屏幕上显示数据。移植操作系统之后,工作可靠,同时系统的反应速度,即实时性有了很大提高。文中介绍的人机界面与嵌入式主系统是独立的模块,可以灵活地在单片机上加载控制模块,适合应用于各种嵌入式系统中。

上一页  [1] [2] 


本文关键字:人机界面  触摸技术电器控制 - 触摸技术

《目标驱动的人机界面设计》相关文章>>>