当前位置: 首页 > news >正文

干货分享 | TSMaster小程序启动和停止的自动化控制流程

在实际应用场景中,用户常常需要按一定逻辑和时序来控制TSMaster内置功能模块的启动和停止,TSMaster软件内置有C/Python小程序和图形程序,开发者可以通过编程对这些模块的运行进行精确控制。本文将重点和大家分享一下如何通过C代码来控制TSMaster内置模块的启动与停止。

本文关键字:run_form、stop_form、C小程序、COM

目录

●  窗口启动和停止函数

●  内置小程序控制其它小程序的启停

●  通过 COM 控制小程序的启停

一、run_form和stop_form函数

在TSMaster内置的小程序有run_form函数和stop_form函数,用于控制TSMatser工作窗口的启动和暂停。例如CAN / CANFD发送窗口,通过这两个函数我们就能通过小程序编程实现对CAN / CANFD发送窗口进行控制,启动或停止发送报文。

△ 图1:小程序中的窗口启停函数 


△ 表1:run_form函数说明 


△ 表2:stop_form函数说明 

二、使用小程序控制其它小程序的启停

通过run_form函数和stop函数可以实现对TSMaster窗口的启动和停止实现控制,这里的窗口自然也包括C小程序窗口、Python小程序窗口和图形程序窗口。这样我们就可以通过代码互相控制小程序之间的启动和暂停。

🔜 如图2中,我们创建了两个C小程序,分别命名窗口名为“C 代码编辑器 [1]”和“C 代码编辑器 [2]”,我们在C小程序1中的按键事件中实现对C小程序2的控制,并在C小程序2的程序启动事件和程序停止事件中把启动信息打印到系统消息中。

△ 图2:编程控制小程序的启动和停止

在一些测试场景中我们需要控制一些小程序按顺序循环启动和暂停,可以在每个小程序中在需要停止当前小程序的时候调用terminate_application函数结束当前小程序,然后在程序结束事件中使用run_form函数启动下一个C小程序。

🔜 如图3中,我们在每个小程序的启动后两秒关闭本小程序并启动下个小程序,实现了对C小程序1、2、3的循环控制。

△ 图3:循环控制C小程序的启动和停止

另外在使用这两个函数有需要注意的一点,在使用窗口名作为入口参数时必须要把窗口的名称输入完整,例如图2中,使用这两个函数控制小程序的启停时需要完整得输入“C 代码编辑器 [1]”,而不仅仅只是“1”,否则会在系统消息窗口报错提示找不到窗口。

三、通过COM控制小程序的启停

TSMaster开放了COM的接口方便开发者通过外部程序调用和控制TSMaster工程,但是并未开放类似小程序中的run_form和stop_form的接口直接控制TSMaster工程中小程序的启动和停止。

然而这并不代表就不能通过外部的程序控制TSMaster工程中小程序的启动和停止,我们可以在这个被控制的TSMaster工程中常开一个小程序,在这个小程序中通过变量变化事件控制其它小程序的启停,这样就可以在外部程序通过调用系统变量的COM接口间接控制TSMaster工程中小程序的启停。

通过COM控制TSMaster小程序的步骤

1. 在被控制的TSMaster小程序中设置一个自动启动的小程序,在这个小程序中关联一个变量变化事件,在变量变化事件中使用run_form函数和stop_form函数控制其它小程序。

2. 在调用COM组件的外部程序中使用load_project函数导入需要控制的TSMaster工程,配置好通道数量和映射这个属性,然后使用connect函数启动TSMaster工程。

3. 使用set_system_var_generic对TSMaster工程中的系统变量赋值,触发C小程序中变量变化事件调用run_form和stop_form函数实现对TSMaster中小程序启动和停止的控制。

△ 图4:COM控制小程序的启停程序

△ 图5:COM控制小程序工程示例

http://www.lryc.cn/news/254076.html

相关文章:

  • AI视频智能分析识别技术的发展与EasyCVR智慧安防视频监控方案
  • 外包干了2个月,技术倒退2年。。。
  • 书-用数组存储高于60低于70的人单独存起来
  • 三、DVP摄像头调试笔记(图片成像质量微调整,非ISP)
  • Linux--程序地址空间
  • 【超全】React学习笔记 下:路由与Redux状态管理
  • matplotlib学习
  • 【网络安全】-安全常见术语介绍
  • C语言给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)
  • vue+elementUI的tabs与table表格联动固定与滚动位置
  • 鸿蒙4.0开发笔记之ArkTS语法基础之应用生命周期与页面中组件的生命周期(十六)
  • Android的前台服务
  • 99%小白不知道,BI报表能自动生成
  • rabbitmq技术
  • 鸿蒙4.0开发笔记之ArkTS语法基础之条件渲染和循环渲染的使用(十五)
  • 电子设备电路分析(2)-----高速激光脉冲探测器
  • WordPress(9)宝塔配置Redis
  • 【Qt之QSqlRelationalTableModel】描述及使用
  • 【Openstack Train安装】四、MariaDB/RabbitMQ 安装
  • 工业级路由器在智能交通系统(ITS)中的创新应用
  • React立即更新DOM
  • [JavaScript前端开发及实例教程]计算器井字棋游戏的实现
  • 数据结构 / 队列 / 循环队列 / 结构体定义和创建
  • Java零基础——Redis篇
  • 分支和循环
  • MyBatis-xml版本
  • 在eclipse中安装python插件:PyDev
  • 25、pytest的测试报告插件allure
  • 从零开始学习 JavaScript APl(七):实例解析关于京东案例头部案例和放大镜效果!
  • 使用Pytoch实现Opencv warpAffine方法