便携式航电实时系统测试平台工作台设计

  • 测试设计工作台

系统安装完成后,可以启动测试设计工作台,进行测试过程的设计。

测试设计工作台软件启动的快捷方式图标为:

  • 1 快捷方式标

测试设计主界面如下图所示。

  • 2 测试设计工作台主界面
    1.  测试项目

在进入ETest测试设计工作台后,需要建立测试项目。

测试项目作为测试设计内容的单位,保存了测试项目执行过程的各种信息。

每个测试项目保存为一个后缀名为esi的文件,作为所有项目方案信息的载体。

测试项目功能位于主菜单的“文件”菜单项下。如下图所示。

  • 3 “文件”菜单
      1. 新建项目

“新建项目”功能创建一个新测试项目。

选择菜单栏的“文件”à“新建项目”菜单(或使用快捷方式Ctrl+N),或者工具栏的“新建项目”按钮,进入新建项目功能。

弹出“新建项目”对话框,输入“项目名称”和“存储位置”信息。如下图所示:

  • 4 新建项目界面

项目名称填写要求如下:

  1. 最大字符数量为50
  2. 首字母只能是中文、字母(a-z/A-Z)或下划线(_)
  3. 名称只能包含中文、英文字母(a-z/A-Z)、数字(0-9)、以及下划线
      1. 打开项目

 “打开项目”功能用于打开已经存在的.esi文件。

选择菜单栏的“文件”à“打开项目”(或使用快捷方式Ctrl+O)菜单,或者快捷方式栏的“打开项目”按钮,系统弹出文件选择对话框。在磁盘上选择要打开的测试项目文件,即可完成打开项目的操作。

      1. 保存项目

进入便携式航电实时系统测试平台主界面,选择菜单栏的“文件”à“保存项目”菜单(或使用键盘快捷方式Ctrl+S),或者工具栏的“保存”按钮,实现对测试项目的保存,如下图所示:

  • 5 保存项目
      1. 最近打开的项目

“最近打开的项目”功能,可以实现对测试项目的快捷打开。

在“文件”菜单下的“最近打开的项目”列出了最近使用过的测试项目(最多显示15个项目名称)。点击项目名称和路径,可以快速打开最近使用过的测试项目,如下图所示:

  • 6 最近打开的项目界面

打开测试项目时,如果当前有打开的测试项目,在执行“打开”操作时,软件会给出是否保存现有修改内容的提示。

    1. 测试项目内容

测试项目内容显示在窗口中的“项目”子窗体中。如下图所示:

  • 7 测试项目内容

本节对其中的内容进行详细介绍。

      1. 仿真模型

仿真模型描述了测试仿真环境外围接口的数量、类型等信息。

仿真模型包含了待测系统、外围系统、通道和通讯协议。

1)待测系统:为一个图标,表示被测件。

在ETest环境中,被测件为一个黑盒子,其内部结构不关心。

2)外围系统:用图标表示。表示和被测件有交联关系的其他设备或部件。

3)通道:代表被测件外围的通信接口,具有特定的类型。

4)协议:代表通信接口上进行数据通信的消息。

在窗口右侧的项目下双击“仿真模型”或鼠标右键点击“仿真模型”并单击“编辑”按钮,即进入仿真模型编辑界面,如下图所示。

  • 8 仿真模型初始界面

1、从左侧工具栏中用鼠标左键选中“外围系统”图标,拖拽到“仿真模型”窗体中,可以实现在“仿真模型”中添加外围系统。

2、从左侧工具栏中“通道”区域选中某一类型的通道,拖拽到“外围系统”图标上,可以实现在“仿真模型”中添加通道。

3、在“通道”图标上首先点击鼠标左键选中,然后单击鼠标右键,在弹出菜单上选择“添加协议”,可以实现在“仿真模型”中添加协议。

一个仿真模型的例子可以如下图所示:

  • 9 仿真模型
        1. 模型通信

模型通信功能可以描述外围系统之间的通信功能。

1、首先在“仿真模型”界面添加多个“外围系统”。

2、鼠标双击“模型通信”节点,打开“模型通信”界面。如图所示。

  • 10 模型通信界面

3、用鼠标在任意两个外围系统之间画线,进行连接。

  • 11 模型通信界面连线

4、双击任意连线,进入接口配置界面。

  • 12 模型通信通道配置

5、点击“更改”按钮进行接口类型的选择。

6、点击“协议”标签页,进行通信协议的编辑。

  • 13 模型通信协议定义

7、关闭“通信配置”界面,在“模型通信”界面点击进入“采集”标签页。

  • 14 模型通信采集信息

8、勾选需要采集的数据。这些数据将自动上传。

