Visual Basic 6.0

<< 点击显示目录 >>

主页  PVI通信 > PVI帮助信息 > PVI实例 > PVICOM > PviDemo >

Visual Basic 6.0

PviDemo 示例程序展示了Visual Basic应用程序中变量数据的读写。

这些设置是在一个INI文件中管理的。

对于PVICOM 用户信息 使用的不带数据的回调 类型  。

该示例程序包含以下文件。

File

描述

PviDemo.vbp,

PviDemo.vbw

Visual Basic项目工作区和Visual Basic 6.0的Visual Basic项目。

PviDemo.exe

PviDemo.ini

可执行的演示程序和PVI进程对象的初始化文件。

frmPviDemo.frm

应用程序启动时显示的对话框。

frmPviObjects.frm

用于配置PVI对象的对话框。

PviCom.bas

用于Visual Basic应用程序的PVICOM功能描述模块。

fktMain.bas

Visual Basic模块。声明PVI对象的结构。应用程序是在函数Public Sub main()中启动的。在这个函数中,INI文件的对象被读入,然后以frmPviDemo的形式显示。

fktObjectInit.bas

Visual Basic模块。读取和写入INI文件以及初始化PVI对象结构的函数。

fktPVIobject.bas

Visual Basic模块。调用PVI函数和PVICOM回调函数。

下面的功能作为例子

Function

Description

fktMain.bas module

main

项目启动的功能。从INI文件中读取样本程序的PVI连接配置后, frmPviDemo.frm表格 被打开。

fktObjectInit.bas module

 

ReadINIFile

从INI文件中读取PVI对象。

SetObjectStructure

写入并初始化全局PVI对象结构 pPviObj()。

DisableObjectControls

禁用表格 frmPviDemo.frm的输入字段

INIGET

解析从API函数GetPrivateProfileString收到的缓冲区的功能。

INIWRITE

写入INI文件的功能。

fktPVIobject.bas module

OnResponseGlobalEvents

这个消息传递功能被用作 全局事件的PVI 用户消息

事件 POBJ_EVENT_PVI_CONNECTPOBJ_EVENT_PVI_DISCONN 用来显示 PVI 连接状态。在事件 POBJ_EVENT_PVI_ARRANGE中,在 例子中使用的所有 PVI 对象都被创建(CreatePviObjects)。

在事件 POBJ_EVENT_PVI_CONNECT 中可能不会创建有或没有临时进程对象的链接对象。只有事件POBJ_EVENT_PVI_ARRANGE可以保证这个客户端实例的任何先前创建的链接对象和临时进程对象不再存在。

CreatePviObjects

示例程序的 所有 链接对象 和临时 进程对象 都是使用异步函数 PviCreateRequest 创建的 。除了CPU对象,这个例子中的所有对象都被设置为状态 "非活动"。对于所有的变量对象,  定义了一个 类型变化 (cast)到一个双倍数据类型(VT=f64)。相应的数据格式在链接对象的描述中指定。

变量和CPU对象中的错误和数据在回调函数 OnPviDataEvent()中读取 ,创建的PVI对象的Link ID在回调函数  OnPviCreateResponse中  使用函数PviCreateResponse读取  。

OnPviCreateResponse

这个消息传递函数被用作PVI 用户消息 ,用于响应请求函数 PviCreateRequest

用户参数IParam对应于PVI对象结构pPviObj()中由ENUM函数 "PviObject "指定的偏移。与响应数据一起提供的PVI对象句柄(LinkID)被存储在这个对象结构中。对于所有的变量对象,状态被改变为激活,除非  已经按下Idle 。响应数据中报告的错误意味着在PVI管理器中无法创建该对象(例如,无效的对象名称,对象描述中的语法错误,等等)。在这种情况下,错误会显示在各自变量的输入/输出文件中,或显示在一个消息框中。

OnPviDataEvent

