• 1293阅读
  • 1回复

旺谷图控与QT集成开发 [复制链接]

上一主题 下一主题
离线旺谷图控
 

只看楼主 倒序阅读 楼主  发表于: 2021-09-13



1.与QT集成开发





1.1旺谷图控QT开发包



QT开发包中包含:头文件、静态库、动态库、元件库、vgs工程或元件组成。其中元件库和vgs工程由vgs开发工具发布,拷贝到Qt工程的debug和release下的vgsDeploy。


  • 头文件(include):










图 开发包中头文件





  • 静态链接库(lib):










图 开发包中lib库





  • 动态库(dll):










图 开发包中动态库





  • 元件库(lib)和系统配置路径(sys):










图 开发包中元件库





  • 发布的vgs工程文件夹或发布的元件文件夹:
















QT集成开发IDE可以选择QT Creator或者Visual Studio,下面分别介绍一下两个工具的环境配置。




1.2QT Creator开发环境集成





1.2.1创建Qt工程



由Qt Creator开发工具创建一个Qt Widgets Application工程vgsdemo1。











图 创建QT工程




1.2.2配置元件开发库依赖



使用Qt Creator添加库的功能添加libvgs_p.lib和libvgsent_p.lib。














图 配置QT工程库依赖步骤1














图 配置QT工程库依赖步骤2














图 配置QT工程库依赖步骤3














图 配置QT工程库依赖步骤4














图 配置QT工程库依赖步骤5





添加完Vgs库后,修改后的Qt pro工程文件如下:











图5 配置QT工程库其他依赖




1.2.3旺谷图控系统运行环境管理



在QT工程的main.cpp中,实现对旺谷图控系统运行环境管理。


  1. 头文件包含:

include包含entityimpl.h。


  1. main函数中图控系统环境管理:

分为两个步骤,初始化图控环境,退出图控环境。具体位置如下图所示。











图 图控开发环境管理过程





实现代码参考vgsdemo1源码。




1.3Visual Studio开发环境集成





1.3.1创建VS工程



Visual Studio安装QT插件,由Visual Studio开发工具创建一个Qt Widgets Application工程Qt5VgsDemo。











图1创建QT工程




1.3.2配置元件开发库依赖



在VS工程的main.cpp中,实现对旺谷图控系统运行环境管理。


  1. 头文件包含:

include包含entityimpl.h。


  1. main函数中图控系统环境管理:

分为两个步骤,初始化图控环境,退出图控环境。具体位置如下图所示。

















图48VGS库链接和初始化








实现代码参考Qt5VgsDemo源码。




1.4添加Vgs工程资源或独立元件资源



用“旺谷图库”工具创建vgs工程,创建数据词典和vgs画面文件,完成后发布(或拷贝)到Qt工程的debug和release目录下。这样就可以在QT工程中使用vgs工程的数据词典和vgs画面文件,以及vgs文件依赖的vgs元件文件。


另一种情况是用户将元件作为一个标准QT控件使用,此时用“旺谷图库元件”设计工具创建一个或多个元件文件,完成后发布到Qt工程的debug和release目录下。通过别名体系同样可以在QT工程中使用。
















1.5 QT集成VGS画面加载和数据交互












使用gs::registerDataSource()方法注册数据源,


创建VgsView Widget并添加到Qt的布局器中,


使用load()方法加载Vgs画面文件,


使用gs::setDataSetCallback()注册数据变化后的回调函数。











向VgsView推送数据,实现界面数据展示和变化。











数据变更后在回调中做后处理。














实现代码参考Qt5VgsDemo源码。




1.5.1加载画面文件方法



  • 定义:

    bool load(const gs::WString &url, gs::Data &vgs, bool bEdit)


  • 简要说明:

    调用QVgsView加载画面文件方法


  • 参数说明:



序号

参数名称

参数类型

说明

1

url

gs:Wstring

画面资源路径,支持别名体系

2

vgs

gs::Data

画面文件内容

3

bEdit

bool

是否编辑模式

返回值:




序号

参数类型

说明