9、创建“实时任务-自定义CPP任务”,命名为“test”。在Main函数中填写如下代码。

  auto pro1 = Protocol_外围系统_1_1_T();  //相对界面现实的协议名需要加”_T”

  pro1.seg1(1).seg2(2).seg3(3).seg4(4).seg5(5).seg6(6);

  if(!outSys_1.write(pro1)){

      KYIO(err) << "Data Send Protocol_外围系统_1_1_T failed.";

      return -1;

  }

  Timer_T::delay(1);

  if(!outSys_2.read(pro1)){

      KYIO(err) << "Data Read Protocol_外围系统_1_1_T failed.";

      return -1;

10、创建“测试目录-TCPython用例”,命名为“TCPython用例_1”,加入如下代码。

API.Platform.VXWorks.StartVXScript(CH_232_1.HostIP,CH_232_1.HostPort,RTTask.test)

11、点击“环境设置”,进行环境设置。

12、打开“实时数据查看工具。

  • 15 模型通信采集信息

13、切换到“TCPython用例_1”界面,点击“运行”。

  • 16 运行测试用例

14、实时数据监控界面显示了收/发的数据,并且进行了上传。

  • 17 上传的数据
        1. 待测系统

待测系统又称被测系统,是指开展测试工作所针对的被测对象。每个仿真模型中有且仅有一个待测系统,不能被删除。

对待测系统可以进行“重命名”和“属性”的操作。

        1. 外围系统

外围系统是指与待测系统具有交互关系的外部系统,每个待测系统对外都会连接一个或多个外围系统。在实际测试环境中,待测系统与外围系统一起构成了一个可运行的完整整体。

仿真模型工具栏,如下图所示:

  • 18 仿真模型工具栏

从仿真模型工具栏按住外围系统图标,拖拽该图标到仿真模型编辑区域,即可实现添加外围系统的操作。如下图所示:

  • 19 添加外围系统
        1. 通道

通道是指外围系统与待测系统之间传输的通路。每个外围系统上都可以添加一个或多个通道,通过接口类型进行区分,如:RS232通道、CAN通道、AD通道、DA通道、DI通道、DO通道等。

  • 20 仿真模型工具栏

用户从“仿真模型”工具栏通道列表中,选择待测系统所需的通道模型,通过拖拽方式添加到某个外围系统图标上(通道模型只能添加到外围系统模型上),系统会弹出添加通道对话框。系统默认的通道的名称是“CH_”+通道类型名+“_”+序号(1、2…),如下图所示:

  • 21 新建通道

输入新名称或使用默认名称(命名方式与项目名称的命名规则相同),点击“确定”后就在“外围系统”中添加了一个通道结点(根据测试项目的需要每个外围设备上可以添加一个或者多个通道)。如下图所示:

  • 22 通道菜单

菜单中提供了重命名、添加协议、删除和属性子菜单,通过点击可以分别实现通道命名、通道添加协议、删除通道和查看通道属性的功能。

        1. 通讯协议

通讯协议又称通讯规程,是指通信双方对数据传送控制的一种约定。在通道模型上,可以添加一个或多个通讯协议,其表现为通道与待测系统之间的一根连线。

通讯协议规定了系统中的通信内容格式或实际物理信号的参数组成。对于总线类型的接口,协议就是指通信协议的字段组成,它规定了通信协议的报文头、报文内容的组成、报文内容校验的方式、报文尾等。对于物理信号,协议模板规定了对信号描述的参数构成,该参数构成完整地描述了信号的特征。

选择通道,点击右键,在弹出菜单中选择“添加协议”,可以实现协议的添加。

用户在仿真模型界面鼠标右键“协议”对象,弹出右键菜单窗口,可以实现重命名、编辑、删除和属性查询操作,如下图所示:

  • 23 协议操作功能
          1. 协议的编写

在ETest中,使用“协议描述语言”(简称DPD语言)的方式进行协议内容的描述,即ICD的描述。

ICD的基本构成是“协议单元”,是用Protocol关键字和End关键字括起来的一段代码。其中包含了若干个用Segment关键字打头的“字段”的定义。每个字段具有类型、名称、默认值等参数。

例子:

Protocol Protl

    Segment Head StandardUInt32 Default=0 ByteOrder=Small

    Segment Type StandardUInt8 Default=0

    Segment Length StandardUInt32 Default=0 ByteOrder=Small

    Segment Tail StandardInt8 Default=0

    Segment CheckBit StandardUInt8 Default=0

End

有关DPD语言的详细描述,见第四章。

          1. 固定内容协议

在ETest中,对部分非总线类型的接口,由于不涉及复杂的通信数据包格式,因此采用固定内容的协议进行描述。用户不需要也不能对这些协议进行修改。

固定内容的协议有:

  1. 模数转换通道

待测系统的数模转换通道(DA通道),可以实现对待测系统DA输出信号的采集,软件提供的标准通讯协议模板如下图所示:

  • 24 模数转换通道通讯协议
  1. Quantity:表示模数转换通道的物理量输出值,单位是mV。
  1. 数模转换通道

待测系统的模数转换通道(AD通道),可以实现对待测系统AD输入信号的模拟,软件提供的标准通讯协议模板如下图所示:

  • 25 数模转换通道通讯协议
  1. Quantity:表示数模转换通道的物理量输入值,单位是mV。
  1. 数字输入通道

待测系统的数字输出通道,可以实现对待测系统数字输出信号的采集,软件提供的标准通讯协议模板如下图所示:

  • 26 数字输入通道通讯协议
  1. Quantity:表示输出的数字信号值,取值范围0或1。
  1. 数字输出通道

待测系统的数字输入通道,可以实现对待测系统数字输入信号的模拟,软件提供的标准通讯协议模板如下图所示:

  • 27 数字输出通道通讯协议
  1. Quantity:表示输入的数字信号值,取值范围0或1。
  1. PWMIN通道

待测系统PWM信号输出通道,可以实现对待测系统PWM输出信号的采集,软件提供的标准通讯协议模板如下图所示:

  • 28 PWMIN通道通讯协议
  1. Freq:表示输出的频率信号值。
  2. ZKB:表示输出的频率信号的占空比,用值555表示占空比为55.5%。
  1. PWMOUT通道

待测系统PWM信号输入通道,可以实现对待测系统PWM输入信号的模拟,软件提供的标准通讯协议模板如下图所示:

  • 29 PWMOUT通道通讯协议
  1. CMD:表示是否启动频率信号的输入,1表示启动,0表示停止;
  2. Freq:表示输入的频率信号值。
  3. ZKB:表示输入的频率信号的占空比,用值555表示占空比为55.5%。
  1. 计数通道

待测系统计数输出通道,可以实现对待测系统脉冲计数输出信号的采集,软件提供的标准通讯协议模板如下图所示:

  • 30 计数通道通讯协议
  1. Quantity:表示计数通道的计数输出值。
  1. 频率输入通道

待测系统的频率输出通道,可以实现对待测系统频率输出信号的采集,软件提供的标准通讯协议模板如下图所示:

  • 31 频率输入通道通讯协议
  1. Quantity:表示频率通道的频率输出值。
  1. 频率输出通道

待测系统的频率输入通道,可以实现对待测系统频率输入信号的模拟,软件提供的标准通讯协议模板如下图所示:

  • 32 频率输出通道通讯协议
  1. Quantity:表示频率通道的频率输入值。
          1. 编辑窗口

在上图中,点击“编辑”菜单,或者通过鼠标双击仿真模型图形界面上的协议对象,进入协议编辑界面。如下图所示:

  • 33 协议编辑

协议内容按照不同颜色进行区分,作为语法提示。各种颜色表示的意义如下:

  1. 蓝色:关键字;
  2. 红色:字符串;
  3. 藏青色:数字;
  4. 绿色:注释;
  5. 深蓝,加粗:类型;

进入协议编辑界面时,窗口左边会自动显示协议模型工具栏。编辑协议的时候,可以根据需要从左边拖拽基本类型、控制语句或自定义的协议到编辑区。如下图所示:

  • 34 协议模型工具栏

经过编辑的协议如下图所示:

  • 35 编辑的协议内容

编辑窗口上方有工具栏,有:导入、导出、保存为模板、语法检查、注释选中、取消注释、查看文档的功能。

在协议编辑区单击“Alt+D”,可弹出协议编写提示框,用户可以根据需要选中自己所需要的协议内容。

          1. 协议方向

在仿真模型的界面上,代表“协议”的连线具有一定的方向,可以是单向的,也可以是双向的。

标准协议的方向为固定值。其他协议的方向可以由用户进行设置。设置方法为:

点击协议“属性”菜单,进入协议属性界面,如下图所示:

  • 36 协议属性

通讯类型协议方向可以选择为“向待测系统写入”,在仿真模型的界面显示为如下图所示:

  • 37 协议向待测系统写入方向

通讯类型协议方向可以选择为“从待测系统读取”,在仿真模型的界面显示为如下图所示:

  • 38 协议从待测系统读取方向
      1. 测试环境规划

测试环境规划是指为满足待测系统的测试需求,对测试环境的构建设计。测试环境包括所需要的测试设备、所需要的测试用计算机。通过测试环境规划,测试人员在设计测试流程时,就可以根据测试需求,开展基于测试需求的测试设计,确定测试设备和测试用计算机与待测设备的连接关系。

测试设备是指用于支撑开展待测系统测试工作,所必须具有的测试硬件设备。在通用嵌入式系统测试平台软件中,测试设备主要是测试用的接口板卡,也可以包括一些专用的测试设备(如网络分析仪、数字万用表、数字示波器)等。所有的测试设备一端必须连接到测试用计算机上,另外一端需要连接到待测系统。

测试用机的规划时,分测试服务器和测试客户端。

一般情况下,测试服务器不需要连接测试设备,测试服务器主要用于开展测试流程的调度和对测试客户端进行管理。当然,测试服务器也可以兼做测试客户端使用,此时相当于测试服务器与测试客户端使用一台测试用机。

每个测试客户端都与一个或多个测试设备相连,最终由测试设备与待测系统相连,每个测试客户端承担的是对外围系统的仿真任务,根据所规划的测试用机的多少,一个测试客户端可以承担一个或多个外围设备的仿真任务,这完全取决于测试设计人员如何开展仿真设计,通用嵌入式系统测试平台软件完全提供了这种灵活性。

最终形成的测试环境拓扑图如下图所示:

  • 39 测试环境拓扑

便携式航电实时系统测试平台的软件架构,使得该软件可以支撑采用windows操作系统的测试用机,也可以支撑采用VxWorks实时操作系统的测试用机,还可以进一步支撑实时与非实时的混合系统分布式仿真。

例如,在上图中测试用机1可以采用VxWorks操作系统,测试用机2和测试用机3可以采用windows操作系统。

在便携式航电实时系统测试平台中,软件提供的测试环境规划包括设备规划和PC规划两步。在“规划目录”下,包含了一个到多个“设备规划”;每个“设备规划”下面,又可以包含一个到多个“PC规划”;最终只有一个“PC规划”为“活动”状态。运行时进行“环境设置”的时候,模式使用当前为“活动”状态的PC规划,及该PC规划所属的设备规划。

        1. 设备规划

设备规划用于管理测试中需要使用的接口通信设备,将他们对应到仿真模型的通道上,并且支持对每个通道的物理参数配置,例如:波特率、端口号、通道号、电压量程等。

          1. 新建规划

在软件界面右侧的“项目”树形结构窗口中,每个“规划目录”下可以配置多个设备规划,每个设备规划下可以配置多个PC规划。在“规划目录”上点击鼠标右键,弹出菜单如下图所示:

  • 40 规划目录菜单

点击“新建规划”菜单项,弹出新建设备规划命名对话框。如下图所示:

  • 41 新建规划

规划命名最大字符数50个,超出或者有不符的字符输入会在后面有红色“!”闪烁和声音提示。命名完成点击“确定”后,在“设备规划”结点下新建一个设备规划,如下图所示:

  • 42 新建规划

在设备规划上点击鼠标右键,弹出菜单界面如下图所示:

  • 43 设备规划菜单
          1. 编辑

点击设备规划“编辑”菜单,进入编辑界面,界面左边会出现“设备”工具栏。如下图所示:

  • 44 设备规划编辑

设备规划编辑界面包括“物理设备”和“待规划通道”两个部分。“物理设备”部分显示测试需要使用的板卡列表,包含了名称、型号、厂家、版本四个属性。在第一次创建时,“物理设备”列表内容为空,系统会在“待规划通道”自动列出仿真模型中所有的通道。

“设备工具箱”工具栏会列出平台提供的所有板卡。用户从“设备工具箱”中选择需要的设备,拖拽到物理设备区,即可实现添加板卡操作。如从设备工具箱中拖拽“USBKY7815”设备添加到“物理设备”列表。

双击“物理设备”列表中的“USBKY7815”设备,“物理通道”列表会显示该设备的所有通道类型和数量。如下图所示:

  • 45 设备通道

选中设备,点击软件右侧“属性”标签栏,显示该物理设备的属性配置窗口。如下图所示:

  • 46 属性配置窗口

在“待规划通道”列表选中需要规划的通道,用鼠标拖拽该通道到“物理通道”列表对应的物理通道上,通道类型一致的情况下,鼠标会变为可放置的状态,放开鼠标,即可实现通道绑定。如下图所示:

  • 47 绑定通道

上图中,通过将“待规划通道”列表中的“CH_数字输出_1”拖拽到“物理通道”列表中的“数字输出”行上,通道的规划绑定,实现了仿真模型数字输出模拟通道与实际陪测设备USBKY7815通道关系的映射。

点击绑定的通道,点击右边的“属性”,属性窗口显示当前通道的各种参数。以串口RS232为例如下图所示:

  • 48 串口属性

端口名即是RS232的端口号,根据物理设备使用的端口号选择。不同的通道具有不同的属性,根据实际情况对通道的属性进行配置,如上图所示。

重建待规划通道会自动提取仿真模型的所有通道类型,显示通道的规划状态。如果修改了仿真模型,点击重建待规划通道会刷新通道列表。如需重新规划通道,必须先在物理通道中取消规划后再绑定。

        1. PC规划

用户创建完成硬件规划后,需要创建PC规划。PC规划用于描述测试用计算机和被测件连接关系,用于建立分布式的测试环境。分为Win客户端和Vx客户端。两者的区别是,Win客户端不能配置下位机,测试脚本只使用Python脚本;Vx客户端需配置下位机,测试脚本使用Python调用C++实时脚本。

注:如果在没有VX下位机的环境里使用VX客户端,软件在环境设置的时候会被无限期挂起。

          1. 新建规划

点击设备规划“新建PC规划”菜单,弹出新建PC规划命名对话框。如下图所示:

  • 49 PC规划命名

在规划名称栏输入PC规划名称,PC规划的命名字符数最大为50个,输入不符的字符会在名称栏后有红色的“!”闪烁提示,点击“确定”按钮后,在右侧项目树中增加新建的PC规划。如图所示:

  • 50 新建PC规划

在新建的PC规划上右键会出现PC规划菜单,如下图所示:

  • 51 PC规划菜单
          1. 编辑

点击PC规划的“编辑”菜单,系统会弹出PC规划编辑窗口。同时左侧的工具栏会自动切换到“终端”工具栏。如下图所示:

  • 52 PC规划编辑

PC规划编辑区包括服务器、客户端和重建待规划设备三个部分。系统会在重建待规划设备只自动列出PC规划的所有设备。如下图所示:

  • 53 重建待规划设备

服务器的IP地址和端口号显示在工作区上方。可以通过修改IP地址和端口号进行重新设定。如果用本机测试默认即可。如需修改,点击“...”即可进入修改界面。如下图所示:

  • 54 服务器地址端口

用鼠标拖拽终端工具栏下的客户端到客户端列表,填写新的或使用默认的IP地址和端口号,客户端列表就添加了一个客户端。点击操作栏的“删除”,可以删除客户端。如下图所示:

  • 55 PC规划客户端

如需对客户端的地址和端口号进行修改,点击地址栏或端口栏后的“...”,在弹出的界面修改确定即可。如下图所示:

  • 56 客户端地址

服务器、客户端地址错误会导致“环境设置”无法进行,一般情况下不要修改服务器、客户端地址。

点击客户端,如果设备与客户端没有绑定,设备栏显示为空。如果设备与客户端已进行绑定,在设备栏就会显示设备列表,设备的状态就会显示为已规划。如下图所示:

  • 57 PC规划完成

进入PC规划界面,重建待规划设备栏就会显示所有的待规划设备。如果需对已做了规划的所有设备进行重新规划,点击“重建待规划设备”后,就取消了所有设备规划,无需在设备栏一一进行删除操作,然后再把设备重新绑定即可。

          1. 数据采集方案

进入PC规划界面,添加了“VXWorks”客户端后,会出现“数据采集方案”按钮,如图所示。

  • 58 数据采集方案按钮

点击该按钮后,会进入“数据采集方案”界面。如图所示。

  • 59 数据采集方案界面

该界面列出仿真模型中所有的通道、协议和协议的字段。用户可以以字段为单位进行勾选。选中的字段为客户需要采集的数据字段,在使用特定API的情况下,对勾选的字段进行输入/输出操作时,系统会自动将输入/输出值从下位机上传到上位机进行保存。用户可以在“实时数据查看”工具中实时查看上传的数据,也可以使用“历史数据查看”工具过后进行查看该数据字段的值。

系统提供了“全部选择”和“全部取消”字段,用于对字段进行全部选择和全部取消。选择完毕后,点击“保存退出”按钮,保存选择信息并退出该界面。

在实时脚本中使用“外围系统”对象的read和write接口,使用该外围系统所连接的协议的协议对象作为参数,即可完成相应通道的接收或发送操作,并同时完成数据的上传。比如:如下图仿真模型,可以实例化“外围系统_2”对象,调用outSys.write(pro5)和outSys.read(pro2)就完成了通过通道“发送端”发送数据和通过通道“接收端”接收数据,并将发送的数据和接收到的数据上传。

  • 60 数据采集示例仿真模

外围系统_2 outSys;  //初始化一个外围系统对象

//协议对象初始化,注意为” Protocol_5_T()”和” Protocol_2_T()”相比ETest界面//多了字符”_T”

auto pro5 = Protocol_5_T().发送时间(1).采集时间(0).信号幅值(0.5);

auto pro2 = Protocol_2_T();

if(!outSys.write(pro5)){

      KYIO(err) << "Data Collect Protocol_5_T failed.";

      return;

}

Timer_T::delay(1);

if(!outSys.read(pro2)){

      KYIO(err) << "Data Collect Protocol_2_T failed.";

      return;

}      

          1. 设为活动PC

点击“设为活动”菜单,将当前PC规划设为有效状态。活动的PC规划是测试执行阶段默认使用的PC规划(只有设置了活动的PC规划,后面的环境设置才能操作)。设置为活动的PC规划后,当前PC规划的背景色变为深灰色,如下图所示:

  • 61 PC规划设为活动状态
      1. 监控设计

监控窗体的设计可以创建用户自定义窗体界面,在测试执行过程中,可以运行监控窗体,通过控件显示接口数据值的变化,或者操作控件修改测试数据。每个监控控件绑定到协议字段或者某种操作上,进行数据的显示或控制。

测试人员可以建立多个实时监控窗体;在测试执行时,确定需要运行哪个或哪些监控窗体。

监控设计可以实现添加、删除监控控件,并支持修改监控控件的绑定目标、名称、位置、大小等内容。

        1. 新建文件夹

在右侧项目树下选择监控目录,鼠标右键出现监控目录菜单选项。如下图所示:

  • 62 监控目录菜单选项

点击“新建文件夹”菜单后出现监控命名窗口,如下图所示:

  • 63 监控命名窗口

监控文件夹的命名字符数最大为50个,不符的字符输入会在名称栏后有红色的“!”提示。

测试监控的新建文件夹功能是为了给监控目录进行分组,使监控目录列表简洁明了,方便用户进行查看。文件夹可以建立子文件夹,也可以建立多个监控。监控文件夹的菜单如下图所示:

  • 64 监控文件夹菜单
          1. 建立子文件夹

监控目录可以创建多级文件夹,即监控目录可建一级文件夹后,也可以建的二级文件夹。

建立的二级文件夹如下图所示:

  • 65 二级监控文件夹
          1. 新建监控

点击监控文件夹“新建监控”菜单,弹出数据监控命名窗口。如下图所示:

  • 66 新建监控

监控名称字符数最大为50个,超出或输入不符的字符在后面会有红色“!”提示。输入名称点击确定后进入监控编辑窗口,如下图所示:

  • 67 新建监控
          1. 重命名

点击监控文件夹“重命名”菜单,弹出重命名对话框,如下图所示:

  • 68 重命名

重命名字符不符的即不能输入,也有声音提示。输入名称点击“确定”,就完成了重命名操作。项目树下的监控文件夹显示为新名称。

          1. 删除

点击监控文件夹“删除”菜单,弹出确认删除对话框“确认要删除选中监控目录吗?”,点击“是”按钮,删除监控文件夹成功。点击“否”按钮,取消删除监控文件夹。

        1. 新建监控

点击监控目录“新建监控”菜单,弹出“新建数据监控”对话框。输入监控名称,点击“确定”,即可完成增加一个测试监控的操作。

选中监控,鼠标右键,弹出菜单界面如下图所示:

  • 69 新建监控菜单
          1. 编辑

点击数据监控“编辑”菜单,进入监控面板编辑界面。界面左侧监控有“通用、监视、控制”三组控件,每组的每个图标代表一种监控仪器。如下图所示:

  • 70 监控编辑界面

从界面左侧监控界面选中监控仪器,拖拽该控件到中间编辑区,使用鼠标调节控件大小和位置。如有多个仪器需要一起调节,使用鼠标拉框全部选中监控仪器,然后通过操作设计下的菜单实现调节大小操作。如下图所示:

  • 71 选中全部的监控仪器

选中全部的监控仪器后,每个仪器的边框上会有8个点显示,分为白色和黑色。白色表示后面的批量仪器大小调节以这个仪器为基准,黑色按照白色基准调节。如下图所示:

  • 72 基准仪器

通用调节菜单表示的意义如下:

  1. 上对齐:按基准仪器上边框对齐(如果有两个或以上仪器在同列会发生重叠现象);
  2. 高度一致:按基准仪器调节高度相同;
  3. 上下等距:每个仪器间的间距相等;
  4. 下对齐:按基准仪器下边框对齐(如果有两个或以上仪器在同列会发生重叠现象);
  5. 左对齐:按基准仪器左边框对齐(如果有两个或以上仪器在同一水平会发生重叠现象);
  6. 宽度一致:按基准仪器调节宽度相同;
  7. 左右等距:每个仪器间的间距相等;
  8. 右对齐:按基准仪器右边框对齐(如果有两个或以上仪器在同一水平会发生重叠现象)。

如在监控编辑界面添加了一个仪表盘和列表框,选中仪表盘,点击右侧“属性”栏,进入“仪表盘”的属性界面,设置属性参数。如下图所示:

  • 73 监控仪器属性

固定方向:定义某个控件绑定到容器的边缘;

停靠方向:定义要绑定到容器的控件边框(固定方向和停靠方向设计时不需要选择,用户在调节控件的大小和位置时,软件已自动做了设定);

点击样式的下拉菜单,如图所示:

  • 74 仪表盘样式

这里有五种仪表盘样式,根据需要可以选择不同的样式,现在选择“ 整圆”。

点击“值”,弹出下拉菜单。如下图所示:

  • 75 选择绑定目标

下拉菜单中红色表示协议,灰色表示协议段。双击协议段或约束变量(此时的变量为脚本中已经创建好的约束变量)就实现了绑定操作(通过监控仪器观察脚本运行过程中的测试数据,必须要绑定协议段,否则无法实现),如下图所示:

  • 76 绑定目标

点击报警方式下拉菜单弹出已经添加好的报警方式,鼠标单击选择要设置的报警方式。如下图所示:

  • 77 选择报警方式

报警条件的选择与报警方式的选择一样。

报警的效果图如下图所示:

  • 78 报警效果

注:监控控件的属性能够选择报警方式和报警条件;但必须在设置界面统一进行设置。

鼠标点击监控编辑界面任一位置(非监控控件位置)进入警报设置界面,如下图所示:

  • 79 警报设置

右边属性显示警报的设置界面,在这里设置表示对这个界面所有的监控控件进行统一设置报警方式和报警条件。点击报警方式后面的“...”,弹出界面如下图所示:

  • 80 报警方式编辑器

点击“新添”,如上图所示,弹出报警方式(闪烁报警)。成功添加了报警方式后如下图所示:

  • 81 选择报警方式

对报警方式进行编辑:右侧的“杂项-Description”进行描述,描述完毕后左侧的“描述”下显示对应的内容。“Name”可以进行自定义,默认为闪烁报警,定义完成后左侧的“名称”处显示对应的内容。

点击报警条件后面的“...”,弹出界面如下图所示:

  • 82 报警条件编辑器

点击“新添”,如上图所示,弹出两种报警条件(特定数据、范围数据)。选择“特定数据”,进入特定数据设置界面(可以添加多个特定数据),如下图所示:

  • 83 特定数据报警条件

右侧“杂项”中的“AllowedDelt”代表允许处理的误差范围,此处只针对浮点数,对整数而言默认0即可,“Description”表示对报警条件的描述信息,内容在右侧的“描述”中显示。

点击“KeyPoints集合”后面的“...”,进入集合编辑器,如下图所示:

  • 84 集合编辑器

点击“添加”,出现如下图所示界面:

  • 85 特定数据设置

在右边属性的Value值中输入数据即完成一个特定数据的设置,如需设置多个特定数据,则重复多次添加操作。绑定的控件数值达到设置的特定数据条件时会发生报警提示。

选择范围数据(可以添加多个),进如入界面如下图所示:

  • 86 范围数据

LowBound表示下限数据,UpperBound表示上限数据;如设置为40、60,表示在大于40, 小于60范围内的数据出现就会报警。在监控控件属性报警方式、报警条件下拉菜单中选择,这样才完成报警方式和报警条件的设置。如下图所示:

  • 87 选择报警条件

最大值和最小值的设置范围表示仪表圆盘的最大与最小的显示范围。最大/小值位数小于等于五。

          1. 重命名

鼠标右键点击“监控目录-监控方案”,选择“重命名”菜单,弹出重命名对话框。在“新名称”栏输入想要更改的名称点击“确定”,即完成重命名操作。若操作过程中不想重命名了点击“取消”即取消重命名操作。

          1. 删除

鼠标右键点击“监控目录-监控方案”,选择“删除”菜单,,系统显示提示窗口“确认要删除选中监控吗?”点击“是”,删除数据监控;点击“否”则取消删除操作。

        1. 测试监控控件

监控控件位于“监控”工具栏中。使用的时候,用鼠标左键选中监控控件,拖动到测试监控编辑面板,即可完成控件添加操作。成功添加的控件可通过鼠标拉动边框实现调节大小、拖拽实现移动位置操作。在控件上右键点击删除,即可删除该控件。

监控控件分为“通用、监视、控制”三个组。每个组中有不同的监控仪器。不同的控件有不同的操作方式,有的只能在监控设计界面设置数据,软件进行环境设置后进入图形监控界面观察或操作,如需修改数据,必须返回到监控设计界面设置,更改后“保存”“清理环境”后重新进行环境设置再进入图形监控界面才能查看;有的控件在图形监控界面修改数据即可操作例如趋势分析曲线。

          1. 通用
            1. 分组控件

分组控件是可以把另外的控件放在分组控件中组成一组的控件。只要移动分组控件就可实现整组控件的移动。分组控件在监控设计的图形和属性参数列表如下:

  • 88 分组控件
  1. 分组控件属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方向

None或选择其他停靠方式

外观

背景

用于该控件的背景图像

文本

控件标题名称

例如:新建“分组控件”其中新建“仪表盘、数字仪表”此时仪表盘和数字仪表组成一个小组,如下图所示:

  • 89 分组控件应用

如果在分组控件中鼠标右键选择“删除”组件中所有的控件将随分组控件一起全部删除。

            1. 标签控件

“标签”是用来标识其他控件或者绑定目标的工具,方便用户查找目标。在标签控件属性文本栏输入名称,鼠标焦点离开后,监控设计界面的标签就会显示名称,移动文本栏的名称就可以调整标签名称的位置。标签控件在监控设计的图形和属性参数列表如下:

  • 90 标签控件
  1. 标题控件属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方向

None或选择其他停靠方式

外观

背景

用于该控件的背景图像

文本

控件标题名称

例如:新建一个标签控件和数字仪表控件,标签控件命名为:数字仪表,且放置在数字仪表控件的上方,如下图所示:

  • 91 标签控件应用
            1. 脚本按钮

“脚本按钮”是用来发送脚本的控件。首先把控件添加到监控设计界面中,在该控件的“属性-数据”中的“脚本”栏编辑脚本并保存,文本栏输入名称即完成了控件的设置工作。环境设置后进入工具栏下的图形监控界面,找到该控件点击,即可实现脚本发送。脚本按钮在监控设计的图形和属性参数列表如下:

  • 92 脚本按钮

  1. 脚本按钮属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方向

None或选择其他停靠方式

数据

脚本

编辑脚本

外观

背景

用于该控件的背景图像

文本

控件标题名称

软件运行测试脚本的过程中想要让脚本停止运行,只要在脚本按钮中编辑脚本,脚本的编辑采用Python语言,与测试用例中编写Python脚本一致。点击“脚本按钮”控件即可成功发送脚本并停止当前脚本的运行,脚本运行完毕后继续点击此脚本按钮继续执行按钮中脚本。在图形监控工具中如下图所示:

  • 93 形工具中的脚本按钮

脚本编辑界面如下图所示:

  • 94 脚本按钮编辑界面
            1. 简单按钮

“简单按钮”是用来发送绑定目标内容的控件,与控制组的缓冲编辑、多选项、下拉框、列表框、文本框等控件一起使用。在简单按钮属性事件栏绑定通道或协议,使用控制组中的缓冲编辑、多选项、下拉框、列表框、文本框某个控件绑定相同通道或协议的某个字段值,环境设置后进入图形监控界面,编辑字段值,点击简单按钮就实现了发送绑定目标内容功能。简单按钮在监控设计的图形和属性参数列表如下:

  • 95 简单按钮
  1. 简单按钮属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

事件

可以选择通道或协议事件

外观

背景

用于该控件的背景图像

文本

与控件关联的文本

简单按钮的属性窗口如下图所示:

  • 96 简单按钮属性

点击事件后面的“...”,弹出用户操作编辑器,如下图所示:

  • 97 用户操作编辑器

双击通道事件或协议事件,属性“事件”就绑定了该事件,如下图所示:

  • 98 事件绑定

同时,添加一个多选框控件,绑定到简单按钮绑定的事件对应的值;同时,“选择项(集合)”添加3个值(0、1、3),标题分别为1、2、3;运行监控;在监控界面点击选中多选框中的一个标题,然后点击“简单按钮”;此时打开串口调试助手进行观察,可以发现接收到协议数据,并且协议字段的值为多选框中被选中的值。如下图所示:

  • 99 简单按钮功能
            1. 实时参数调节

“实时参数调节”就是可以在实时任务运行过程中对全局变量参数进行修改,使全局变量值改变的控件。把实时参数调节添加到监控设计界面中,在属性参数名中绑定全局变量。环境设置后进入图形监控界面,实时脚本运行过程中找到该控件,修改变量名称的变量值,在输出值窗口就可以看到全局变量的输出值。实时参数调节在监控设计的图形和属性参数列表如下:

  • 100 实时参数调节
  1. 实时参数调节属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

参数名

全局变量

外观

背景

用于该控件的背景图像

            1. 实时脚本

“实时任务脚本”是能执行实时测试脚本运行的控件。该控件需要上位机与下位机联通才能操作。把实时脚本控件添加到监控设计界面,在属性脚本名中输入名称,环境设置后进入图形监控界面找到该控件,通过导入、复制粘贴或手动输入等功能编辑实时脚本,保存后点击执行,就会实现与运行脚本相同的功能。实时脚本在监控设计的图形和属性参数列表如下:

  • 101 实时脚本
  1. 实时脚本属性参数表
          1. 监视

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

脚本名

脚本的标题名称

外观

背景

用于该控件的背景图像

“监视”是监控分组的一个类型,表示在监控设置界面通过绑定通道事件、协议事件、协议段或约束变量目标,在图形监控界面可以观察到脚本运行过程中绑定目标数据变化的一组控件。

            1. 趋势分析

 “趋势分析”是根据一组数据变化产生的结果,从而确定变化趋势或变化规律的一种分析方法。把趋势分析控件添加到监控设计界面中,在Y轴高度设置Y轴的最大值,在Y轴起点设置最小值。显示图例True/False即是否显示曲线名称。“趋势分析”在监控设计的图形和属性参数列表如下:

  • 102 趋势分析
  1. 趋势分析属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

Y轴高度

1(显示的数据最大范围)

Y轴起点

0

曲线名称

名称

显示图例

True/False

外观

背景

(可以选择图片作背景)

文本

控件标题

趋势分析曲线的主要设置在“图形监控”界面完成,其操作界面如上图所示相同。

“添加曲线”就是导入.txt文件的数据,txt里只能有一列数据,如下图所示:

  • 103 Txt文件数据

“删除曲线”可以选择把添加的某一条曲线删除“”,选中某一条曲线选择“确定”即可完成删除曲线的操作,如图所示:

  • 104 删除曲线

“显示范围”是指设置显示已添加曲线某一段区间的数据。例如添加的曲线是1~10的数据,设置显示5~7的数据,如下图所示:

  • 105 显示范围设置

趋势分析图如下图所示:

  • 106 显示范围

“统计项”下拉菜单如下图所示:

  • 107 统计项菜单

选择“全部勾选”,最大值、最小值、平均值、中位数、方差、标准差都会在“趋势分析”图下方显示,也可以根据需要自由选择。如下图所示:

  • 108 勾选统计项效果
  1. 中位数,又称中点数,中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数
  2. 方差,应用数学里的专有名词,是各个数据与其算术平均数的离差平方和的平均数;
  3. 标准差,在概率统计中最常使用作为统计分布程度上的测量。标准差定义为方差的算术平方根。
            1. 缓冲浏览

“缓冲浏览”是以十六进制数显示绑定通道事件或协议事件读写数据的控件。把缓冲浏览控件添加在监控设计界面,在属性目标内容栏绑定目标,环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从“缓冲浏览”查看到绑定目标的数据,缓冲浏览控件如下图所示:

  • 109 缓冲浏览

缓冲浏览控件在图形监控界面查看到绑定目标数据如下图所示:

  • 110 缓冲浏览效果
  1. 缓冲浏览属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

目标内容

绑定通道或协议事件

外观

背景

(可以选择图片作背景)

文本

控件标题

            1. 缓冲曲线

“缓冲曲线”是以曲线形式显示绑定通道事件或协议事件读写数据的控件。把缓冲曲线控件添加在监控设计界面中,在属性目标内容栏绑定目标内容(通道事件/协议事件中的内容),环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从缓冲曲线控件查看到绑定目标数据形成的曲线图。监控设计的图形如下所示:

  • 111 缓冲曲线
  1. 缓冲曲线属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

目标内容

绑定通道或协议事件

用户脚本

自定义脚本

外观

背景

用于更改该控件的背景图像

文本

编辑控件名称

例如新建缓冲曲线,选中此曲线控件设置“属性-数据-目标内容”选择“协议事件”中的内容,如下图所示:

  • 112 缓冲曲线属性设置

进行环境设置后运行脚本,打开图形监控工具查看到绑定目标曲线效果图如下所示:

  • 113 缓冲曲线效果
            1. 数字仪表

“数字仪表”是用数字显示绑定目标数据的仪表。把数字仪表添加在监控设计界面中,在属性值的下拉菜单绑定栏绑定目标,根据需要设定数字长度、小数长度,报警条件是特定数据或范围数据,报警方式是闪烁报警。环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从数字仪表控件查看到绑定目标的数值。监控设计的图形如下图所示:

  • 114 数字仪表
  1. 数字仪表属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

数字长度

整数

小数长度

整数

绑定目标

绑定协议段或约束变量

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

自定义公式

外观

背景

(可以选择图片作背景)

文本

控件标题

现新建一数字仪表,选中数字仪表,点击右侧工具栏中的“属性-数据-数字长度”设置为5,最大设置到6位,“小数长度”设置为“1”最大可设置为4位,设置“值-绑定目标/报警方式/报警条件”,“公式”可自定义完成后点击“保存”,在编写“公式”时绑定的目标用“x”表示,自定义公式符合基本运算法则。设置完毕后,点击“环境设置”打开工具中的“图形监控”运行脚本,查看监控界面数字仪表的运行状态如下所示:

  • 115 数字仪表运行报警
            1. 仪表盘

“仪表盘”是指盘式的指针仪表。把仪表盘添加在监控设计界面中,在属性值的下拉菜单绑定栏绑定目标,根据需要设定“最大值、最小值”,“报警条件”是“特定数据或范围数据”,“报警方式”是闪烁报警。环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从仪表盘控件查看到绑定目标的数值。仪表盘的样式有五种显示形式如下图所示:

  • 116 仪表盘
  1. 仪表盘属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

样式

可选择:整圆/四分之三/二分之一/四分之一/宽弧度

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

最大值

根据绑定目标数值范围设置最大值

最小值

根据绑定目标数值范围设置最小值

外观

背景

用于该控件的背景图像

文本

控件标题

仪表盘设置好属性中的内容后在“图形监控”界面中的运行图如下所示:

  • 117 五种仪表盘样式运行
            1. 指示灯

“指示灯”是用来表示绑定目标不同状态的控件。

把“指示灯”添加在监控设计界面中,在属性值的下拉菜单绑定栏绑定目标,根据需要设定报警条件和报警方式。“报警条件”选择特定数据或范围数据,“报警方式”选择闪烁报警。环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从指示灯控件查看到绑定目标的状态。监控设计的图形如下图所示:

  • 118 指示灯
  1. 指示灯属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

/

/

绑定目标

可绑定协议字段或约束变量

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

当“指示灯”设定“亮”的值为“1”时,指示灯样式变为设定的图形样式(默认为红色),当“指示灯”设定“灭”的值不为“1”时,指示灯显示的样式变为设置的样式(默认为上图设计所示样式)。指示灯运行时默认设置颜色如下图所示:

  • 119 指示灯亮
  • 120 指示灯灭
            1. 图示状态

“图示状态”是用不同图片表示绑定目标不同值的控件。

把“图示状态”控件添加在监控设计界面中,在属性值的下拉菜单绑定栏绑定目标,根据需要设定报警条件和报警方式。报警条件是特定数据或范围数据,报警方式是闪烁报警。在有效状态栏设置绑定目标的不同值绑定不同的图片。环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从图示状态控件查看到绑定目标的状态。监控设计的图形如下图所示:

  • 121 片状态

新建“图片状态”控件,设置“属性-数据-有效状态” 弹出如下图所示对话框:“添加”3个值,例如此处添加了“1、2、3”将对应的“图片”设置成三个不同的图片,脚本运行到某个值时,图片的状态显示成对应的设置图片状态。如下图所示:

  • 122 添加片状态

数值运行到“1”时,“图片状态”显示如下图所示:

  • 123 数值为1时片显示状态

数值运行到“2”时,“图片状态”显示如下图所示:

  • 124 数值为2时片显示状态

数值运行到“3”时,“图片状态”显示如下图所示:

  • 125 数值为3时片显示状态
  1. 图片状态属性参数表
            1. 文字状态

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

未匹配

可选择图片匹配

有效状态

选择不同的图片与不同的值对应

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

“文字状态”是用不同标题表示绑定目标不同值的控件。

把“文字状态”控件添加在监控设计界面中,在“属性-数据-有效状态(集合)”弹出如下图所示对话框,添加有效状态数值,此处添加了3个数值(0、1、2):

  • 126 设置文字有效状态

“值”的下拉菜单绑定栏绑定目标,根据需要设定报警条件和报警方式。环境设置后进入图形监控界面找到该控件,脚本运行过程中就能从文字状态控件查看到绑定目标的标题。监控设计的图形如下图所示:

  • 127 文本状态

按照上面添加的文字状态,当脚本运行的值为0时,文本状态显示出设置的标题为“数值为0”,当脚本运行的值为1时,文本状态显示出设置的标题为“数值为1”,当脚本运行的值为2时,文本状态显示出设置的标题为“数值为2”运行显示图如下所示:

  • 128 数值为0时文字状态
  • 129 数值为1时文字状态
  • 130 数值为2时文字状态
  1. 文本状态属性参数表
            1. XY曲线

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

未匹配

/

有效状态

绑定目标不同值与不同标题对应

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

“XY曲线”是指横坐标表示X、纵坐标表示Y的控件。

把“XY曲线”控件添加到监控设计界面中,X轴Y轴自适应选择为True时,X轴Y轴会根据绑定目标数值自动增加,显示图例True/False即是否显示曲线名称,曲线可以设定为不同的颜色(请选择深颜色,否则有可能看不到曲线),X轴Y轴值的绑定栏都必须要绑定协议段或约束变量,报警条件选择特定数据或范围数据,报警方式是闪烁报警。如下图所示:

  • 131 XY曲线设置

环境设置后进入图形监控界面找到该控件,运行测试脚本的过程中就可观察到绑定目标产生的曲线。监控设计的图形如下图所示:

  • 132 XY曲线

监控运行时如下图所示:

  • 133 XY曲线运行报警
  1. XY曲线属性参数表
            1. XYS曲线

参数名

说明

X轴

X轴宽度

1

X轴起点

0

X轴自适应

True

Y轴

Y轴高度

1

Y轴起点

0

Y轴自适应

True

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

常规

曲线名称

可自定义名称

曲线颜色

可选择

显示图例

True/False

数据

X值

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

Y值

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

“XYS曲线”是指横坐标表示X、纵坐标表示Y、S表示多条Y曲线的控件。

把“XYS曲线”控件添加到监控设计界面, X轴Y轴选择自适应为True时根据绑定目标数值范围自动增加,显示图例True/False即是否显示曲线名称,曲线可以设定为不同的颜色。X轴只能绑定一个目标,Y轴可以绑定多个目标,是一个集合编辑器。首先点击“添加”填写添加的名字此处显示“aaa”,然后绑定“杂项”报警条件是特定数据或范围数据,报警方式是闪烁报警。如下图所示:

  • 134 XYS曲线设置

环境设置后进入图形监控界面找到该控件,运行测试脚本的过程中就可观察到绑定目标产生的曲线。监控设计的图形如下图所示:

  • 135 XYS曲线

XYS曲线监控运行图如下图所示:

  • 136 XYS曲线运行
  1. XYS曲线属性参数报表
            1. Y曲线

参数名

说明

X轴

X轴宽度

1

X轴起点

0

X轴自适应

True

Y轴

Y轴高度

1

Y轴起点

0

Y轴自适应

True

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

常规

曲线名称

可自定义名称

曲线颜色

可选择

显示图例

True/False

数据

X值

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

Y值(添加集合)

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

“Y曲线”是指纵坐标表示Y的控件。

把Y曲线控件添加到监控设计界面中,X轴Y轴自适应选择为True时,X轴Y轴会根据绑定目标数值自动增加,显示图例True/False即是否显示曲线名称,曲线可以设定为不同的颜色(请选择深颜色,否则有可能看不到曲线),Y轴值的绑定栏绑定协议段或约束变量,报警条件是特定数据或范围数据,报警方式是闪烁报警。环境设置后进入图形监控界面找到该控件,运行测试脚本的过程中就可观察到绑定目标产生的曲线。监控设计的图形如下图所示:

  • 137 Y曲线

Y曲线报警运行图如下所示:

  • 138 Y曲线报警运行
  1. Y曲线属性参数表
            1. YS曲线

参数名

说明

X轴

X轴宽度

1

X轴起点

0

X轴自适应

True

Y轴

Y轴高度

1

Y轴起点

0

Y轴自适应

True

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

常规

曲线名称

可自定义名称

曲线颜色

可选择

显示图例

True/False

Y值

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

YS曲线是指纵坐标表示Y、S表示多条Y曲线的控件。

把YS曲线控件添加到监控设计界面中,X轴Y轴自适应选择为True时,X轴Y轴会根据绑定目标数值自动增加,显示图例True/False即是否显示曲线名称,曲线可以设定为不同的颜色(请选择深颜色,否则有可能看不到曲线),Y轴值可以绑定多个协议段或约束变量,是个集合编辑器,同XYS曲线中的设置方式。报警条件是特定数据或范围数据,报警方式是闪烁报警。环境设置后进入图形监控界面找到该控件,运行测试脚本的过程中就可观察到绑定目标产生的曲线。监控设计的图形如下图所示:

  • 139 YS曲线

YS曲线报警运行图如下所示:

  • 140 YS曲线报警运行
  1. YS曲线属性参数表
          1. 控制

参数名

说明

X轴

X轴宽度

1

X轴起点

0

X轴自适应

True

Y轴

Y轴高度

1

Y轴起点

0

Y轴自适应

True

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

常规

曲线名称

可自定义名称

曲线颜色

可选择

显示图例

True/False

Y值(添加集合)

绑定目标

可选择协议段或约束变量绑定

报警方式

闪烁报警

报警条件

特定数据或范围数据

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

“控制”是为了能对绑定的通道或协议进行数据编辑发送或与简单按钮配合发送的一组控件。控制组内的控件绑定目标是协议段时,事件必须要绑定同一通道的协议事件,绑定目标是通道事件时,配合的控件简单按钮事件必须绑定同一通道的通道事件,这样发送数据才能成功,否则失败。

            1. 缓冲编辑

“缓冲编辑”是能编辑绑定目标需要发送的内容的控件。

把“缓冲编辑”控件添加在监控设计界面中,缓冲编辑在监控设计的界面如下图所示:

  • 141 缓冲编辑

在属性目标内容栏绑定目标,环境设置后在图形控制界面找到该控件,点击“添加新行”,如下图所示:

  • 142 缓冲编辑添加新行

按照绑定目标数据位用16进制数就可在添加的新行空格中实现数据编辑。再把简单按钮绑定相同的目标,点击简单按钮,“缓冲编辑”中添加的数据通过“简单按钮”发送到串口调试助手查看,串口调试助手收到了缓冲编辑发过来的数据如下图所示:

  • 143 缓冲编辑运行
  1. 缓冲编辑属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方向

None或选择其他停靠方式

数据

目标内容

选择通道事件

外观

背景

用于该控件的背景图像

文本

控件标题

            1. 多选项

“多选项”是表示可以选择多个选项数据同时发送的控件。

把多选项控件添加在监控设计界面中,如下图所示:

  • 144 多选项

在属性事件栏绑定通道事件或协议事件(此处绑定协议事件),在值的绑定栏绑定事件的某个字段,在“选择项”添加多个绑定字段的选项值,此处绑定1、2,如下图所示:

  • 145 多选项绑定

环境设置后在图形监控界面找到该控件,勾选了哪个选项就表示发送那个选项值,如果勾选了多个,即表示叠加发送,利用串口调试助手查看发送的数据如下图所示:

  • 146 多选项运行

如果只勾选数值为1,串口调试助手接收到01,如果只勾选数值为2,串口调试助手接收到02,两个都勾选时,串口调试助手接收到的数据为03。

如需修改数据必须要在监控设计界面进行,然后重新进行环境设置打开图形监控界面才能发送修改后的数据。在监控设计界面的控件如下图所示:

  1. 多选属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

事件

通道或协议事件

选择项

添加成员

绑定目标

可绑定协议字段或约束变量

公式

自定义公式

外观

背景

用于该控件的背景图像

文本

标题

            1. 下拉框

“下拉框”是表示采用下拉菜单选项形式的控件。

把下拉框控件添加在监控设计界面中,在属性事件栏绑定通道事件或协议事件,在值的绑定栏绑定事件的某个字段,在选择项添加多个绑定字段的选项值,如下图所示:

  • 147 下拉框属性设置

环境设置后在图形监控界面找到该控件,勾选了哪个选项就表示发送那个选项值,不能勾选多个选项。如需修改数据必须要在监控设计界面进行,然后从新进行环境设置打开图形监控界面才能发送修改后的数据。在监控设计界面的控件如下图所示:

  • 148 下拉框

下拉框运行时配合串口调试助手使用,图形监控界面中下拉框选中一个数值,查看串口调试助手是否收到对应的数据,如下图所示:

  • 149 下拉框运行
  1. 下拉框属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

事件

绑定通道或协议事件

选择项

添加成员

绑定目标

可绑定协议字段或约束变量

公式

自定义公式

外观

背景

用于该控件的背景图像

文本

标题

            1. 长度编辑

“长度编辑”是设定绑定目标读取数据长度的控件。

把“长度编辑”控件添加在监控设计界面中,在属性目标内容绑定目标(只能绑定通道读长度),环境设置后在图形监控界面找到该控件,设置绑定目标读取数据长度值,再把简单按钮控件绑定相同的目标,点击简单按钮则实现长度设置的发送。如需修改数据必须要在监控设计界面进行,然后从新进行环境设置打开图形监控界面才能发送修改后的数据。在监控设计界面的控件如下图所示:

  • 150 长度编辑
  1. 长度编辑属性参数表

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

目标内容

绑定通道事件

外观

背景

用于该控件的背景图像

文本

标题

“长度编辑”的使用要组合缓冲浏览控件,简单按钮控件一起使用,监控设计图如下所示:

  • 151 长度编辑设计

长度编辑设置读取长度为4,缓冲浏览曲线接收到4位长度的数据,长度编辑运行图如下所示:

  • 152 长度编辑运行
            1. 旋钮

“旋钮”是采用旋转控制调节数据值的控件。

把旋钮控件添加在监控设计界面中,在属性事件绑定通道事件或协议事件,在值的绑定栏绑定事件的某个字段,根据绑定的某个字段值的范围设置最大值和最小值,属性设置图如下所示:

  • 153 旋钮属性设置

环境设置后进入图形监控界面找到该控件,将数字仪表配合旋钮一起使用,绑定同一个事件,旋转旋钮调节不同的值就可实现发送绑定目标的数据值。在监控设计界面的控件如下图所示:

  • 154 旋钮与数字仪表

调节按钮指针,数字仪表指示到对应的数值,运行使用图如下图所示:

  • 155 旋钮运行指示
  1. 旋钮属性参数表
            1. 列表框

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

事件

绑定通道或协议事件

绑定目标

选择

公式

自定义公式

最大值

根据实际情况填写

最小值

根据实际情况填写

外观

背景

用于该控件的背景图像

文本

标题

“列表框”是表示采用列表菜单选项形式的控件。

把“列表框”控件添加在监控设计界面中,在属性事件栏绑定通道事件或协议事件,在值的绑定栏绑定事件的某个字段,在选择项添加多个绑定字段的选项值,如下图所示:

  • 156 列表框属性设置

环境设置后在图形监控界面找到该控件,此处配合串口调试助手一起使用,验证列表框发送的数据,列表框勾选了哪个选项就表示发送那个选项值,不能勾选多个选项,同时串口调试助手接收到发送的数值,如下图所示:

  • 157 列表框运行

如需修改数据必须要在监控设计界面进行,然后从新进行环境设置打开图形监控界面才能发送修改后的数据。在监控设计界面的控件如下图所示:

  • 158 列表框
  1. 列表框属性参数表
            1. 开关

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

事件

可选择通道或协议事件绑定

选择项

添加成员

绑定目标

绑定协议段或约束变量

公式

自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

开关是一个可以显示绑定目标(布尔类型)亮或灭两种状态的控件。把开关控件添加在监控设计界面中,在属性事件绑定通道事件或协议事件,在值的绑定栏绑定协议段,如下图所示:

  • 159 开关属性设置

环境设置后进入图形监控界面找到该控件,点击开关控件就可实现绑定目标的高低电平的发送。在监控设计界面的控件如下图所示:

  • 160 开关

“开关”运行时开的状态如下图所示:

  • 161 开关开的状态

当开关关闭的时候的状态图如开关默认图示样式,开关样式可以在属性中自定义图片。

  1. 开关属性参数表
            1. 文本框

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

数值

0

图片

可选择

数值

1

图片

可选择

事件

可选择通道或协议事件

绑定目标

可选择绑定协议段或约束变量

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

“文本框”是表示以文本的形式编辑绑定目标数据的控件。

把“文本框”控件添加到监控设计界面中,在属性值的绑定栏绑定事件的某个字段协议段或约束变量,环境设置后在图形监控界面找到该控件,在文本框编辑绑定目标需要发送的数据,再把简单按钮控件绑定相同目标的通道事件或协议事件,点击简单按钮则实现长度设置的发送。

如需修改数据必须要在监控设计界面进行,然后重新进行环境设置,打开图形监控界面才能发送修改后的数据。在监控设计界面的控件如下图所示:

  • 162 文本框

图形界面效果图如下:

  • 163 文本数据发送
  1. 文本框属性参数表
      1. 实时任务

参数名

说明

布局

固定方向

TOP或选择其他固定方向

停靠方案

None或选择其他停靠方式

数据

绑定目标

可选择绑定协议段或约束变量

公式

可自定义公式

外观

背景

用于该控件的背景图像

文本

控件标题

实时任务是用于在下位机中仿真外围系统模型的程序,项目目录树中的“实时任务”下可以对实时任务进行管理。

        1. 新建实时任务

新建实时任务是实时脚本的集合,包括有两项内容,如下图所示:

  • 164 新建实时任务
          1. Simulink任务

Simulink是MathWorks公司MATLAB软件的一部分。是一种基于MATLAB的框图设计环境可视化仿真工具,是实现动态系统建模、仿真和分析的一个软件包。Simulink任务可以导入Simulink仿真模型,生成C++代码,进行输入输出接口设置,进行语法检查,运行等功能。

点击Simulink任务弹出命名窗口如下图所示:

  • 165 Simulink任务命名窗口

注:要正确执行以上功能需先在上位机中安装2016aMatlab软件。

另:任务名称中不能使用中文,否则无法运行生成脚本。

  1. 导入导出Simulink仿真模型

进入Simulink任务界面如下图所示:

  • 166 Simulink任务界面

“Simulink模型管理”下拉菜单有“导入”、“导出”和“导入M脚本”三项内容,如下图所示:

  • 167 Simulink模型管理菜单

导入可实现把建好的以.slx为后缀的Simulink动态仿真模型文件导入平台软件,导入平台软件后,模型内容中会出现模型文件名和大小,界面如下图所示:

  • 168 导入模型界面

导出就是把存在于模型内容中的simulink动态仿真模型导出保存在选择的某个路径中。点击导出,弹出的界面如下图所示:

  • 169 导出保存界面

命名点击保存后,在保存的文件夹中会找到该导出的模型文件。

导入M文件将保存matlab命令的M文件进行导入。在生成代码的时候导入的M文件将被执行生效。

  1. 生成代码

模型代码的下拉菜单有三项内容,如下图所示:

  • 170 模型代码菜单

要生成C++代码,simulink模型必须要在Matlab软件中检测无误后才能成功生成代码,否则会生成失败。

点击生成C++代码,会在模型代码界面生成几个源文件,显示在“模型代码”窗体中。如下如所示:

  • 171 C++代码界面

在生成代码期间,输出界面会有提示信息,红色表示失败有错误,黄色表示警报,绿色表示生成成功,如下图所示:

  • 172 代码生成成功输出界面

导出代码:点击“模型代码”下的“导出代码”,选择保存文件夹,点击确定,在保存的文件夹中可以找到后缀名为SMCode的文件,该文件中包含了所有模型代码。

导入代码:点击“模型代码”下的“导入代码”,在打开文件夹中找到后缀名为SMCode的文件,选择“确定”,即可完成代码的导入。

  1. 设置

设置功能可以将模型的输出输出同交联环境中的接口协议字段进行绑定。绑定完成后,会在运行模型的时候,自动进行输入输出操作。

点击“设置”按钮,进入设置界面。如图所示。

  • 173 设置界面

首先在“外围系统”下拉框中选择一个外围系统。选择外围系统后,模型的输出输出将绑定到该外围系统的接口字段上。如图所示。

  • 174 设置界面选择外围系统后

列表中列出的是软件自动从simulink模型中提取出来的输出和输出。类型为Inport代表输入,为Outport代表输出。点击“目标”字段的选择框,弹出目标选择界面。如图所示。

  • 175 设置界面选择目标

列出各个接口下的协议及字段。点击字段名称后面的“选择”按钮,可以选择该字段。

  1. 添加启动代码

生成代码之后,需要添加模型的启动代码,添加完成后才能够运行模型。

点击“模型代码”窗体右上角的“新建文件”按钮,可以新建代码文件。在“新建文件”对话框中输入文件名。(文件名可以是任意名称,如entry。)

  • 176 设置界面选择目标

点击“确定”后,进入新建文件标签页。如图所示。

  • 177 新建文件内容

在该界面中输入如下内容:

         #include

         #include "Simulink_model.hpp"       

         namespace{

                   using namespace Kiyun::LowerComputer;

                   using namespace Kiyun::LowerComputer::Rasl;

                   using namespace Kiyun::DataCollect;   //数据采集接口命名空间                     

                    

                   //本地变量、本地函数声明

         }      

         //主函数入口

         int Main()

         {

           //设置全局日志属性

                   KYLOG_GLOBAL().severity(Logging_T::Severity_E::TRAC_e);

                   KYLOG_SCOPE("ETestRT::Main").tag("发送").tag("检查");

                   KYLOG(INFO) << "Hello world, Kiyun!\n";   //可保存到日志文件

                   KYIO(log) << "Hello World,Kiyun!\n";      //发送到控制台

        

                   /*测试代码*/

                 Simulink_T simu;

                 simu.start(120.0);   //运行120s后退出 

                   return 0;

         }

这段代码包含了模型运行的主函数main。主函数声明了模型对象,并且启动模型对象运行120秒。

  1. 语法检查

语法检查能对生成的模型代码进行语法的检查,语法正确在输出端会显示编译成功,有错误的地方会指出具体的错误位置。如下图所示:

  • 178 语法错误提示
  1. 执行

系统支持Simulink模型生成的C++代码在下位机的运行。点击执行按钮,输入下位机端口号(PC规划中的客户端端口号),点击确定后,即可实现代码发送到下位机执行。

          1. 自定义CPP任务

自定义CPP任务就是编辑实时测试脚本。点击自定义CPP任务时,弹出命名窗口,命名规则与项目的命名规则相同。每个新建的自定义CPP任务脚本都会给出固定头文件和用户测试代码需要新增的头文件,用户只需定义变量,编写测试主体脚本即可。进入界面如下图所示:

  • 179 实时脚本格式

实时脚本语法在第六章“实时脚本(C++)扩展API”中进行详细介绍。

  1. 将文件作为文本插入

点击导入C++文件,弹出选择C++文件窗口,如下图所示:

  • 180 选择C++文件

选择一个需要导入的C++文件,点击打开,文件内容导入后如下图所示:

  • 181 导入C++文件
  1. 导出C++文件

点击导出C++文件,弹出另存选择窗口。如下图所示:

  • 182 导出保存窗口
  1. 图形界面生成代码

图形界面生成代码,为用户提供各种通道类型的脚本例子以供选择。用户在编辑脚本的时候,可以通过选择需要的通道类型脚本例子进行必要的修改即可使用。点击图形界面生成代码,弹出界面如下图所示:

  • 183 形界面生成代码界面

打开通道的下拉菜单,选择一个通道脚本例子如下图所示:

  • 184 COM232初始化例子

右边的通道2表示是在设备规划时选择的通道号,选择仿真模型中的具体通道,点击应用属性,然后点击确定后,该脚本会添加到自定义CPP任务脚本界面的后面,如下图所示:

  • 185 判断通道初始化是否成功脚本

如上所示,已把通道名称修改。

  1. 语法检查

点击语法检查,如检查通过显示为语法检查通过;如失败则指出错误原因并显示语法检查失败。

  1. 快捷键Alt+D提示

在脚本编辑界面编写脚本时,可以使用快捷键提示方式编写脚本,如下图所示:

  • 186 快捷键提示
  1. DataUploader(详细介绍请看4.3.8)
  1. 上传数据:

语法:UploadService_T::get().queue({upLoader通道, 0, upBuf});

  1. 初始化:

语法:auto upLoader通道 = Channel_T::get(Receive端$.path(), Channel_T::Direction_E::READ_e);

  1. Demo定义新方法模板

语法:

void funcname()

  {

    printf("%s\r\n","Helo world!");

    //如需创建自定义的代码段,请参考:

    //【我的文档\ESITest\Snippets\*.SimC.Snippet】

  }

  1. Semaphore
  1. notifyAll通知正在等待的所有sem信号量

语法:sem.notifyAll();

  1. notifyOne通知正在等待的一个sem信号量

语法:sem.notifyOne();

  1. wait一直等待sem信号量,直到接收到信号量才开始执行wait()后的逻辑程序

语法:sem.wait();

  1. waitFor等待sem信号量直到设定的超时时间

语法:sem.waitFor(timeout);timeout是设定的超时时间值

  1. Ticker
  1. 停止定时器

语法:tk.stop();

  1. 初始化

语法:auto tk = Ticker_T::get(timer);

  1. 执行定时任务

语法:

tk.start([&]() -> bool {

  #以下为用户代码

  return true;

});

  1. 设备
  1. AD
  1. AD单次采集模板(采集一个点)

语法:auto value = Ad通道.read();

  1. 单次采集模板(采集多个点)

语法:Ad通道.read(buf,readSize);

  1. 开始连续采集任务

语法:Ad通道.start();

  1. 暂停连续采集

语法:Ad通道.stop();

  1. 通道注册连续采集

语法:

Ad通道.intRead([](float * buf, size_t size, Error_T err) {

  #回调函数,添加用户代码

});

  1. 重置采集通道

语法:Ad通道.reset();

  1. Can
  1. Can中断写模板

语法:

Can通道.asyncWrite(frameWrite, []() {

  #回调函数,添加用户代码

});

  1. Can中断读模板

语法:

Can通道.intRead([&](Can_T::CanFrame_T frameRead) {

  #回调函数,添加用户代码

});

  1. Can发送模板

语法:Can通道.write(frameWrite);

  1. Can接收模板

语法:Can通道.read(frameRead);

  1. Com
  1. Com中断写模板

语法:

com通道.asyncWrite(outBuf, outBufSize, [](size_t sz, Error_T err) {

  #回调函数,添加用户代码

});

  1. Com中断读模板

语法:

com通道.intRead([&] (char* buf, size_t sz, Error_T err) {

  #回调函数,添加用户代码

});

  1. Com发送模板

语法:com通道.write("string");

  1. Com接收模板

语法:auto reader = com通道.read();

  1. Da输出模板

语法:Da通道.write(5.0);

  1. Dio
  1. Di跳变检测模板

语法:

DI通道.intRead([](int id, Dio_T::EdgeMode_E mode) {

  #回调函数,添加用户代码

});

  1. Di输入模板

语法:auto status = DI通道.read();

  1. Dio输出模板

语法:DO通道.write(TRUE);

  1. TCP
  1. TCP通道发送

语法:TCP通道.write(writeBuf, writeBufSize);

  1. TCP通道异步发送

语法:

TCP通道.asyncWrite(writeBuf,tryWriteSize,

  [&](Error_T err, size_t size) {

  #回调函数,添加用户代码

});

  1. TCP通道异步读取

语法:

TCP通道.asyncRead(readBuf,tryReadSize,

  [&](Error_T err, size_t size) {

  #回调函数,添加用户代码

});

  1. TCP通道读取

语法:TCP通道.read(readBuf, tryReadSize);

  1. UDP
  1. UDP通道发送

语法:UDP通道.write(writeBuf,tryWriteSize);

  1. UDP通道异步发送

语法:

UDP通道.asyncWrite(writeBuf, tryWriteSize,

  [&](Error_T err, size_t size) {

  #回调函数,添加用户代码

});

  1. UDP通道异步读取

语法:

UDP通道.asyncRead(readBuf,$tryReadSize,

  [&](Error_T err, size_t size) {

  #回调函数,添加用户代码

});

  1. UDP通道读取

语法:UDP通道.read(readBuf,tryReadSize);

          1. 实时任务的编译和执行

语法检查成功后,执行实时任务之前,首先需要进行“环境设置”。详见2.3.1 环境设置。

1、使用工具栏执行实时任务

执行实时任务,可以使用工具栏上的“执行”按钮。如图所示。

系统弹出提示信息框。需要输入客户端IP地址和端口号。如图所示。

  • 187 执行IP和端口号

输入PC规划中设置的客户端IP地址和端口号。如图所示。

  • 188 PC规划的客户端IP和端口号

2、使用python脚本执行实时任务

或者使用python脚本的API进行实时任务。如图所示。

  • 189 使用Python执行实时任务

使用StartVXScript函数执行自定义C++实时任务。

使用StartSimulink函数执行Simulink实时任务。

        1. 新建文件夹

新建文件夹实际就是子实时任务,与实时任务的功能相同,是为了在多任务的时候能够进行更好的管理。

      1. 内容附件

内容附件是测试数据文件的集合,用来导入导出数据文件。点击内容附件,弹出菜单如下图所示:

  • 190 内容附件
        1. 新建附件

新建附件菜单如下图所示:

  • 191 新建附件菜单
          1. 二进制文件

点击新建二进制文件,弹出命名窗口如下图所示:

  • 192 二进制文件命名窗口

输入有效的名称(见项目的命名规则),点击确定后进入的界面如下图所示:

  • 193 二进制文件界面

二进制文件的右键菜单有三项,如下图所示:

  • 194 二进制文件菜单

右键菜单中的“编辑”按钮可以打开二进制文件的编辑窗口,该窗口中提供了二进制文件的导入和导出功能。点击导入二进制文件,弹出的窗口如下图所示:

  • 195 导入二进制文件

如上图所示,二进制文件是任何格式的的文件,没有限制。导入二进制文件后,界面如下图所示:

  • 196 二进制文件导入后界面

点击重命名可以进入二进制文件的重命名窗口操作,如下图所示:

  • 197 文件重命名

点击删除可以选择删除或取消删除二进制文件操作,如下图所示:

  • 198 确认或取消删除
          1. 文本文件

点击文本文件新建文件,弹出命名窗口如下图所示:

  • 199 文本文件命名

输入有效的名称(见项目的命名规则),点击确定后进入的界面如下图所示:

  • 200 文本文件界面

文本文件的菜单如下图所示:

  • 201 文本文件菜单

点击编辑菜单进入导入、导出文本文件界面,点击导入文本文件,弹出界面如下图所示:

  • 202 导入文本文件

如上图所示,导入的文本文件支持的格式是以.CSV和.TXT为后缀的文件。导入文本文件后的界面如下图所示:

  • 203 文本文件导入后界面

点击重命名可以进入二进制文件的重命名窗口操作,如下图所示:

  • 204 文本文件重命名

点击删除可以选择删除或取消删除二进制文件操作,如下图所示:

  • 205 确认或删除文件
        1. 新建文件夹

新建文件夹实际是内容附件的子内容附件,与内容附件的功能相同,是为了在多任务的时候能够更好的管理。它的菜单如下图所示:

  • 206 新建文件夹
        1. 内容引用

在python脚本中,对内容附件的引用使用如下:

  1. 二进制文件内容的引用:

附件的入口是ExtData,然后按目录一层一层点进去,后面是文件对象名称(对应树形结构中的名称),FileName是二进制文件名称,GetType是数据类型,content是数据内容,Content[3]代表第一个数据,Length是数据长度。前面的脚本表示打印二进制文件的名称、数据类型、第1、2个数据内容和文件的数据长度。

  1. 文件文件内容的引用:

附件的入口是ExtData,然后按目录一层一层点进去,后面是文件对象名称(对应树形结构中的名称),FileName是文本文件名称,content是文本文件内容。前面的脚本表示打印文本文件的入口、名称和内容。

        1. Lines工具包(python)

在平台的测试脚本里需要import String

a) 将大块文本分为多行组成的数组

