`
isiqi
  • 浏览: 16075321 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

基于事件—目标驱动的人机界面设计

阅读更多

时钟模块

OSTaskCreate(TimcTCk,(void*)O,&TimeTickStk[],5);

时钟任务,使用单片机的时钟中断,可以设置各个任务需要的定时器,通过消息队列发给需要定时的任务。

(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 接收数据状态转换图

(2)键值和命令码驱动的有限状态机

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

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


图3 云台控制的状态转换图

3、测试

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

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

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

表1 系统参数

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

结 语

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

分享到:
评论

相关推荐

    基于事件_目标驱动的人机界面设计

    基于事件_目标驱动的人机界面设计 基于事件_目标驱动的人机界面设计

    基于事件一目标驱动的人机界面设计

    在商品竞争中,一个应用系统的成功与否在某种程度上也取决于用户使用界面的感受好坏,因此,人机界面的设计在应用系统的设计中有着重要的作用。嵌入式系统强调人机界面操作的实时性,简单化,强调在特定平台上特定...

    基于事件-目标驱动的人机界面设计

    在商品竞争中,一个应用系统的成功与否在某种程度上也取决于用户使用界面的感受好坏,因此,人机界面的设计在应用系统的设计中有着重要的作用。嵌入式系统强调人机界面操作的实时性,简单化,强调在特定平台上特定...

    基于激光雷达的室内场景三维重建系统设计

    其次进行了软件系统设计,分别设计并实现了设计了系统的人机交互界面、传感器数据传输功能、多传感器数据融合功能以及三维重建功能。最后进行测试,证明系统能够实现室内空间的三维重建,具有良好的精度。

    关于温控系统的设计详解

    设计一个基于ARM微处理器和μCLinux的嵌入式温度控制系统,要求采用PID增量算法实现对电烤箱的温度控制,并且在达到温度控制要求的同时使用4×4小键盘和触摸屏作为输入,使用了LCD、串口、网口和音频等作为输出,...

    VC与Labview、Matlab编程论文资料

    基于VC++的智能压路机人机交互软件开发.pdf 基于VC++的汽车制动系统计算与分析软件的研究与开发.pdf 基于VC++的泵-管-嘴喷油系统仿真计算及可视化研究.pdf 基于VC++的海洋平台危险气体监测系统开发.pdf 基于VC++的...

    基于Linux下MiniGUI的图像处理GUI平台设计 (2011年)

    提出了一种基于MiniGUI/Embedded图像处理系统的设计方案,重点讨论了该方案所采用的图形支持系统MiniGUI、人 机交互界面的设计和实现过程、事件消息驱动机制在该系统设计过程中的应用,以及图像处理系统和人机控制界面...

    VC与Labview、Matlab编程论文资料[2].rar

    基于VC++的智能压路机人机交互软件开发.pdf 基于VC++的汽车制动系统计算与分析软件的研究与开发.pdf 基于VC++的泵-管-嘴喷油系统仿真计算及可视化研究.pdf 基于VC++的海洋平台危险气体监测系统开发.pdf 基于VC++的...

    VC与Labview、Matlab编程论文资料[4].rar

    基于VC++的智能压路机人机交互软件开发.pdf 基于VC++的汽车制动系统计算与分析软件的研究与开发.pdf 基于VC++的泵-管-嘴喷油系统仿真计算及可视化研究.pdf 基于VC++的海洋平台危险气体监测系统开发.pdf 基于VC++的...

    基于AT89S52 单片的频率计

    图基础上的FPGA 设计、设计前和设计后的信号线传输效应分析、规则驱动的 板卡设计和编辑、自动布线和完整CAM 输出能力等。 在嵌入式设计部分,增强了JTAG 器件的实时显示功能,增强型基于FPGA 的逻辑分析仪,可以...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    1.3. 系统的开发目标 管理员通过前台页面进入后台管理模块后,可对注册的博客用户进行维护,包括对注册用户的添加、查找、修改和删除。 管理员进入登录后,可对帐户进行管理,包括添加管理员帐户、修改管理员帐户...

    自动寻迹电动小车测控系统设计

    目前对智能车辆的研究主要致力于提高汽车的安全性、舒适性,以及提供优良的人车交互界面。智能化、IT化和新能源是未来智能汽车发展的趋势。 2017年12月2日,深圳的无人驾驶公交车正式上路,从深圳福田穿梭驶出。...

    基于 .NET Core MVC 的权限管理系统,代码易读易懂、界面简洁美观.zip

    用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬...

    JiveJdon v4.6.1.zip

    JiveJdon是按照国外最新设计思想"领域驱动设计"(Domain-Driven Design 简称DDD)、基于JdonFramework自主开发的复杂软件系统,JiveJdon设计特点: 新建模:模型驱动的设计方式Evans DDD;真正OO设计和编程;功能增加...

    windows编程课程设计,基于.NET、C#、MySQL、Windows Forms实现的图书管理系统.zip

    用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬...

    基于.NET5+IdentityServer4+Vue+Sqlserver 的统一授权认证系统,包含系统管理界面。.zip

    用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬...

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    基于Asp.net Core 3.1开发的权限管理系统.zip

    用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬...

Global site tag (gtag.js) - Google Analytics