原英文 oosmos 官网
无意中看见大牛的微博提及,正好物联网也是本人感兴趣的领域,正好周末闲暇,翻译下文章,切换下心情。水平有限,还请路过的大侠多指点。
正文:
-
什么是OOSMOS
OOSMOS(Object-Oriented State Machine Operating System)代表面向对象的状态机操作系统。它是一个以基本的上下文为对象的操作系统,而不象传统的以线程为对象。因为没有线程,所以没有线程栈(译者:消耗较小资源),所以OOSMOS是一个理想的用于那些传统的基于线程的操作系统无法满足的内存紧张的平台环境。
OOSMOS 有着强大的分级状态机引擎可以管理非常复杂的事件驱动系统。
-
OOSMOS的优点
- 很适合:
物联网(IOT)
教育-STEM
创客活动
医疗设备
自动化设备
控制系统
航天系统
企业
逻辑控制/工作流
各种界面切换控制
机器人
基础的只要是事件驱动的系统 - 免费
- 适合 c 甚至 c++
- 封装简单
- 对CPU消耗低
- 没有线程,也就没有线程栈
- 特别的进行了面相对象的封装和无关信息隐藏
- 灵活扩展
- 高效,对象的时间和内存消耗固定
- 强大的状态机引擎
支持不限数量的当前对象超时。 - 支持状态查询
- 支持异步函数
- 支持正交区域
- 支持状态机调试
- 支持事件管理
事件码通过对象的类来管理
事件支持参数传递
事件支持发布/订阅模式
事件对象有自己的事件队列 - 移植方便,基于c 89,还在以下的环境测试:
MPLABX(包含ChipKit的PIC32系列)
Arduino(AVR,ARM)
ChipKit(PIC32,使用类Arduino或者MPLAB X)
Energia(MSP430,使用类Arduino IDE)
Intel Galileo
mbed(ARM,使用web IDE)
MSP430
LightBlue Bean
ESP8266
Linux(树莓派)
Windows(Visual Studio)
-
OOSMOS是怎么工作的-简介
OOSMOS由对象组成,每一个对象可以有一个状态机能反映对象当前的状态。
工作时,最重要的是可视化,所以让我们看一些已经运行一段时间的状态机(图 1)
图1 两个运行态的对象状态切换图
上图中,红框代表对象的当前状态,我们看到A的状态是On,B的状态是Off。
OOSMOS循环地一个一个运行每一个对象。
当OOSMOS反转对象A时,A就变成On状态,唯一退出On状态的方式是tm(m_TimeOnMS)超时,超时前,每一次都运行A。OOSMOS会检查对象是否超时,如果超时,将会向对象发送TIMEOUT事件,对象将会调用oosmos_Transition方法,状态由On切换为Off。在切换的同时,OOSMOS将会在On状态调用EXIT事件,然后调用ENTER事件,变成Off状态。如果没有超时,切换就不会发生,对象会一直保持当前状态。 -
学习OOSMOS的最好方式
学习OOSMOS最好的方式是下载和解压项目,然后编译其中的例子,选择你最合适和熟悉的平台。修改下代码,看下新的项目行为,从而通过比较学习。
开始学习时,Windows或者Linux例子是不错的选择,你可以用源码级别的调试工具去设置断点和现实变量。
OOSMOS用户手册涵盖所有的概念和技术点。OOSMOS API参考手册提供快速的函数和宏查看。
over,have fun!