#Lines(txt)

参数

  txt:需要分为多行的大块文本

描述

   根据\n将txt分为多行,忽略两端的空白字符

返回

   多行文本的集合或者None

测试

   >>>String.Lines("aaaaa\r\nddddd")

   [集合]['aaaaa', 'ddddd']

b) 将一行文本按照格式分为多个数字

#LineToNumbers(line,format)

>参数

   line:一行文本

   format:格式化字符串,支持10进制整型%D和双精度浮点%F

>描述

   根据format将line格式话为数字数组

>返回

   数字(整数或浮点)数组或者None

>测试

   >>> String.LineToNumbers("100","%D")

   [数组](100)

   >>> String.LineToNumbers("100.2 50,30.1","%F %D,%F")

   [数组](100.2, 50, 30.1)

   >>> String.LineToNumbers("XX3=100.2 Y2=50,Z1=30.1","XX3=%F Y2=%D,Z1=%F")

   [数组](100.2, 50, 30.1)

c) 将一行文本按照分隔符分割为整数数组

#LineToIntegers(line, numbase, separator)

>参数

   line:一行文本

   numbase:数字进制,只能是2,8,10,16

   separator:分隔符,如果分隔符包含的空格和逗号,则等于" ,"

>描述

   将line按照separator分割后转换为整数数组

