Category Archives: APP

ExTestZ 3.5 运行需求

ExTestZ 3.5 采用最新的 EnvSafe.Comm 组件进行 OPC 服务,其运行需求较上一版本有些许变化。下面列出一些可能需要事先安装的第三方软件:

  • .net framework 4.0.3 或 .net framework 4.x 更高版本:

ExTestZ 为兼容Windows XP系统,采用基于.net framework 4.0.3 的架构。若在XP系统上运行,需要安装.net framework 4.0 及 4.0.3 升级包,这是XP系统支持的最高.net framework版本。若在Windows 7 或更高版本的操作系统上运行,则可根据需要,直接安装更高版本的 .net framework 4.x,例如常见的 4.5.2,4.6.1等。

另外需要注意,由于编译器兼容性问题,采用Visual Stuio 2013以上编译的ExTestZ在XP系统运行时会存在资源管理bug,这将导致程序崩溃。假如用户使用的测试电脑安装了XP系统,请确认ExTestZ的编译版本。

  • MS Access Database Engine 2007:

ExTestZ主数据库采用Access 2007格式,因此需要其数据引擎。经测试知,Access 2010的数据引擎同样可以使用。注意,如果在测试计算机上已经安装了相应版本的Office Access软件,则不再需要单独安装数据引擎。

  • OPC Core Component:

一般情况下,ExTestZ与硬件之间通过OPC服务进行通信,这取决于配套测试设备所采取的解决方案。若采用OPC通信,则计算机操作系统必须安装其服务核心组件。对于常见的Windows版本,一般此组件已经预先集成在操作系统中。假如不能确定系统是否包含该组件,或者在运行ExTestZ时出现“未注册类”、“无法转换接口”或类似错误,则可考虑安装与电脑版本(x86或x64)相应的OPC Core Component。

  • Techosoft OPCDA 1.21

当采用OPC进行通信时,ExTestZ会使用诸多支持的客户端中的一种。对于 ExTestZ 3.4 及更早的版本,一般会使用Techosoft OPCDA 1.2.1 类库作为客户端组件。发布时应根据情况选择安装。

  • OPC.Net API

当采用OPC进行通信时,ExTestZ会使用诸多支持的客户端中的一种。对于 ExTestZ 3.5 版本,一般采用 OPC基金会的 OPC.NET API 2.0。

  • Omron Sysmac OPC Server  2.6

根据底层现场控制设备不同,选择不同的OPC服务软件。较常使用的控制器为 欧姆龙PLC 产品,此时可选择使用 Omron Sysmac OPC Server 2.6。需要注意,此款软件版本较久,且没有更新版本,在一些系统中会有兼容性问题。

  • KepServerEx 6.4

KepServerEx 是 开普华 公司的主打OPC 服务端软件,是收费产品。若采用的控制器没有自带的OPC服务,则可考虑使用此软件。KepServerEx支持大多数市面的PLC品牌,包括欧姆龙。

Intro: Heroius.Extension.Net

简介

Heroius.Extension.Net 是Heroius Packs 基础工具包中的一员,提供基于.net framework框架下的基础功能。

依赖于Heroius.Extension.

ObservableCollection<T>.Sort拓展方法

命名空间:Heroius.Extension.Net

此拓展方法使ObservableCollection<T>实例的元素在类型内部重新排序。

慎用:为了维持ObservableCollection的界面绑定,对其进行的Sort采取了副本排序,原本重构的方式,在元素数量较多的情况下,将导致可见的性能下降。

Type 类型拓展方法

Type.GetExtensionMethods 及 Type.GetExtensionMethod 方法,用于从类型实例获取该类型的拓展方法。

两者均扫描当前应用程序域中加载的所有程序集。

Intro: Balare 批量xelatex报告工具

〇、概述

0.1 BaLaRe工具简介

LaTeX工具作为批量制作报告的手段具有先天优势:

  • 使用UTF8纯文本
  • 简单的指令结构
  • 丰富的包支持

BaLaRe工具针对批量报告生成情况开发,基于目录结构的tex文件管理工具。

BaLaRe 名称取义“批处理latex报告”,简称BLR。

其简要工作流程为:

  1. 选择一个目录作为报告的工作目录,程序自动在此目录下创建一套默认的模板(tex文件、样式或文档类)。模板分为主目录报告模板和子目录报告模板:主目录模板即对所有要生成的报告公用的模板,而子目录模板是在每个报告的独立文件夹下。这些模板都可以进行编辑。
  2. 导入批量报告变量表。变量表是一张保存有所有待出报告信息的CSV表单,在表单中包含一些报告的属性值,例如编号、接受人、报告内容等,这些属性被赋予一个变量名,可以在编辑时使用。
  3. 定义需要的编译条件。可以在用户界面修改一些条件符号的真值,用于配合if指令,有条件地进行排版输出。
  4. 定义多选变量。多选变量可以在任何时刻设置,程序将记录下曾经设置的值,使用时从下拉表中选择。这些变量在编译时生成到特定的文件,在主模板中有对此文件的引用。
  5. 编辑报告内容。在报告的列表中选择要编辑的子报告,使用之前定义的变量及符号,完成内容编写。
  6. 生成PDF文件。在列表中使用鼠标操作,进行xelatex编译生成报告,并进行查看。

