基于状态机的事件驱动编程技术精品PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

事件驱动编程技术的简单介绍
采用了两个最有效的技术---- 层次式状态机和事件驱 动框架
采用以代码为中心的开发方式-----这种方式为开发者 提供了一个重量级工具的轻量级替代品
从事件驱动编程的角度来理解问题---帮助读者建立层 次式状态机和事件驱动框架式解决问题的思考方式
使用面向对象的设计原则---QP 使用基本的封装概念 (类class)和单一继承作为主要的定制,特例化和扩 展框架到实际应用的实现机制。
事件处理器(QEP)
量子框架(QF)是基于有限状态机的完整实现技术, 而有限状态机能够完美运行的一个核心就是状态机内 部的状态转换。状态机的状态转换是由事件处理器( QEP )来完成的,事件处理器(QEP)作为应用系统的 一部分与量子框架一起管理整个状态机的运转。事件 处理器(QEP)支持层次式状态机,完成任意状态的进 入/退出动作。
QP(Quantum Platform )整体认识
量子框架(QF)
量子框架是基于事件驱动并发状态机的一种应用框架 它可以简单地将整个系统分为相互独立的活动对象, 每个活动对象在量子框架中被封装为一个任务,每个 活动对象中都嵌入一个状态图完成所要求的任务。活 动对象不共享任何数据,它们之间唯一的通信手段是 通过量子框架来进行事件实例的交换,量子框架是作 为“中间件”存在的。相类似的,在量子场理论中, 所有相互作用都是粒子交换的结果,这就是量子框架 之所以被称为“量子”的原因。
QP 是大型自动化设计工具的一个超轻量化的替代品
QP 能为其他的一些开源软件做补充。例如: LINUX 或 BSD(Unix的衍生系统)
基于状态机的事件驱动编程的优势
状态机会从Leabharlann 码中消除许多条件语句,甚至是呈数量 级的减少。由于明确了任何时刻系统的状态,所以状 态机要求仅测试一个变量(状态变量)来替代为确定 操作方式而测试许多变量。
应,去执行相应的计算,去操作硬件或者,去产生“ 软”事件去触发其他的内部软件组件。
当系统有许多可能的事件源,并且无法预测事件的到 达时间和次序,而且及时处理事件变得至关重要时, 这种“反应”式方法不能很好的工作。
问题还有当连续化程序在等待某类事件时,它没做任 何其他工作,也不对其他事件起反应,一直处在等待 状态,这很难满足嵌入式开发中“省电”的要求。
谢谢!
学习并没有结束,希望继续努力
Thanks for listening, this course is expected to bring you value and help 为方便学习与使用课件内容,课件可以在下载后自由编辑
典型的有限状态机的工作原理
典型的有限状态机(FSM)转换图
事件驱动编程技术的简单介绍
采用不同于“反应”式事件驱动系统,而是构造了一 个共同的程序结构,解决需要及时的处理异步事件的 难题
以一种新的思维方式思考,与传统连续化编程的方法 或者说“超级循环”或RTOS的任务不同,这里的事件 驱动式系统没有控制权,只有当一个事件到达了,程 序被调用去处理这个事件,并且控制权很快会被释放 ,这个驱动式系统能够同时等待多个事件-----所谓控 制反转
基于状态机的事件驱动编 程技术
-- 前言 绪论
报告人:周忠洋
介绍的内容
第二版书内容上的一些变化 量子平台(QP)部分概念的介绍 基于状态机的事件驱动编程简单介绍 基于状态机的事件驱动编程的优势 “飞行射击”游戏的演示
提供了一套全新的软件“量子平台QP”
实现QP的开源
以C语言为主要的开发语言(但仍使用面向对象的设 计原则)
基于状态机的事件驱动编程的优势
QP 事件驱动平台可以做到RTOS 可以做到的任何事情 ,而且事实上,QP 包含了一个完全可抢占的实时内 核和一个简单的协作式调度器。
基于事件驱动状态机的解决方案能裁剪以适合最小的 微控制器。例如超轻量级的QP-NANO 版本在仅1-2KB 字节的ROM 中融合一个层次式事件处理器,一个实 时框架和一个协作式或完全可抢占式的内核。
有限状态机的简单理解
一个对象有多个状态(注意这里的“对象”与“状态 ”都是广义与抽象的),通过事件(event)的触发使 得状态(state)之间相互跃迁(transition),可以定义在 状态切换时附加的操作(op)。而我们要实现的有限 状态机(finite state machine,以下简称FSM)便是维护 与管理这一机制的代码。
用状态进入和退出动作实现有保证的初始化和清除 安全支持行为继承的层次式状态机。 使用和维护都简单。 轻易地改变状态机拓扑。 提供了运行时效率和小的内存占用。
持续等待某些外部或者内部的事件发生,比如一个时 钟TICK,一个数据包的到来,一个按键被按下,或者 一次鼠标的点击。确认事件后这类系统产生相应的反
事件驱动的解决方法通过结合层次式状态机很容易扩 展,在管理大数目的状态化组件例如客户任务方面, 非常理想。QP 的嵌入式设计理念为每个组件的时间 和空间性能提供了关键的的支持。
基于状态机的事件驱动编程的优势
QP 补充了GUI 库,同时还 提供了高层的基于层次式 状态机的“屏幕逻辑”,由GUI 库处理底层的组件能 在屏幕上画图。
增加了两个新的组件,即支持可抢占式多任务调度 ( QK )和软件跟踪装置(QS)
超轻量级QP-NANO 版本 。QP-NANO是QP/C 或 QP/C++特性的一个子集,是为低端8 位和16位微控制 器设计的
嵌入式编程中几个重要概念
框架:可以是一个商用RTOS(uC/OS-II,ECOS),或 LINUX、WINCE等等,还可以是自己写的可以做多 线程调度的框架。
构件:可以是驱动或中间件,或者自己写的可复用IO 代码。比如:串口驱动,TCP/IP协议栈、GUI、USB 驱动等等。
状态模式:状态图在软件方法学和建模语言(如UML )中得到了普遍的认可, 对于事件驱动系统来说,状态 图方法是一种强有力的设计方法。基于模型的开发对 于当今的高复杂性、短周期的商业环境来说至关重要 。使用状态图方式进行基于模型的嵌入式系统开发, 很可能在更短的时间内构建更复杂而且可靠(缺陷更 少)的系统。
相关文档
最新文档