>返回

   整数数组或者None

>测试

   *十进制

   >>> String.LineToIntegers("11  22 33 44 55,66", 10, " ,")

   [int]((11, 22, 33, 44, 55, 66))

   *十六进制

   >>> String.LineToIntegers("11  22 33 44 55,66", 16, " ,")

   [int]((17, 34, 51, 68, 85, 102))

   *八进制

   >>> String.LineToIntegers("11  22 33 44 55,66", 8, " ,")

   [int]((9, 18, 27, 36, 45, 54))

   *2进制

   >>> String.LineToIntegers("11  111,1111,11111", 2, " ,")

   [int]((3, 7, 15, 31))

d) 将一行文本按照分隔符分割为浮点型数组

#LineToDoubles(line, separator)

>参数

   line:一行文本

   separator:分隔符,如果分隔符包含的空格和逗号,则等于" ,"

>描述

   将line按照separator分割后转换为双精度浮点数数组

>返回

   双精度浮点数数组或者None

>测试

   >>> String.Facade.LineToDoubles("11  22.2 33 44.0 55,66",  " ,")

   [float]((11.0, 22.2, 33.0, 44.0, 55.0, 66.0))

e) 将一行文本按照分隔符分割为二维浮点型矩阵

#TToMatrix(txt,separator)