需要注意:BLR本身提供管理和自动生成功能,文件内容编辑必须要搭配xelatex和合适的编辑器(如notepad++)。

BLR工具的管理模式不影响版本管理软件(如git)的使用。

0.2 版本更新

  • 2.0.4 记录窗口状态
  • 2.0.3 从文件夹构建模板项列表
  • 2.0.2 远程模板项
  • 2.0 程序拓展为基于文件夹的项目管理程序
  • 1.0 基于分散文件的批量latex文档生成程序

0.3 下载

点击此处下载最新发布

一、项目

BLR基于文件夹进行管理,若一个 文件夹a 内包含名为 .balare 的子文件夹,则该 文件夹a 可被BLR识别为一个项目。

  • 新建项目:即在用户指定文件夹中生成.balare子文件夹,并使用默认模板生成必要配置文件。
  • 打开项目:浏览到用户指定的文件夹,若其为BLR项目文件夹,则可打开,BLR对配置文件加载解释,随后可以操作。
  • 删除项目:BLR不提供删除项目功能,您可根据需要删除.balare子文件夹以取消BLR支持。

在程序菜单“项目”中,可进行新建和打开项目的操作。程序会记录最近5次打开的项目以供快速操作。生配置改动的项目,在关闭或打开其它项目时会提示保存。已经失效的项目(如目录已不存在)可在启动界面上点击红色X按钮移除。

项目的批变量、映射、条件、用户变量、模板复制定义、本地模板、以及其它必要配置均保存在项目文件夹中。

二、批变量表

BLR围绕批变量表进行操作。一个BLR项目应有一个批变量表及其变量映射文件构成基本的项目列表,列表中的每一项可单独生成一份子报告。每个项由指定的主键作为唯一标识,在执行操作时,BLR以该主键的值创建子文件夹。

2.1 批变量表及映射文件格式

批变量表和映射均是以utf-8格式保存的csv文件,您可以在excel等电子表格软件中创建。

批变量表文件本质为一份关系型数据表,首行为列名称,其余行为数据;映射文件的每一行为 数据表列名 BLR变量名 的字符串对。

如图所示,在电子表格工具中编辑并保存成为csv文件,映射文件将列表中的首行列名对应成为BLR变量名。在格式上,有如下约定:

  • 设置主键列:批变量表应设置一列作为主键列,用于唯一标识数据行。上例中以“名称”作为主键列。主键列宜使用数字,以避免创建子文件夹时的命名冲突。
  • 非强制映射:在上例中,映射文件包含了表格中所有的三个列,但您可以根据需要,仅映射指定的几个列。需要注意,主键列必须设置映射;未被映射的列将不会在BLR程序中显示,也不会参与生成。
  • csv格式:建议使用utf-8编码,但也可使用ANSI编码,只是不利于版本管理时的预览。
  • 关于变量名:BLR变量名用于在xelatex中使用,因此应符合其要求,即仅使用大小写英文字母,不可使用中文及符号。为避免与引用tex包定义的变量冲突,建议采用 BlrVarXxx 的格式。

2.2 在项目中设置批变量表

通过BLR程序菜单“编辑” – “导入批变量表” 及 “导入批变量映射”,分别浏览到文件所在位置进行加载。此加载过程将复制指定文件到项目.balare目录下,并替换现有文件。

在设置新建项目时,建议先导入映射,再导入批变量表,以使程序正确显示表格内容。若界面内容未能如预期显示,请重新启动程序打开项目即可。

在程序界面的“批变量表”tab页上,选择主键列的变量名,如下图所示。

三、模板

3.1 基本tex文件结构

BLR用于管理latex文件,对文件的编译过程需要latex文件满足一定的组织结构。能够支持BLR正确运行的结构(或称基本tex结构)为:

  • 位于项目根目录下的主报告入口文件(记为 main)
  • 位于项目根目录下的子报告入口文件(记为 sub)
  • 位于单项子目录下的汇总引用代理文件 (记为 agent)

您也可以在main中对其它文件进行引用,形成更为复杂的结构。默认情况下,BLR程序指定的项目文件夹内不包含这些文件,您可以自行创建这些文件,并在程序的“配置属性”tab页中指定这些文件的名称(可修改默认值)。

