docker版jxTMS使用指南:状态机的数据事件

这篇具有很好参考价值的文章主要介绍了docker版jxTMS使用指南:状态机的数据事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文讲解4.4版jxTMS中新的有限状态自动机,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容

docker版本的使用,请查看:docker版jxTMS使用指南

4.0版jxTMS的说明,请查看:4.0版升级内容

4.2版jxTMS的说明,请查看:4.2版升级内容

前文我们介绍了【本地数据总线】,4.4版jxTMS中新的有限状态自动机自然而然的就基于本地数总线机制引入了数据事件,即当某设备发送所接收并处理后的数据时,可以基于这些数据来触发状态机事件。

在状态机的定义中,和数据事件相关的是两种语句:

1、数据点事件源

'数据点事件源' VARIABLE ASSIGN msgTargetPattern

如【数据点事件源 es1 = t1.s1.v1】就定义了一个数据点源es1,其是设备【t1.s1】的v1变量。

2、事件

'事件' VARIABLE '来自' VARIABLE valueCheck?
valueCheck的语法是:
'符合' compareStatement
而compareStatement就是前文数据源相关介绍中的校验表达式

如【事件 me1 来自 es1】则当es1只要发送数据,都会触发事件me1。而【事件 me1 来自 es1 符合 >300 and <600】则只有当es1发送数据的数据大于300且小于600时,才会触发事件me1。

好了,我们实际来验证一下。

大家修改一下上篇文章中sm.py文件中的状态机sm1的定义为:

#创建状态机sm1
sm1 = stateMachine('sm1')
#sm1的定义
@sm1.define
def smDefind():
    '''
    初始状态 s0
    数据点事件源 es1 = t1.s1.v1
    事件 me1 来自 es1 符合 >300 and <600
    事件 me2 来自 es1 符合 <=300
    事件 me3 来自 es1 符合 >=600
    状态为 s0 时发生 me1 跃迁到 s0 执行 me1
    状态为 s0 时发生 me2 跃迁到 s0 执行 me2
    状态为 s0 时发生 me3 跃迁到 s0 执行 me3
    '''
    
#添加状态机的三个动作函数:
@sm1.active
def me1(smi,params):
    print(f'sm[{smi._name}] call me1')
@sm1.active
def me2(smi,params):
    print(f'sm[{smi._name}] call me2')
@sm1.active
def me3(smi,params):
    print(f'sm[{smi._name}] call me3')

#生成状态机的实例
smi1 = SMInstance(sm1,name='smi1')
#打开调试模式
smi1.debug(True)

#
#由于我们是在测试,没有设备会主动帮我们注册数据源【t1.s1】并发送数据,所以这两步都得我们自己手动来做
#
#注册数据源
jxLocalDataBus.registerSource('t1','s1')

#发送数据通知:
#根据我们的定义,这应该触发事件me2,使得状态机执行动作me2
d = {'v1':255}
#用不到发送对象,所以可以不给,但在device中送入的就是设备对象自身
jxLocalDataBus.inform(None,'s1',d)

#根据我们的定义,这应该触发事件me1,使得状态机执行动作me1
d = {'v1':555}
jxLocalDataBus.inform(None,'s1',d)

#根据我们的定义,这应该触发事件me3,使得状态机执行动作me3
d = {'v1':755}
jxLocalDataBus.inform(None,'s1',d)

大家保存sm.py,然后运行该文件看下输出结果,就能理解数据事件是怎么用的了。

有了设备主动注册数据源并主动发送自己接收并处理完的数据,我们就可以轻松实现智能硬件控制了,比如改造一下来实现:用jxTMS开发智能转运箱,会更为简洁。

参考资料:

jxTMS设计思想

jxTMS编程手册

下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:

如何用jxTMS开发一个功能

下面的系列文章讲述了jxTMS的一些基本开发能力:

jxTMS的HelloWorld文章来源地址https://www.toymoban.com/news/detail-598181.html