参数

   txt:需要转换为的大块文本

   separator:分隔符,如果分隔符包含的空格和逗号,则等于" ,"

描述

   将txt按照separator分割符转换二维双精度浮点数矩阵

返回

   双精度数字矩阵

测试

   >>> String.ToMatrix("1 2 3\n4,5,6" , " ,")

   [float](1.0, 2.0, 3.0)

   [float](4.0, 5.0, 6.0)

        1. 在实时脚本中使用内容附件

在C++实时脚本中,对内容附件的使用方法如下:

1. 包含命名控件

using namespace Kiyun::LowerComputer::Rasl::Data;

2. 自定义FTP的data文件路径(默认为:ftp:userData/,需在打开文件前调用,一般无需自定义)

   DataStore_T::setPath("userData");

3. 导入data文件

   DataStore_T dataStore("内容附件.测试目录_1.文本文件_1");

4. 分解所有数据

    size_t count = 0;

   for (const auto& line : dataStore)

   {

       //对每一行继续数据分解

       ++count;

       MCIO(log) << line;//打印一行数据

       //以下为逗号分割数据

       auto data0 = line[0];//获取0号数据(字符串)

       auto data3 = line.get(1);//将1号数据转为int

       auto data4 = line.get(2);//将2号数据转为float

       auto data5 = line.get>(3);//将3号数据转为buf(如:0x112233)

   }

   MCIO(log) << "const = "<

      1. 测试目录

