ETestDEV是一款面向测试系统的测试软件开发环境,主要应用于嵌入式软件测试、快速原型验证、硬件在环测试、工业自动化测试等场景。本教程针对ETestDEV5的使用方法进行详细说明。若有疑问,欢迎留言。


流程就是一组活动按照一定顺序组成的序列流,其顺序可能是串行的、并行的,或者两者的任意组合模式。
流程图是将日常相对固定的流程,通过建立流程图模型,以图形化的形式展示程序时序和流程关系的一种交互形式;它是一种可支持灵活变化的,可由计算机实现的流程;图形化的设计通俗易懂,即使不会编程的用户也可以轻松搭建执行流程,完成流程灵活变化的业务需求。

1 流程图创建

执行程序(流程图)创建过程可参考《ETestDEV5教程41》。完成创建后,打开生成的执行程序(流程图),内容如下图所示。
在这里插入图片描述

2 流程图工具介绍

流程图工具栏功能,如下图所示。
在这里插入图片描述

3 工具说明

流程图里面的每个【事件】、【任务】都有相应的API,其属性设置和API的参数息息相关,在操作过程中如有疑惑可查看API手册(系统界面菜单栏-帮助-Python API帮助手册)中相关内容。
每个流程图对应一个设备,并与之绑定;如果需要多个设备通信,则需要多个流程图。

4 工具操作说明

抓取工具:点击抓取图标后,可以整体移动页面。
区域选择:选择部分区域,可以对选择区域内的内容进行整体操作(删除或移动,快捷键【shift】+鼠标左键)。
间隙工具:点击后会出现十字交叉线:上下移动时候,移动对象为横线下方内容。左右移动的时候,移动对象为竖线右侧的区域。
连线工具:用来连接各个内容(包括开始、结束、事件、网关、任务),箭头指向的一方为流程的下一步方向。
【可切换类型】:顺序、缺省
顺序:顺序执行。
缺省:默认路径。
开始:触发流程的执行。
【可切换类型】:结束(表明流程执行结束)
事件:发生在流程执行过程中的事件。在开始和结束之间发生的事件会影响流程的流转,但不会启动或直接终止流程的执行。
【可切换类型】:报文事件、延时事件、命令事件、信号事件
报文事件:当通道接收报文数据的时候,执行后面内容。
延时事件:当满足时间条件时开始执行后面内容。
命令事件:定义一个新的函数和参数名称,函数体为命令事件到结束符之间的内容。
信号事件:当接收到数字信号或模拟信号有变化的时候,执行后面内容。
结束:表明流程执行结束。
【可切换类型】:开始(触发流程的执行)
网关:控制流程的分支和聚合。
【可切换类型】:并发同步、互斥
并发同步:多个路径同时执行(有一个路径结束退出就全部退出)。
互斥:只会选择一个符合条件的路径执行。
任务:在流程执行过程中执行的工作。可以定义多种类型的任务,同时该任务可以进行循环设置。
【可切换类型】:内联脚本、发送、接收、动作序列、子模型、周期性
内联脚本:默认任务类型,定义一段执行脚本。
发送:给外部参与者发送消息,消息发送完毕则任务执行完毕。
接收:等待并接收外部参与者发送过来的消息,消息接收完毕则任务执行完毕。
动作序列:提供动作列表,动作包括读缓存,写缓存,读报文,写报文,模拟量输出,模拟量采集,数字量输出,数字量采集。
子模型:子流程定义在父流程里,可以展开显示他所包含的模型细节,也可以收起隐藏细节。
周期性:可以设定循环周期,或者循环次数。

5 流程图绘制方法

鼠标选中左侧工具拖拽到编辑面板内,鼠标点击不同工具图标后,会出现对应的不同内容的面板,点击下一步要连接的内容,会自动进行连线。如下图所示:
在这里插入图片描述

6 全局配置

选中界面中任意图标可以进行全局配置:
1、拟绑定设备:选择【拟绑定设备】的目的是配置【属性设置】的【通道】。
2、设置全局变量:点击【+】添加全局变量,编辑名称和初始值(可添加多个)。
3、点击【-】删除变量列表中的全局变量;如下图所示。
在这里插入图片描述

7 术语

7.1 并发同步

【并发同步】元素后面的几条路径是同时执行的。(注:当有一个路径结束,代表整个并发路径的结束)。
任务A,B后面再加一个【并发同步】,任务A,B都会被执行。这里第一个【并发同步】元素代表“并发”,第二个【并发同步】元素代表“同步”,如下图所示。
在这里插入图片描述

7.2 互斥

对应代码的if else,根据互斥元素后面线上的条件,决定走哪条路径。当i>=5时,执行【任务A】,i<5时,执行【任务B】。在互斥前面的【内联脚本】中,填写执行代码【i=10】,可以看到执行了【任务A】如下图所示。
在这里插入图片描述

7.3 缺省