这个消息传递功能作为PVI 用户消息 用于错误状态和所有变量对象的数据(在样本程序中最多4个)。

用户参数LPARAM与 PviCreateRequest 函数(见 CreatePviObjects指定的EventMessage编号的值 相对应。数据或报告的错误显示在相应的PLC变量的输入/输出区域。变量数据以Double格式提供(如在创建 链接对象时指定 )。

如果没有为链接对象指定数据格式(与本例不同),变量数据将以PLC变量的格式提供。如果PLC变量的格式发生变化,必须对应用程序进行相应调整。应用程序总是可以使用 POBJ_EVENT_DATAFORM 数据格式事件来获得关于当前数据格式的信息。

OnWriteResponse

这个消息传递函数被用作PVI 用户消息 ,用于响应请求函数 PviWriteRequest

用户参数IParam是一个指向内部结构变量T_PVIOBJ_CTRL的指针(见CPviDemoDlg::OnWrite)。响应数据中报告的错误意味着写入请求失败。在这种情况下,错误会显示在一个消息框中。

如果在一个应用程序中,多个变量对象应按一定顺序写入,那么在最后一个写入请求的响应之前,不能发送下一个写入请求。

DisplayconnectionState

显示PVI <=>用户程序与CPU的连接状态。

Form: frmPviDemo.frm

Form_Load

进行PVI初始化。当 PviInitialize 函数被调用时,客户端实例被注册,与PVI管理器建立连接。为了显示连接状态,  PVI中的全局事件 被激活(OnResponseGlobalEvents)。

Form_Unload

进行PVI去初始化。当 PviDeinitialize 函数被调用时,客户端实例被删除。与PVI管理器的连接被终止,所有 链接对象 和临时 进程对象 被启用。

cmdActive_Click

按下Active时,这个信息传递功能就会运行  。

对于所有显示的 PLC 变量(在样本程序中最多 4 个),启用掩码(POBJ_ACC_EVMASK)为各自的链接对象改变状态为 "激活"。

由于改变使能掩码的请求是独立于过程对象状态的,这里没有响应数据或请求确认。具有较高安全标准的PVI应用(如服务器),应始终使用请求确认。

cmdIdle_Click

按下"空闲"键时,这个消息传递功能就会运行  。

对于所有显示的PLC变量(在样本程序中最多4个),为各自的链接对象改变启用掩码(POBJ_ACC_EVMASK),将状态改为 "不活动"。

cmdObjects_Click

打开 frmPviObjects 对话框,用于改变 PVI 对象参数。

cmdWrite_Click

按下Write键时,这个消息传递函数就会运行  。 属函数 ReadAndCheckInputValue 被调用。

PviWriteRequest 函数被调用时,写指令被启动

txtVar_GotFocus

当焦点放在一个输入/输出字段上时,这个消息传递函数被执行。

为了防止输入值被覆盖,分配的链接对象被设置为不活动。

txtVar_LostFocus

当焦点从一个输入/输出字段上移开时,该消息传递函数被执行。

对于指定的链接对象,状态被改变为活动,除非  已经按下闲置

ReadAndCheckInputValue

该函数将输入的值(字符串)转换为双数据类型。如果发生错误(如输入 "ABC"),将输出错误信息。

用户应该实现一个适合应用的输入检查。

Form: frmPviObjects.frm

Form_Load

文本字段用PVI对象结构pPviObj()中的对象名称进行初始化。

cmdTCPDefaults_Click

为TCP/IP连接设置连接参数。

cmdARsimDefaults_Click

为ARsim连接设置连接参数。

cmdCOMDefaults_Click

设置串行连接的连接参数。

cmdCancel_Click()

关闭该对话框。

cmdOK_CLick

启用所有PVI对象。与 主对话框中的Form_Unload 函数不同,这里与PVI管理器的连接不会被终止。

所有的PVI对象及其连接描述被写入INI文件,并使用 CreatePviObjects 函数重新创建PVI对象