测试目录包含了描述测试过程的脚本和流程。测试目录包含两种类型的测试:python脚本测试和workflow流程测试。

        1. 新建用例

“新建用例”功能包含了创建两种测试的脚本,即“脚本测试【python】”和“流程测试【WF】”。

          1. Python脚本

从测试目录进入测试脚本编辑界面,菜单如下图所示:

  • 207 测试目录

新建用例下有Python脚本和WF流程,如下图所示:

  • 208 进入测试用例菜单

点击脚本测试[Python],弹出Python脚本命名窗口,如下图所示:

  • 209 Python脚本命名窗口

脚本的命名规则与项目命名规则相同。点击确定进入脚本编辑界面如下图所示:

  • 210 Python脚本编辑界面
            1. 测试任务

在测试任务页面,使用Python语言对要完成的测试进行编程。

Arg是一个数组,表示测试数据界面的输入参数;Exp也是一个数组,表示预期输出参数。

使用标准的Python语法,编写测试脚本时,可以通过快捷键Alt+D的方式输入。如下图所示:

  • 211 快捷键

内容附件和实时任务中如添加有内容则快捷键提示中就会有“附件”和“实时任务”,否则这两种不会出现。每种类型如下:

  1. 通道:仿真模型中的所有通道,通道中也有多项内容,如下图所示:
  • 212 通道内容

每项内容表示如下:

  1. HostIP:实时脚本返回通道客户端的主机IP;
  2. HostPort:实时脚本返回通道客户端的主机端口;
  3. Read(len):Python脚本读取指定长度的数据;
  4. Read(StartFlag,EndFlag):读取指定区间(StartFlag,EndFlag)的数据;
  5. BlockRead(len):阻塞方式读取指定长度的数据;
  6. BlockRead(StartFlag,EndFlag):阻塞方式读取指定区间的数据;
  7. Clear(count=-1):清除指定长度(默认负1清除全部)的数据;
  8. Seek(identy):定位到指定的标识位置,并且清除之前的数据;
  9. BlockSeek(identy):阻塞方式定位到指定的标识位置,并且清除之前的数据;
  10. Write(buffer):将指定的数据写入通道。

各函数的具体解释见第五章。

  1. 协议:仿真模型中添加的所有协议,规定了系统中的通信协议的格式或实际物理信号的参数组成。协议内容如下图所示:
  • 213 协议内容

每项协议内容表示如下:

  1. FromBytes(buf):解析指定的数据;
  2. ToBytes():将协议编码为字节数组;
  3. Read():使用协议从通道读取数据;
  4. BlockRead():阻塞方式使用协议从通道读取数据;
  5. Write():将协议编码后从通道写入。

各函数的具体解释见第五章。

  1. 字段:每个协议字段的具体内容,如果是数字输入输出类型通道,只有一个字段,如果是通讯类型的通道,则有数据头、数据尾、数据内容、校验位等多个字段内容,如下图所示:
  • 214 字段内容
  1. 附件:引用附件内容的入口。
  • 215 附件入口
  1. 实时任务:python脚本调用实时任务名称。
  • 216 调用实时任务名称
  1. API:在脚本中通过API的名称可以访问API对象。API对象是封装起来为用户提供方便简洁的编写方法,API里包含用户几乎所有常用到的测试脚本编写的方法。如下图所示:
  • 217 API内容

各API函数的具体解释见第五章。

  1. 语言:Python语法的定义语句和控制语句。如下图所示:
  • 218 语言内容

详细使用方法请看第五章。

窗口左侧显示“脚本”工具栏。选中任意图标,拖拽到“测试任务”窗口界面。

  • 219 引用python库

系统自带的脚本函数库,保存在【安装目录\PYSysPath】;

【String.py】,内容为:

import clr

from System.Diagnostics import Process

from System.IO import Path

dir = Path.GetDirectoryName(__file__)

dir = Path.GetDirectoryName(dir)

dll = Path.Combine(dir, 'Kiyun.EmbedTest.TXTFormat.dll')

dll = dll.Replace('\\', '/')

clr.AddReferenceToFile(dll)

from Kiyun.EmbedTest.TXTFormat import Facade

def Lines(txt):

    arr=map(lambda s:s.strip(),txt.split("\n"))

    return arr

def LineToNumbers(line,format):

    return Facade.LineToNumbers(line,format)

def LineToIntegers(line, numbase, separator):

    return Facade.LineToIntegers(line, numbase, separator)

def LineToDoubles(line, separator):

    return Facade.LineToDoubles(line, separator)

def ToMatrix(txt,separator):

    try:

        return map(lambda l:LineToDoubles(l,separator),Lines(txt))

    except:

        return None

调用方法如下:

String. LineToNumbers(line, format)

在工具栏上点击鼠标右键,弹出菜单显示“新建”。点击“新建”,弹出新建脚本模板窗口。

  • 220 添加新脚本

添加的脚本在用户自定义的python库中,保存在【我的文档\EsiTest\PYUserPath】目录下。调用方法同系统python库。

            1. 测试数据

测试数据主要是用来支撑数据驱动的自动化测试。在测试流程设计时,若可以抽象出输入与预期输出数据表格,则可以在相同的测试流程脚本下,完成多条测试数据的测试。

在测试目录新建脚本测试[Python]后,进入测试数据界面。如下图所示:

  • 221 测试数据

在输入参数下标有红色方框的方格中点击鼠标右键,弹出“添加输入参数”菜单。点击“添加输入参数”,弹出参数信息窗口,如下图所示:

  • 222 参数信息

在名称栏输入参数名称(字符没有限制),参数如果应用于和协议字段,其类型需要根据协议数据类型选择。例如,仿真模型是数字输入通道,如下图所示:

  • 223 数字输入

IGN开关协议的数量类型标准8位整数,如下图所示:

  • 224 IGN开关协议

参数的数据类型选择为8位无符号整数,如下图所示:

  • 225 8位无符号整数

点击添加行,在添加的行中输入1和0,如下图所示:

  • 226 输入测试数据

Python脚本中引用测试数据如图所示:

  • 227 脚本引用测试数据

arg[0]指的是参数名1的数据。

点击导出可以将测试数据导出保存为.csv的文件。如需另外更换其他数据,也可以导入后缀为.csv的文件。

          1. WF图形

图形化生成测试脚本就是以流程图的方式编辑仿真模型的测试脚本程序。在测试目录中右键点击新建用例下的流程测试[WF],进入流程测试编辑界面。如下图所示:

  • 228 进入流程测试菜单
  • 229 流程界面

流程测试只需将相应的操作拖拽到编辑框中,设置其属性,无需再另行编写测试脚本,就可完成测试设计。点击运行按钮即可进行运行操作。

流程图以【Start】开始,动作间的执行顺序用带箭头的连接线表示。光标移动到某个框图(A)上,自动显示其连接点,选择一个连接点,按住鼠标左键,将光标移动到其下一个操作(B)的某个连接点,确定由A到B的执行顺序。

在测试过程中,可能需要用到变量,变量的定义如下所示:

  • 230 创建变量

点击流程图界面的下边框处左下角变量,弹出变量定义窗口。变量的名称和类型是必需要的。点名称栏,输入变量名称,名称可以是任意字符。点击变量类型栏的下拉菜单,出现变量类型如下图所示:

  • 231 变量类型
  1. Boolean:布尔类型;
  2. Int32  :标准32位整数;
  3. String  :字符串;
  4. Object  :任意类型(如不知道使用哪种类型就可以选择Object);
  5. Array of[T]:数组;其中需要指出T的类型(会自动弹出类型供选择,与变量类型相同);
  6. 浏览类型 :指在列表中没有找到该类型,可以通过浏览类型查找,如输入Byte等。

范围是指定义变量的有效范围,可以是整个流程图,也可以是定义的某个过程,用户根据需要确定;定义时默认为当前的操作过程。默认值中可以不填写,填写时注意类型和定义的一致。

            1. 系统
  1. A←B赋值[Assign]

赋值是对定义的某个变量赋值的操作。赋值在流程图中的图形如下图所示:

  • 232 赋值

赋值图中左边输入变量名称,右边输入数值或VB表达式,完成对变量的赋值。如下图所示:

  • 233 变量赋值
  1. 延时[Delay]

延时是指上下两步之间延时多少时间执行。延时在流程图中的图形如下图所示:

  • 234 延时

点击右边杂项中的Duration,弹出表达式窗口,如下图所示:

  • 235 延时表达式

在表达式编辑器中输入延时的格式如上图所示,前中后三列分别表示时分秒,秒可以输入小数。上图表示延时500毫秒。

  1. 判断[If]

判断是根据判定条件对事件作出判断,输出预设的判断结果。判断在流程图中的图形如下图所示:

  • 236 判断

双击判断图里的文字,进入如下图所示界面:

  • 237 判断编辑界面

以VB表达式的形式输入判断条件。例如以协议读取结果(成功或失败)作判断条件,那么需要在判断前进行协议读取,设置读取协议的返回值为变量b(必须设置为变量),其类型是Boolean。则判断条件为b=True或者b=False。在Then或Else中如果只有一个步骤,则直接拖拽这个步骤到里面,如果有多个步骤,则需要先拖拽序列容器,再把步骤放在容器中,如下图所示:

  • 238 判断输出
  1. 分支[Switch]

分支,即多重选择语句。添加分支时会弹出选择分支数据类型的窗口,如下图所示:

  • 239 分支数据类型

分支数据类型也如前面介绍的一样,只需选择与判断条件变量的数据类型相同即可。分支在流程图中的图形如下图所示:

  • 240 分支形

双击图形文字进入如下图所示界面:

  • 241 分支编辑界面

Expression栏以入VB表达式的形式输入判断条件。例如以协议中某个字段的值(整型)作判断条件,那么需要在判断前获取协议段值,设置其返回值为变量b(必须设置为变量),其类型是Int32。则判断条件为b。点击Default添加活动、添加新的用例等。如下图所示界面:

  • 242 添加活动

点击添加新的用例会弹出Case值,输入整数值,即当变量b等于该值时,执行其中的活动。在“此处放置活动”界面可以放置一个步骤,或一个容器,然后把多个步骤放置在这个容器中。

  1. 循环[While]

循环[While]是在某个条件下循环执行某段程序,以处理需要重复处理的相同任务。循环在流程图中的图形如下图所示:

  • 243 循环[While]

双击文字进入循环[While]的编辑界面如下图所示:

  • 244 循环[While]编辑界面

在Condition中以VB表达式的形式输入判断条件,例如b=True。在Body中编辑活动。

  1. 循环[DoWhile]

循环[DoWhile]和循环[While]类似,循环[While]先判断条件是否满足,满足在进入循环体;循环[DoWhile]先进入循环体,再判断条件。即循环[DoWhile]至少执行一次循环体,循环[DoWhile]的循环体可能一次都不执行。

在流程图中图形如下图所示:

  • 245 循环[DoWhile]

双击文字进入循环[DoWhile]的编辑界面如下图所示:

  • 246 循环[DoWhile]编辑界面

在Condition中以VB表达式的形式输入判断条件,例如b=True。在Body中编辑活动。

  1. 序列容器[Sequence]

序列容器是用来装载多个测试动作的容器。序列容器在流程图中的图形如下图所示:

  • 247 序列容器

双击文字进入序列容器的编辑界面如下图所示:

  • 248 容器编辑界面

添加了步骤到容器中如下图所示:

  • 249 容器内容

在判断、分支、循环等系统器具中,如需添加多个步骤,就必须要先添加容器。

            1. 测试动作
  1. 通道清理

通道清理就是删除通道缓存中的数据以清空通道。其返回值为清除掉的所有数据的字符数组。通道清理在流程图中的图形如下图所示:

  • 250 通道清理