点【连线】快捷工具的扳手,可以更改为【缺省】,它是默认路径。
当有两条以上的路径时,如每条线上的条件均不成立,会执行该【缺省】路径。
任务A那条路径为【缺省】,虽然i的值是7,上下两条路径条件都不成立,但是由于上路径为【缺省】,所以会执行【任务A】。如下图所示。
在这里插入图片描述

7.4 信号事件

信号事件可以调用API:

  • 数字量监听:on_digital_recv(channel, callback)
  • 模拟量监听:on_analog_recv(channel, callback)

当通道内的信号(数字信号,模拟信号)有变化的时候,会打印该信号;如下图所示。
在这里插入图片描述

7.5 命令事件

功能:新建一个函数并定义参数名称。
命令名称:新建的函数名。
参数名称:新建函数的形参名称。
命令事件后面的内容作为刚才新建函数的实体。
示例:新建一个叫myfun()的函数,形参是msg,函数myfun()实体是打印msg内容。在内联脚本【调用myfun函数】中,调用myfun(),并将100传给参数msg。实现打印【msg=100】的功能。如下图所示。
在这里插入图片描述

7.6 延迟事件

对应API:etimer.delay()。
暂停一定时间后继续; 如下图所示。
在这里插入图片描述

7.7 内联脚本

定义一段Lua执行脚本。该脚本会原封不动的,嵌入到代码中。如下图所示。
在这里插入图片描述

7.8 动作序列

提供动作列表,作用如下:
1、数据接收:异步读取通信通道的输入数据,对应的API是read_buff。
2、数据发送:异步输出数据缓存,对应的API是write_buff。
3、模拟量输出:异步设置模拟量通道输出值,对应的API是write_analog。
4、模拟量采集:异步读取模拟量输入通道的采集结果,对应的API是read_analog。
5、数字量输出:异步设置开关量输出通道状态,对应的API是write_digital。
6、数字量采集:异步读取开关量输入通道的采集结果,对应的API是read_digital。
动作列表如下图所示。
在这里插入图片描述
使用步骤:
添加一个任务,改成【动作序列】,【全局配置】绑定设备,点击加号【➕】添加变量。如下图所示。
在这里插入图片描述
在【属性设置】,点击加号【➕】添加【数据发送】,并填写他们的属性设置内容。如下图所示。
在这里插入图片描述
添加【数据接收】,并填写他们的属性设置内容,如下图所示。
在这里插入图片描述
说明:
【write_buff】功能:
【缓存数据】选msg,在【全局配置】中msg的【初始值】为【ebuff.from_hex(“11 22 33”)】,所以写缓存就是把msg的值写进缓存通道UDP1。
【read_buff】功能:
读取通道UDP2的数据,并赋值给msg2。
【通道参数选项】
是否需要填写【通道参数选项】。
需根据API手册中【使用XXX通道】的【读数据】【写数据】是否有参数option,来判断是否需要填写【通道参数选项】。
例如,udp通道,API手册里记载:
写数据:local w_res = write_buff(channel,buff,option)。
读数据:local r_res = read_buff(channel,size,tout)。
这里只有【写数据】需要参数option,所以udp通道的write_buff的【通道参数选项】是需要填写的。read_buff的【通道参数选项】是不需要填写。
通道参数:
不同通道,参数选项也不同,具体参考产品API手册中【通道的使用】,里面记载了各种通道的读写参数。例如:udp通道的【写数据】记载如下:
option:table类型,可选参数选项;
option.to_ip:string类型,目标ip地址;
option.to_port:number类型,目标端口号,所以udp通道的【write_buff】的【通道参数选项】这样写:{to_ip=“127.0.0.1”,to_port=4001};
空着不填写的情况:仿真设备上的两个udp,有连线,此时,无论是写数据还是读数据,都是不需要设定IP地址和端口号的,所以这里可以空着不填写。当然,这里也是可以填写的,信息会发送到你在这里填写的IP地址和端口。执行如下图所示。
在这里插入图片描述

7.9 子模型

当流程复杂而庞大的时候,如果全部都在一个流程图里表示,结构会十分混乱,有了子模型就可以把小功能封装到子流程里,这样流程图看起来条理更清晰。
子流程定义在父流程里,可以展开显示他所包含的模型细节,也可以收起隐藏细节。
新建【任务】,点击扳手切换成【子模型】,点击标记【-】号的方框【展开子模型】.如下图所示。
在这里插入图片描述
进入【子模型】后,搭建【子模型】内容,然后点击【子模型】的右上角的【Root】,返回主流程图。如下图所示。
在这里插入图片描述
执行如图 8-49所示。
在这里插入图片描述

7.10 周期性

周期性的循环方式有两种:
循环周期:Xms(X为整数),对应的API是etimer.interval。
循环次数:X次(X为整数),对应的是Lua里的for循环。
循环周期:例:每20ms执行一次任务A,执行5次跳出循环。如下图所示。
在这里插入图片描述
在这里插入图片描述
循环次数
例:如下图循环次数6任务A执行3次,任务B执行2次。
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