到了这里,关于docker版jxTMS使用指南:状态机的数据事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker版jxTMS使用指南:数据源之表达式

    本文讲解4.2版jxTMS的数据产生与校验表达式,整个系列的文章请查看:docker版jxTMS使用指南:4.2版升级内容 docker版本的使用,请参考docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 数据产生式 数据产生式是一个字符串的表达式,jxTMS在需要时将运行该表达式以获

    2024年02月12日
    浏览(39)
  • docker版jxTMS使用指南:动态管控

    本文讲解4.4版jxTMS中的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4.2版jxTMS的说明,请查看:4.2版升级内容 之前的文章中我们讲解了jxTMS提供的python侧的REST用

    2024年02月15日
    浏览(36)
  • docker版jxTMS使用指南:自定义频率型动态管控

    本文讲解4.4版jxTMS中如何自行定义一个频率型的动态管控,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4.2版jxTMS的说明,请查看:4.2版升级内容 上篇文章中我们讲解了j

    2024年02月14日
    浏览(38)
  • docker版jxTMS使用指南:python服务之设备策略

    本文讲解4.0版的jxTMS中python服务的设备策略,整个系列的文章请查看:docker版jxTMS使用指南:4.0版升级内容 docker版本的使用,请参考:docker版jxTMS使用指南 jxTMS实现的接口机对设备的数据采集与处理采取的是框架组装模式。 即jxTMS定义了一整套的设备数据采集、处理、查询/访

    2024年02月07日
    浏览(49)
  • M1Mac 使用 qemu 配置 archlinux 虚拟机的完整c++开发环境与踩坑指南

    之前写了关于 qemu 安装 archlinux 的文章, 但是还有一些内容没得到解决, 比如很多时候 ssh 连接不成功, 这时候用图形界面(默认选项)的优势就体现出来了, 并且如果需要传输文件或者需要使用对外的端口, 仅转发一个22端口是不够的, 最后就是 gdb 调试的整套环境的配置, 这些问题

    2024年02月06日
    浏览(57)
  • Docker 网络使用指南

    目录 前言 Docker网络类型 Docker 网络概念 使用 Docker 网络 运行容器并连接到网络 检查网络 清理网络资源 Docker Compose网络 Docker 是一种容器化平台,它允许你将应用程序和它们的依赖项打包成一个称为容器的独立单元。Docker 提供了一种轻量级、可移植和自包含的方式来部署应用

    2024年02月05日
    浏览(42)
  • docker全流程使用指南

    注:本部分内容参照自Ubuntu - Docker — 从入门到实践 卸载旧版本 使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装: 执行这个命令后,脚本就

    2024年02月15日
    浏览(32)
  • docker使用指南&疑难杂症

    1 构建包不成功留下一堆废镜像和容器 none 如何清理? https://blog.csdn.net/catoop/article/details/91908719 2 docker0 ip没了怎么办? 容器stop(不确定是否必须,关上保险),重启docker,再start容器 问题:Dockerfile构建镜像,旧文件一点没动,结果执行到apt各种包会报找不到。returned a non-

    2024年01月19日
    浏览(51)
  • 如何通过 Docker 使用 AutoGPT:分步指南

    AutoGPT 是一个自治的 GPT-4 代理。AutoGPT 基本上是 ChatGPT 与自己对话。它可以创建代码、执行代码,还可以访问互联网。通过与自身对话,ChatGPT 可以自行验证源代码、创建程序和调试程序。这是 AI 领域的最新大事。在本文中,我将帮助您逐步使用 Docker 运行 AutoGPT。 我假设您知

    2024年02月07日
    浏览(53)
  • 软件测试|Docker exec命令详细使用指南

    简介 Docker exec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。本文将详细介绍Docker exec命令的用法和示例,帮助大家更好地理解和使用这个命令。 Docker是一种流行的容器化平台,允许我们在容器中运行应用程序。有时候,在容器内执行命令可以帮助我们

    2024年02月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包