需要清理哪个通道,只需要点击通道的下拉菜单,从下拉菜单中选择通道即可。如下图所示:

  • 251 选择通道
  1. 通道读(长度)

通道读(长度)指在指定通道中读取指定长度(字节数)的数据序列,并将读到的数据从缓存中清除。其返回值为读取到的字符数组,如果缓存中的数据不足,则返回空。通道读(长度)在流程图中的图形如下图所示:

  • 252 通道读(长度)

点击通道下拉菜单选择通道名称CH_232_2,长度栏修改为3,则表示选择的通道读取长度为3字节的数据序列。如下图所示:

  • 253 通道读取设置
  1. 通道读(标志)

通道读(标志)是指读取通道指定头和尾区间内的数据,并将读到的数据(和头之前的数据)从缓存中清除。其返回值为读取到的头、尾之间的字符数组(包含头、尾),如果找不到头或尾,则返回空。通道读(标志)在流程图中的图形如下图所示:

  • 254 通道读(标志)

点击通道下拉菜单选择通道名称CH_232_2,修改头为“0A03”,尾为“0C”,则表示读取通道缓存中以“0A03”开始,以“0C”结束的一段数据。如下图所示:

  • 255 通道读(标志)设置
  1. 通道定位

通道定位是查找并定位到设定的数据。该操作将删除设定数据之前的所有数据。其返回值即删除数据的字符数组,如果没有找到,则返回值为空;如果定位到0,则返回值的数组长度为0。通道定位在流程图在的图形如下图所示:

  • 256 通道定位

点击通道下拉菜单选取通道名称CH_232_2,在标志栏输入“AA55”,表示在通道CH_232_2中查找“AA55”。如下图所示:

  • 257 通道定位设置
  1. 通道写入

通道写入就是把设置数据写入通道。其返回值为Boolean型变量,写入成功则返回值为TRUE,否则为FALSE。通道写入在流程图中的图形如下图所示:

  • 258 通道写入

点击通道下拉菜单选择通道名称CH_232_1,在数据栏输入“11,22,33,44”,表示通道写入“11,22,33,44数据”。如下图所示:

  • 259 通道写入设置数据
  1. 获取协议段值

获取协议段值即是获取某个协议的字段数据,并将其赋值给指定变量。获取协议段值在流程图中的图形如下图所示:

  • 260 获取协议段值

点击协议段的下拉菜单选取协议字段如下图所示,并设置其返回值属性,为定义的变量(变量类型为Object)。

  • 261 选择协议段
  1. 协议读(阻塞)

协议读(阻塞)是指读取符合协议的一帧数据,直到读取到为止。如果读取不到,则一直执行该指令,不会执行下一条指令。协议读(阻塞)在流程图中的图形如下图所示:

  • 262 协议读(阻塞)

点击协议的下拉菜单选取协议如下图所示:

  • 263 协议读(阻塞)选择协议
  1. 协议读取

协议读取是指读取一帧协议数据,无论是否读取到,都会执行下一条指令。其返回值为Boolean型变量,如果读取到数据,则返回值为TRUE,否则返回值为FALSE。协议读取在流程图中的图形如下图所示:

  • 264 协议读取

点击协议的下拉菜单选取协议如下图所示:

  • 265 协议读取选择协议
  1. 协议写入

协议写入是指把数据写入协议的动作。其返回值为Boolean型变量,如果写入成功,返回值为TRUE,否则为FALSE。协议写入在流程图中的图形如下图所示:

  • 266 协议写入

点击协议的下拉菜单选取协议如下图所示:

  • 267 协议写入选择协议
  1. 设置协议段值

设置协议段值是指为协议段赋值,设定值的类型和该协议段的定义一致。设置协议段值在流程图中的图形如下图所示:

  • 268 设置协议段值

点击协议段下拉菜单选择协议段,在值栏填写输入的数据。如下图所示:

  • 269 协议段值设置
  1. 输出

输出是指输出指定内容。输出在流程图中的图形如下图所示:

  • 270 输出

输出内容可以是变量表达式,也可以是一段文字信息(必须用””括起来)。

            1. 例子

仿真模型中有一对RS232通道,一个发送数据,另一个接收数据。如下如所示:

  • 271 一对通道

RS232的协议如下图所示:

  • 272 通道协议

使用虚拟串口设置COM1和COM2为一对,分别作为两个通道的端口名,通道的属性如下图所示:

  • 273 通道属性

设计操作流程为:写入通道写入数据,如果写入成功,从读取通道读取数据,获取协议段值,输出协议段数据;否则提示写入失败。流程如下图所示:

  • 274 流程

分支中有协议读(阻塞)、获取协议段值、输出3个步骤。因为有3个步骤,所以添加了序列容器[Sequence]。分支中的图形如下图所示:

  • 275 分支内形

V1是协议写入的返回值,类型是Boolean。b是获取协议段值的返回值,类型是Object。变量的添加如下图所示:

  • 276 涉及的变量

以上就是图形生成脚本的步骤。经过环境设置后,点击运行,IO中心用例服务端输出的结果如下图所示:

  • 277 用例服务端输出结果

监控实时数据界面如下图所示:

  • 278 实时监控界面
        1. 新建文件夹

新建文件夹是测试目录的子目录,与测试目录的功能相同,是为了在多任务的时候能够更好的管理。它的菜单如下图所示:

  • 279 新建文件夹
      1. 校验算法

校验算法用于在协议描述中的checker类型的字段完成校验。

        1. 新建校验算法

“新建校验算法”功能包含了创建三种校验算法,即“自定义CPP校验”、“标准CRC校验”和“常用校验”。

          1. 自定义CPP校验

在“校验算法”节点上点击鼠标右键,弹出菜单选择“新建校验算法”->“自定义CPP校验”。

  • 280 自定义CPP校验
          1. 标准CRC校验

在“校验算法”节点上点击鼠标右键,弹出菜单选择“新建校验算法”->“标准CRC校验”。

  • 281 标准CRC校验
          1. 常用校验

在“校验算法”节点上点击鼠标右键,弹出菜单选择“新建校验算法”->“常用校验”。

  • 282 常用校验
    1. 测试运行

测试运行主要指python测试用例和WF测试用例在上位机客户端进行执行,并且按照要求调度实时任务在下位机VXWorks环境下执行。测试需求描述、规划等信息,都是测试环境配置的标准。

运行测试用例之前首先需要进行“环境设置”操作,进行环境的准备和端口打开操作。运行测试用例之后需要进行“清理环境”操作,进行环境清理和资源的释放。

      1. 环境设置

进行测试运行首先需要进行“环境设置”。进行环境设置时,会启动若干进程,并按照测试需求的描述和规划信息配置相应的接口,目的是为测试执行准备好环境。

在测试设计工作台工具栏上选择“环境设置”功能,或者使用快捷键F2即可进行环境设置。

软件首先弹出“环境设置”界面。界面中有3个子页面,分别进行不同参数的设置。点击“确定”,系统开始环境设置过程;点击“取消”,停止进行环境设置。

环境设置参数界面包含以下内容:

        1. 主要配置

“环境设置-主要配置”窗口分为3个区域:进程调度服务器、仿真模型服务器、数据中心服务器。如下图所示:

  • 283 运行环境设置窗口

进程调度服务(详见第三章)对仿真模型服务器、数据中心服务器、输入输出中心、客户端的进程进行调度。默认端口号为19231。

仿真模型服务器是用于提供测试设计阶段建立的仿真模型信息的服务器;

数据中心是用于所有测试数据转发和保存的服务器;

在环境设置界面可以修改进程调度服务器的端口号;可以修改仿真模型服务器和数据中心服务器IP地址和端口号;点击右侧的“Ping”按钮,可以测试端口是否可用。

        1. 输入输出

“环境设置-输入输出”的设置界面如下图所示:

  • 284 环境设置-输入输出界面

通过勾选输入输出界面不同的选项,点击“确定”按钮后,显示的界面有两种方式,下面做详细介绍。

  1. 不勾选“启用标准输入输出监控中心”,输入输出界面如下图所示:
  • 285 不勾选监控中心

点击“确定”按钮,弹出的显示界面如下图所示:

  • 286 不勾选监控中心输出窗口

仿真模型服务器、数据中心、客户端都是独立的窗口,关闭这些窗口,需要对每个窗口进行单独关闭操作。

  1. 勾选“启用标准输入输出监控中心”选项界面如下图所示:
  • 287 勾选监控中心

点击“确定”按钮,弹出的显示界面(层叠)如下图所示:

  • 288 勾选IO中心输出窗口

勾选了“启用标准输入输出监控中心”,仿真模型服务器、数据中心、用例服务端、客户端是做为IO中心的子界面显示。另一情况勾选了“启用标准输入输出监控中心”,仿真模型服务器、数据中心、用例服务端、客户端中有的没有勾选,不勾选的也会显示,是在标准输入输出监控中心外显示,而不是作为它的子界面显示。

点击IO中心的层叠、水平平铺、垂直平铺,对所有子窗口的排列展示方式进行跟换。

        1. 存储配置

 “环境设置-存储配置”窗口设置了测试历史数据的存储形式和路径。如下图所示:

  • 289 环境设置-存储配置

选择文本文件形式存储。杂项下是存储路径及文件的命名格式,默认为存储在安装根目录下的历史记录文件夹中,以KY_Record_@T(yyyy-MM-dd hh-mm-ss.ffff)为文件名。变量@T(yyyy-MM-dd hh-mm-ss.ffff)表示执行时间及操作类型。

SqlServer是数据库存储(使用2008或以上的版本)。选择SqlServer如下图所示:

  • 290 SqlServer存储

点击“…”打开数据库连接测试界面,如下图所示:

  • 291 数据库连接测试

点击“刷新”,从服务器的下拉菜单中选择服务器,然后点击测试,连接成功提示的信息如下图所示:

  • 292 数据库链接成功
      1. 清理环境

“环境设置”成功后,打开测试用例界面,即可选择“运行”按钮进行运行;也可以选择“清理环境”按钮。

“清理环境”功能是“环境设置”功能的逆功能。当“环境设置”完成后,“清理环境”按钮进入可用状态。

测试执行完成后,选择“清理环境”可以对端口等资源进行释放。

如果在进行“环境设置”之后,修改了仿真模型或者规划,则需要进行“清理环境”之后,重新进行“环境设置”,所做的修改才能生效;如果仅仅修改了测试脚本,则无需进行“清理环境”和“环境设置”,只需重新“运行”即可。

      1. 执行

测试平台运行客户端负责与运行服务器通信,是执行端与控制端连接的唯一界面。执行客户控制端中的IO控制中心提供了对接口通道打开和关闭状态的自动管理界面和数据收发面。

点击菜单栏的“运行”按钮,便可以执行测试脚本。如下图所示:

  • 293 运行操作

测试执行时可以通过标准IO控制中心显示执行过程中各个服务的运行状态,含仿真模型服务器、数据中心、客户端以及用例服务端。如下图所示:

  • 294 测试执行标准IO控制中心

“客户端”窗口会显示通信设备和通道的打开情况。如下图所示:

  • 295 客户端服务器

如果设备状态有问题,会出现错误信息提示,用白色字体显示。

“用例服务端”显示测试脚本执行过程中控制台打印的信息。如下图所示:

  • 296 用例服务端
      1. 调试

测试平台提供了脚本调试功能。在脚本编辑界面中,完成“环境设置”后,点击“调试”按钮,进入调试模式。

  • 297 调试按钮

调试提供了继续、断点、单步、进入函数内部功能,如下图所示。调试过程和一般编译器相同。调试过程中可以添加或移除监控变量。

  • 298 调试界面

注意:在调试模式下,如果脚本中包含了中文(包括注释),需要在脚本的第一行注明编码方式,例如:编码方式为utf-8。

  • 299 添加编码方式
        1. 设置断点

进入调试模式后,可在所需的行设置断点,在ETest中可通过两种方式设置断点。

1)将光标移动到设置断点的行,点击“断点”;

2)将鼠标移动到设置断点的行的行号左侧,点击鼠标左键,即可设置断点。

  • 300 设置断点
        1. 监控变量

在调试模式下,ETest可监控脚本中所有的变量/表达式(包括ETest中定义的协议字段)。

1、添加监控变量:在输入框中输入变量名称,点击“添加监控”按钮,便可把变量添加到监控列表中。

  • 301 添加监控变量

2、移除监控变量:选中变量,点击“移除监控”按钮,可将监控列表中的变量删除。

      1. 停止

如果测试用例没有正常执行完毕,可以手工选择“停止”功能,结束脚本运行。

    1. 工具

通用嵌入式系统测试平台提供了丰富的测试工具,可以辅助用户进行测试,如计算器、报表、图形监控、CRC生成、CRC诊断、曲线编辑、协议管理、通道调试、实时脚本发送等工具。

      1. 图形监控

图形监控是查看脚本运行过程中绑定目标数据的监控仪器。通过图形化的界面用户可以观察到绑定目标数据的变化。

要实现图形监控,首先要进行监控设计(详细操作见监控设计),然后进行“环境设置”(每次修改监控设计后也需要重新进行环境设置,这样才能实现数据的统一调度),最后运行脚本的过程中查看图形监控。

点击菜单栏的“工具à图形监控”,打开连接到窗口,如下图所示:

  • 302 连接服务器

如上图所示,连接到界面包括线数据源和历史数据源两项。在线数据源进入的是脚本运行过程中监控控件绑定目标数据变化的实时监控界面;历史数据源进入的是保存的监控数据界面,选择历史数据可以进行回放操作。

  1. 在线数据源

在线数据源界面的仿真模型数据服务器、数据中心服务器、本地服务器地址与端口参数应和“环境设置”中输入的参数一致,不一致时界面中会有闪烁的“!”号提示。点击确定后,自动打开数据监控主界面,在左侧监控列表中有当前运行项目中设计的所有监控。如下图所示:

  • 303 数据监控列表

双击某一个监控,系统打开数据监控面。如下图所示:

  • 304 数据监控一

点击菜单上的“实时数据”,可以进入实时数据查看界面,数据可以选择十六进制、十进制、八进制、二进制和字符串显示。如下图所示。

  • 305 实时数据

实时测试因为需要上传数据,所以使用图形监控时,与使用Python脚本的监控有所区别。不但实时脚本中需要编写读取数据的脚本,在python脚本中也需要编写读取数据脚本。

例仿真模型如下图所示:

  • 306 仿真模型

监控设计使用仪表盘绑定“初速测量雷达数据.name”,监控通道读取的数据。实时脚本中需要编写一段该通道上传数据的脚本,如下图所示:

  • 307 上传数据脚本

在调度实时脚本后面编写一段读取数据的脚本,如图所示:

  • 308 读取上传数据脚本

完成上述两步后,其余操作与前面的图形监控操作步骤相同。

  1. 历史数据源