如上图所示,程序默认的基本文件架构为:

  • main:AggregateMain.tex,即执行汇总编译时,在项目根目录下寻找此文件名,作为主文件;
  • sub:SeparateMain.tex,即执行单项编译时,在项目根目录下寻找此文件名,作为主文件;
  • agent:Agent.tex,即执行汇总编译时,在单项子目录下寻找此文件名,并在临时引用文件中引用。

3.2 模板

为重用复杂的tex文件结构,可以利用预先制作的tex等文件,当需要创建编译文件时,从特定目录进行复制即可。在BLR中提供这种支持,称为模板。模板包含主文档模板和子文档模板,分别为:

  • 主文档模板:定义要复制到项目文档根目录的文件。
  • 子文档模板:定义要复制到单项子目录下的文件。

复制时支持文件夹创建和深度迭代。

BLR支持 本地远程 两种模板复制方案。

3.2.1 本地模板

在项目的.balare文件夹下,有temp子文件夹,该文件夹为本地模板根目录,模板文件均存放在此。

在BLR程序的菜单“模板” – “打开模板目录” 可以打开本地模板目录;“重置模板” 将删除项目本地模板所有文件;“在文档目录套用模板” 根据 “模板复制项”tab页的配置进行模板复制。

在菜单“编辑”中,“导入模板” 和 “导出模板” 可以将本地模板导出/导入(以.bzip压缩文件格式)。

在程序的“模板复制项” – “主文档复制项”/ “子文档复制项” tab页的 “项目源” 部分,可设置要从本地模板复制的文件。可执行的操作包括:新建/编辑/移除复制项、执行单个文件复制(>>按键,仅对主文档复制项可用)、列表排序、及从文件夹构建列表。从文件夹构建列表是指:浏览到指定文件夹,遍历文件夹中的文件,每个文件生成一个复制项。

3.2.2 远程模板

指定一个远程地址(网址),以及对应的本地位置,执行复制时下载。

在BLR程序的“模板复制项” – “主文档复制项”/“子文档复制项” tab页的 “远程源” 部分,可以设置要从远程复制的文件。可执行的操作包括:新建/移除复制项、执行单个文件复制(>>按键,仅对主文档复制项可用)、列表排序(以本地名称)、及从文件夹构建列表。从文件夹构建列表是指:浏览到指定文件夹,遍历文件夹中的文件,每个文件生成一个复制项。

如上图所示,每一条远程模板复制项由源(左侧)和目标(右侧)构成。

四、条件与用户变量

批变量保存的是项目文档目标的参数信息,例如,需要为n家企业出具报告,则批变量中每一条对应每一家企业。除批变量外,还可以定义编译条件、一般变量和随机变量,分别在程序相应tab页中设置。

  1. 编译条件:定义tex中if符号,通过勾选/取消将该值设置为true或false。条件符号可以在编辑文件时使用。
  2. 一般变量:定义tex变量(文本指令),变量的取值可保持在记忆下拉列表中,从列表中选取的值作为编译时的变量取值。
  3. 随机变量:定义tex变量(文本指令),在记忆下拉列表中定义若干个可选的值,在编译时,变量的实际取值从列表中随机选取。

条件和变量符号仅使用大小写英文字母,不可使用中文及符号。为避免与引用tex包定义的变量冲突,建议采用有明确区别的前缀格式。

五、编辑和编译

5.1 配置环境

根据以上描述加载需要的批变量和模板,定义条件和参数。

在程序 “批变量表” tab页中表格中,在特定行处通过 单击鼠标左键/双击鼠标右键/选定后敲击回车键 可唤出单项上下文菜单,执行针对子文件的操作。

在程序“批变量表” 单击右上角 “汇总操作” 打开汇总上下文菜单,执行汇总文档操作。

5.2 编译子文档(单项编译)

首先通过上下文菜单 “创建子目录”,该操作生成以指定标记主键为名称的文件夹,并根据复制项配置复制模板文件到子文件夹。

在上下文菜单的 “编辑内容文件” 中选择子文件夹下需要编辑的文件打开,编辑文件需要使用第三方编辑器。

在上下文菜单的 “编译选中” 执行xelatex编译,一般应执行此操作两次,以正确构建PDF文件。

编译完成后在上下文菜单的 “查看PDF”,用第三方工具打开文件查看。

5.3 编译汇总文档(汇总编译)

汇总文档操作的编译执行过程与子文档类似,但可以选择参与编译的单项、并可以按照界面排序顺序引用。

在“汇总操作”菜单中,可以全选/全不选单项;在单项上下文菜单中,可以选择或取消选择当前单项。汇总编译仅对已经选中的单项有效

通过点击批变量界面列表列头,可实现依据特定列的排序。例如,您可以在定义批变量表时专门设置一个用于排序的列(不同于主键),以避免需要重新排序时更改主键列的取值(更改主键取值将导致子文件管理混乱)。