VAPS XT入门教程13:文件类型

系列索引:VAPS XT入门教程索引

上一篇:VAPS XT入门教程12.02.14:输出对象

本部分介绍VAPS XT通过界面、手动创建的文件以及对应的文件格式。

我们来看一下VAPS XT的基本文件类型和格式

VAPS XT工程的所有文件都是XML格式保存的。一个页面一般会保存为两个文件*.vcls/*.vimp。vcls(v class)一般保存声明,比如数据结构、事件名称等等,vimp(v implementation)一般保存页面的实现、事件的操作等等

点击菜单中的File -> New按钮。

根工程

最开始的第一步肯定是新建根工程,扩展名为*.vrpj。vrpj是vaps root project的缩写,即VAPS XT根工程,每个工程中有且只有一个此文件。其他的所有文件都是依附于根工程下的。

新建根工程 root project

设置工程名,工程保存路径,点击确认

根工程 rpj

可以看到,空白工程也会自动添加一些文件。

Graphical Object(GO)

图形对象,或者画面对象,最常用的一个控件类型。

go

新建完成后会自动跳转到属性设置界面,可以设置名称,路径,绘图单位。

vcls

添加我们需要的属性,可以是软件自带的,也可以是我们设计的数据结构。

打开设计文件

vimp

默认为黑色。

我们向里面添加一个子页面,虽然是子页面,但是有可能是可此页面是同级的。

subpage

可以看到,只要把子页面放进去,右侧就可以预览。

在数据流中,HyperTemplateSmallWindow_1是子页面的名称,而.后面的选项就是在vcls中设置的属性数据结构。也可以在事件、状态机中使用。

可以看到GO涉及两个文件.vcls.vimp

vcls是vaps class的缩写,即vaps类,作用和C/C++中的.h文件一样,其中保存类名声明、数据结构声明。

vimp是vaps implementation的缩写,即vaps实现,作用和C/C++中的.cpp文件一样,其中保持具体的实现,其依附于vcls文件,无法独立打开,打开后悔自动在预览窗口显示实现的内容。

这两个文件可以单独创建,即Class + Built Implementation 就是GO

GO只能生成代码。

Format

format

Format文件保存也是vcls/vimp,但是它没有属性页面,只有设计页面。可以看做是特殊的GO控件。

Format页面可以被编译为lib/exe。

Container

container

暂时没发现和GO有什么区别

Clipboard Object

剪切板对象 clipboard

使用和GO差不多,但是它和GO不同的地方是一般的GO在使用时是引用,而这个会创建一个新的。

Calculator

新计算器 calculator

自定义计算器,不定数量的输入,不定数量的输出,具体的算法需要自己在vimp文件中实现。

当然,如果不需要自己实现计算器,可以使用Toolbox中的Calculators控件。

Data Sender/Receiver

nCOM中数据发送接收控件

新建发送接收 data

既然是发送接收数据,那么是什么样的数据呢?需要在Type中指定,也可以是自定义数据结构

点击确定后,会在工程中添加两个文件

数据类型

可以看到它在我们设置的名称f50Buff前自动添加了snd/rcv关键词。

使用时将需要的控件拖拽到界面中然后就能使用缓存中的数据了。

子工程

新建子工程 subproject

我们来看一下实际的效果

子工程 demo

DataIO子工程下包含一系列文件,而且这个只是VAPS XT工程的树状管理,如果文件也需要树状管理,那么就需要手动操作修改文件所在的路径了

文件类型为vprj,是vaps project的缩写,即VAPS XT工程,被根工程包含,可以有多个。

自定义数据类型

*.dd格式的文件是VAPS XT的扩展数据类型文件。其内部为标准的XML格式。

以下是VAPS XT新建工程自带的Float50数据格式。

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?> 	
<!DOCTYPE dataDescription>
<dataDescription name="Float50">
<field>
<name>array</name>
<type>float</type>
<cardinality>50</cardinality>
</field>
</dataDescription>
  • dataDescription name字段需要和文件名一样
  • field字段可以有多个
  • field name字段任意英文命名
  • field type字段的值只能是之前提到的基本数据类型。如果是其他值,在打开工程时会报错。
  • field cardinality表示数量,50个表示array这个变量,是一个有50个float类型数据的数组。
  • 此dd文件只能手动复制官方的Float50.dd,然后重新编辑、添加、删除、修改

将设计好的数据结构添加、导入、拖拽到工程的DataIO文件夹中,就可以在工程中使用了。

数据类型

蓝色的即为我们设计的数据结构

自定义数据类型实例化

新建一个Class

自定义数据类型

自动显示属性

自定义数据类型属性

然后将基类改为Data,新增接口并设置类型

新建类新接口

文件格式为vcls

数据类型实例化

*.vtyp = v type =vaps data type

(只能)用于定义对象(Objects)的属性(Property)

property

在Type字段直接选择我们的类型就可以了。

VAPS XT官方提供的类型位于工程的StandardElements->Data->DataTypes中

vtyp

下面是一个自定义数据类型

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE type_decl PUBLIC "-//PresagisCanada//DTD VapsXT 18.0" "file:///C:/VAPSXTDTD/VapsXT_18.dtd">
<type_decl name="UInteger" cpp_class="vxtTypUInteger" c_struct="vxtCTypUInteger" build_output_location="VAPSXT_Install">
<struct_type>
<sfield name="Data" type="UInt"/>
</struct_type>
</type_decl>

类型为UInteger即无符号整型,内部实现是是UInt,变量名为Data,相当于对UInt进行了一次封装。

vtyp和vcls的区别是vcls属于是自定义类型,可以添加至工程中;vtyp是官方提供的,不能添加至工程中只能添加到GO和Format使用。

编码对象

CodedObjects机制在后面会具体介绍。

此机制使用时先创建一个Class,格式为.vcls,再创建一个Coded Implementation,格式为.vimp,此文件可以直接导出为VS工程

Table

将表元素控件拖拽、添加至GO中,此GO就可以使用这些表元素,与根工程的表元素不同,这些表元素只能在此GO中使用。

Display Definition

一般只有Fomrat文件可以编译为exe执行,一次只能编译一个FOrmat,Display Definition可以将多个Format编译为一个exe并显示。

Styling Rules

类似Qt中的qss,设置统一的格式,然后共享使用

下一篇:VAPSXT入门教程14:开发

技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导

qq 672991841


VAPS XT入门教程13:文件类型
https://blog.jackeylea.com/vapsxt/introduction-of-vapsxt-file-format/
作者
JackeyLea
发布于
2022年7月11日
许可协议