点击历史数据源,进入界面如下图所示:

  • 309 历史数据源

打开记录中包括文本文件与SqlServer。文本文件是以文本的形式存储数据,SqlServer是以数据库的形式存储数据。历史记录中有打开的路径记录,后面只要打开相同的路径就可以找到存储列表。

  1. 选择文本文件,如下图所示:
  • 310 文本文件

然后选择软件根目录下的历史记录,如下图所示:

  • 311 选择历史记录

弹出的界面如下图所示:

  • 312 测试项目方案

点击方案的下拉菜单,以列表形式展现测试用例每次测试的情况,如下图所示:

  • 313 测试情况列表

点击测试用例某一次的执行情况进行回放查看,界面如下图所示:

  • 314 回放操作
  1. 选择SqlServer,点击进入如下图所示:
  • 315 数据库连接

第一次进入的时候点击“测试”,然后点击“确定修改”,进入项目数据存储列表界面,如下图所示:

  • 316 存储项目列表

SqlServer的回放操作与文本的回放操作相同。

      1. 实时任务调节

实时任务调节功能能够在实时脚本运行过程中,对全局变量参数进行修改,以及进行任务终止功能的工具。

首先需要启动实时任务(simulink任务或者自定义实时任务);在任务运行过程中,打开“工具à实时任务调节”工具,如图所示。

  • 317 实时任务调节工具

点击按钮“选择实时任务”,会打开选择任务界面,界面中列出当前正在执行的实时任务。选择一个实时任务,点击“确定”后,会返回任务调节界面,并且列出该任务可以调节的参数。如图所示。

  • 318 实时任务参数修改器

在Value栏填上合适的值,点击“执行修改参数任务”,出现目的客户端窗口,如下图所示:

  • 319 目的客户端

IP和Port分别是PC规划中客户端的地址和端口。点击确定,开始执行参数修改过程。修改完成后,会给出提示信息。

点击“停止实时任务”,会进行任务停止的操作。操作完成后,会给出提示信息。

实时任务停止功能会调用实时任务中的Exit函数。该函数一般写法如下(在自定义CPP任务模板中已经给出):

bool Exit(Os::Task_T) {
    //返回值为true,表示能中止正在运行的实时任务
    //f_exitSem.notifyOne();
    //return true;
    
    return false;  //默认情况下该实时任务不能被中止
}

在该函数中需要完成任务占用资源的释放操作。(接口资源不需要释放)。如果函数返回true,则可以终止该任务;如果返回false,则不可以终止该任务。

      1. 历史数据查看

历史数据读取的是存储在数据库或以文本文件形式存储的数据,是已经存在的记录。历史数据有两种存储方式,一是以文本文件的形式,默认存储在根目录下的历史记录文件夹中;一是数据库的形式。存储方式的选择在环境设置界面存储配置中进行设置。

历史数据的界面分为6个部分:

  1. 用例测试记录表:文件夹存储的所有测试记录;
  2. 协议字段表:每个测试用例所有的协议字段;
  3. 筛选条件:根据筛选条件在4区单独显示该数据;
  4. 用例字段数据记录表:显示每条测试记录的字段值;
  5. 用例字段数据分析图:用图形的方式分析选择的数据;
  6. 测试记录通道和字段:每条测试记录的所有通道和字段值。

如下图所示:

  • 320 历史数据查看

点击左上角的打开文件夹,在弹出的窗口中选择软件根目录下的历史记录文件夹,1区域中就会列出历史记录文件中所有的记录,再选择具体的某条测试记录,如果有测试数据,2、4、6区域就会显示出所记录的相应数据,如果没有数据,则2、4、6区为空。

选择了测试记录后,2区会显示当前所有的协议字段,勾选,4区显示所有勾选的协议字段数据,不勾选则隐藏。

3区有添加筛选条件、移除筛选条件、修改筛选条件三种操作。添加筛选条件的界面如下:

  • 321 筛选条件

OR和AND的条件在第1次中是灰色,无法选择,只能在第2次及以上筛选的时候可以选择。a是选择字段值,b是给协议字段的赋值条件,有=、>、>=、<、<=、is、like。b选择is,c输入布尔类型True或False;b选择like,c输入字符串。

5区图形是根据左下角选择的字段不同时间记录的数据,形成的趋势图,右下角显示最大值、平均值、中位数、方差、标准差。图形分为X轴序列和Y轴序列,可以根据不同的需要选择不同的字段进行分析。

6区显示当前选择的测试记录的所有通道和字段,显示记录的时间和数据。

注:趋势分析图的X轴和Y轴都可以使用某一字段的值,也可以使用序列号。趋势分析图形上,用鼠标向右划动能够放大图片;向右划动能够恢复图片到原始大小。

查看数据库存储的数据,与查看文件夹的操作方式一致,就不再做具体介绍。

      1. 协议模板管理

协议管理工具能够管理所保存的数据协议模板,对协议模板进行查看、修改、删除操作。

点击工具栏上的“工具à协议管理”按钮,打开协议模板管理工具。在协议模板管理工具中列出了所保存的不同协议模板。如下图协议模板管理所示:

  • 322 协议模板管理

修改协议,在协议代码列选择具体的协议点击进入,编辑协议,修改完成保存修改。然后在左侧协议自定义栏下右键,点击刷新,自定义下的模板数据完成更新。

图片,点击数据协议模板配置工具右侧的选择图片列表对应的“…”,选择一张图片并点击“打开”,点击“保存修改”,并进行自定义下的刷新操作,协议的图标显示为选择的“图片”。

对于不需要的协议模板,可以将它们删除。选择要删除的协议模板,勾选协议模板左侧的复选框,点击“删除选中”按钮,便可以将选择的协议模板删除。

      1. 通道调试

通道调试是一款针对串口和网口进行数据收发,同时使用DPD协议进行数据打包/解包,显示字段名称的工具。

点击工具菜单栏下拉列表的“通道调试助手”,会弹出通道选择界面。如下图所示:

  • 323 通道选择界面

在上图的通道中选择需要调试的通道,点击新建,会打开通道属性配置界面如下图所示:

  • 324 通道属性配置

端口名指的是通道所使用的端口号,这需要根据实际情况配对的端口进行选择。其余的属性根据实际选择的通道类型,按照需求进行配置。配置好参数后,点击调试,会弹出发送接收数据界面如下图所示:

  • 325 发送接收数据界面

如上图所示,假如打开了com1端做为数据发送端,则还需打开与com1配对另一端做为接收端。接收端选择的数据类型可以与发送端数据类型不一致,点击打开通道后,开始读和发送按钮变为绿色。在发送端输入数据点击发送后,在上面已发送显示窗口会出现发送的数据,表示发送成功。数据接收端在数据发送之前必须要点击开始读,数据发送后,如接收端接收到数据会在显示端窗口根据选择的数据类型显示接收到的数据。

数据类型有十六进制、十进制、八进制、二进制、字符串5种类型。使用十六进制、十进制、八进制、二进制发送的每个数据之间必须要有1个空格间隔,否则在黑色显示框会有黄色报警信息提示。

黑色显示框会有三种颜色信息:

  1. 白色:表示加载信息;
  2. 绿色:设备和通道打开信息;
  3. 黄色:报警信息;

发送数据时的界面信息如图所示:

  • 326 通道调试数据发送界面
      1. 曲线编辑

曲线编辑工具可以手工绘制曲线。并将曲线数据保存成文本文件。文本文件在测试中可以作为测试数据使用。

选择“工具à曲线编辑”菜单,打开曲线编辑工具。进入曲线编辑工具主界面,如下图所示:

  • 327 曲线数据生成工具主界面

选择工具栏上的“新建”按钮,打开新建曲线对话框,如下图所示:

  • 328 新建曲线对话框-手工绘制

输入X、Y轴范围后,点击确定进入曲线编辑状态。用户用鼠标在界面上连续点击,曲线编辑会把点与点之间用直线进行连接。如图绘制曲线所示:

  • 329 绘制曲线

用户可以对绘制好的曲线进行导出曲线,点击工具栏上的“导出曲线”按钮,命名并选择一个路径点击“保存”即可。导出的曲线也可以使用曲线编辑工具再次打开进行修改或查看等操作。

绘制曲线完成后,也可以对曲线进行保存或另存为操作。

      1. CRC生成

CRC(CyclicRedundancy Check)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

通过CRC生成可自动生成CRC校验插件。

点击工具栏“工具àCRC生成”按钮,打开CRC插件生成器,如下图所示:

  • 330 标准CRC插件生成器
        1. 参数配置
  1. Bits:生成CRC校验位的长度;
  2. InitRem:初始值;
  3. TruncPoly:CRC校验所使用的生成多项式(简记式);
  4. FinalXor:异或值输出,将ReflectOut后生成的CRC校验值与FinalXor的值进行异或,得到最终校验值;
  5. ReflectIn:勾选,表示输入的数据需要进行比特翻转,也就是Bit7要变成最低位, Bit0要变成最高位,这里是每个字节而言,每个字节之间的关系不需要进行颠倒。如果此值为false,表明不需要进行字节的比特翻转;
  6. ReflectRem:勾选,表示将计算的CRC进行整个比特翻转。
        1. 插件生成

进行完参数配置以后,软件会自动根据配置情况自动生成插件名称。点击“生成”按钮,自动编译生成CRC校验插件。

        1. 算法测试

软件可以对生成的CRC校验插件进行测试。将所要校验的数据填入数据框内,点击“计算”按钮,软件会根据当前的校验算法计算出相应的校验值。详细使用方法请参考 2.4.7 CRC诊断章节。

        1. 插件拷贝

对生成的CRC校验算法插件测试完成后,点击“拷贝”按钮,软件自动将生成的.dll文件拷贝到测试平台的指定目录。

      1. CRC诊断

CRC诊断用于对校验算法的检验,检验编写的校验算法是否正确。

点击工具栏“工具àCRC诊断”按钮,打开CRC插件诊断器,如下图所示:

  • 331 CRC诊断工具

选择“文件”à“打开文件”或“打开目录”,自动将校验算法插件加载到“插件列表”中,如下图所示:

  • 332 插件列表

双击打开所要检验的插件,自动打开校验界面。在输入框里面输入数据,调整校验位数后,点击“计算”按钮,将会自动计算结果。如下图所示:

  • 333 计算结果
      1. 历史数据管理

历史数据管理工具可以对数据库中的历史数据进行清除操作。

点击“历史数据管理”工具,进入主界面,如图所示。

  • 334 历史数据管理主界面

选择“数据库设置”,进入数据库连接参数设置界面,如图所示。

  • 335 数据库设置

输入默认数据库服务器“.\SQL2008”,登录名“sa”,登录口令“kiyun-2008”。可以进行“测试设置”、“备份”、“恢复”、“删除数据库”的操作。关闭该界面。

从主界面点击“加载数据”,加载数据库中的所有数据。如图所示

  • 336 加载数据

可以勾选部分或者全部数据,点击“删除选择数”进行删除操作。也可以选择“删除指定时间段数据”,进行部分数据的删除。

      1. 计算器

计算器是一个虚拟的计算器。分为标准、科学、程序员、日期计算、转换器5种类型,每个类型包括的功能如下:

  1. 标准:加、减、乘、除、平方、倒数等;
  2. 科学:三角函数、对数、指数函数、求余运算等;
  3. 程序员:十六进制、十进制、八进制、二进制、Lsh算法等;
  4. 日期计算:可以计算两个时间点间的间隔日期;
  5. 转换器:包括货币、体积、长度、重量和质量、温度、能量、速度、时间等不同单位间的转换。

点击工具栏上的“工具à计算器”按钮,打开计算器,如下图所示。

  • 337 计算器

可以通过点击计算器下的符号选择进入不同的数据类型。

      1. 实时任务日志

“实时任务日志”工具用于查看下位机运行过程中产生的日志信息。

启动“实时任务日志”工具之前,需要启动下位机代理程序“KiyunUpperStarter”。

从“工具”栏中选择“实时任务日志”,进入主界面,如图所示。

  • 338 实时任务日志主界面

实时脚本中记录日志的方法:

以下代码均假定引入了命名空间:

using namespace std;

using namespace Kiyun::LowerComputer;

using namespace Rasl;

实时任务日志的产生方法详见6.4.2节。

  • 339 实时任务日志
      1. 实时数据查看

实时数据查看工具用于实时查看下位机上传的日志信息。

  • 340 实时数据查看主界面

选择“参数设置”,进入参数设置界面。默认参数如下图所示:

  • 341 实时数据查看参数设置

点击“确定”,回到主界面。

点击“开始获取数据”,进入开始获取数据状态。

当下位机有数据上传时,可以实时查看到上传的项目数据。如图所示。

  • 342 实时数据查看数据显示

点击左侧的数据结构中每一个字段前的勾选框,可以指定是否显示该字段的数据值。

点击右侧数据表格中每一列的数据的表头,可以进行排序、删选等操作。

“暂停”按钮可以暂停数据的显示;“清除当前数据”可以将当前数据清除掉;“导出Excel文件”可以将数据导出到Excel文件中。

      1. 测试报告

报表用于查看历史测试数据,方便测试事后数据的记录和测试问题的分析。

点击工具栏上的“工具à测试报告”按钮,即可打开测试报告生成界面。如图所示。

  • 343 历史数据查看

点击选择数据源,即可打开选择数据源界面,在该界面可以看到数据存储的类型有四种分别为文本文件、SqlServer文件。选择执行测试用例的环境设置时选择的存储方式。

  • 344 测试报表首页

选择“文本文件”,弹出浏览文件夹对话框。选择软件安装目录下的“历史记录”文件夹,选择“确定”,进入测试记录显示页面。如果选择SQLServer,弹出如下界面。

  • 345 数据库连接

填入正确的连接信息(同测试脚本执行时,环境设置的“存储”界面设置测信息一致),选择“确定修改”则进入历史数据查看界面。如图所示。

  • 346 测试记录

测试记录页面列出了所有的测试项目,测试项目包含的项目,项目包含的测试用例,以及其他信息。(无法打开查看测试结果、详细信息、用例ID)

  1. 选中一条测试记录,并点击“测试报告”,弹出测试报告填写信息界面,如下图所示:
  • 347 测试报告基本信息界面

填写完整信息并点击“确定”按钮后,然后会弹出该报告的存储界面,选择一个正确的存储路径,并给测试报告命名,点击确定。在存储的地方找到该测试结果打开。

测试报告内容主要包括测试项目的描述、测试结果、测试数据等内容,如图所示。

  • 348 测试报告内容
  1. 查看测试结果无需填写信息,其余步骤与查看测试报告相同。测试结果内容如图所示:
  • 349 测试结果
  1. 查看测试数据无需填写信息,其余步骤与查看测试报告相同。测试数据内容如图所示:
  • 350 测试数据

你可能感兴趣的:(p2p,linq,windows)