1

bool

画面是否加载成功






1.5.2数据推送方法



  • 定义:

    bool dataChanged(const gs::String &dataName, const gs::String &field, const gs::Variable &value, gs::Int dt, gs::Int8 alarmCode)





  • 简要说明:

调用数据推送方法


  • 参数说明:



序号

参数名称

参数类型

说明

1

_dataName

QString

数据源名称名称

2

_field

QString

参数名称

3

value

gs::Variable

参数值,变体

4

dt

gs:Int64

时间戳

5

alarmCode

gs:Int8

告警码

返回值:




序号

参数类型

说明

1

bool

数据推送结果



1.5.3数据变更回调方法原型



  • 定义:

    typedef bool (*DATASET_CALLBACK)(const QString& _dataName, const QString& _field, const gs::Variable& value, gs::Int64 dt)


  • 简要说明:

调用数据变更回调方法


  • 参数说明:



序号

参数名称

参数类型

说明

1

_dataName

QString

数据源名称名称

2

_field

QString

参数名称

3

value

gs::Variable

参数值,变体

4

dt

gs:Int64

时间戳

返回值:




序号

参数类型

说明

1

bool

询问式返回值,可阻止变更



1.6Qt工程中使用元件



用户可以将元件作为一个标准QT控件使用。图控系统中提供了一个QT控件QtVgsWidget,它是一个标准的Qt控件,它负责URL加载元件文件。














图49Qt集成开发对象


    可以将QVgsWidget看成元件的代理对象,调用QVgsWidget的set/get,comand来实现对元件属性和服务方法的调用。元件的信号也会转换为VgsSignal信号,它为Qt标准信号。QVgsWidget控件接口说明如下:




1.6.1加载元件文件方法



  • 定义:

    bool load(const gs::WString &url, gs::Data &vgs)


  • 简要说明:

    QVgsWidget加载元件


  • 参数说明:



序号

参数名称

参数类型

说明

1

url

gs:Wstring

元件资源路径,支持别名体系

2

vgs

gs::Data

元件文件内容

返回值:




序号

参数类型

说明

1

bool

元件是否加载成功






1.6.2设置元件属性值



  • 定义:

    bool set(const gs::String &_propertyName, const gs::Variable &v)


  • 简要说明:

设置所代理的元件属性值


  • 参数说明:



序号

参数名称

参数类型

说明

1

_propertyName

gs:String

元件属性名称

2

v

gs::Variable

元件属性值,Variable类型可以与Qt的QVariant进行类比。

返回值:




序号

参数类型

说明

1

bool

元件属性设置是否成功






1.6.3获取元件属性值



  • 定义:

    bool get(const gs::String &_propertyName, gs::Variable &v) const


  • 简要说明:

获取代理的元件属性值


  • 参数说明:



序号

参数名称

参数类型

说明

1

_propertyName

gs:String

元件属性名称

2

v

gs::Variable

返回的元件属性值,Variable类型可以与Qt的QVariant进行类比。

返回值:




序号

参数类型

说明

1

bool

元件属性读取是否成功






1.6.4调用元件服务方法



  • 定义:

    bool command(const gs::String &_cmdName, std::vector<gs::Variable *> &vs)


  • 简要说明:

调用代理的元件服务方法


  • 参数说明:



序号

参数名称

参数类型

说明

1

_serviceName

gs:String

元件服务方法名称

2

vs

std::vector<gs::Variable>

服务方法的参数列表

返回值:




序号

参数类型

说明

1

bool

服务方法的调用结果






1.6.5元件转发信号



QVgsWidget信号为元件信号的转发,其定义如下:


    Q_SIGNALS:    


        void VgsSignal(const GsMessage &msg );


参数说明:




序号

参数名称

参数类型

说明

1

_msg

GsMessage

元件信号对象






1.6.6 Qt使用元件代码示例








[color=inherit !important]旺谷图控www.vowgroup.com


离线chamsdoncon

只看该作者 1楼 发表于: 2021-09-13
    
快速回复
限100 字节
 
上一个 下一个