PVICOM functions

<< 点击显示目录 >>

主页  PVI通信 > PVI帮助信息 > PVI base system > PVICOM interface >

PVICOM functions

Function

说明

PviInitialize

初始化PVICOM接口并建立PVICOM通信实例。

PviDeinitialize

结束与PVI管理器的通信连接并释放PVICOM通信实例

PviSetGlobEventMsg

为PVICOM通信实例的一个全局事件指定一个用户信息。

PviCreateRequest

要求用一个链接对象来设置一个静态进程对象或一个临时进程对象

PviCreateResponse

从PviCreateRequest指令中读取一个响应。通过这个响应,一个ID被传递给应用程序中的链接对象。

PviCreate

PviCreateRequest/PviCreateResponse功能的同步变体

PviDeleteRequest

删除一个(静态)进程对象的请求

PviDeleteResponse

读取一个PviDeleteRequest响应

PviDelete

PviDeleteRequest / PviDeleteResponse功能的同步变体

PviLinkRequest

请求设置一个链接对象

PviLinkResponse

读取一个PviDeleteRequest响应。通过这个响应,一个ID被传递给应用程序中的链接对象。

PviLink

PviLinkRequest / PviLinkResponse功能的同步变体

PviUnlinkRequest

请求释放一个链接对象

PviUnlinkResponse

读取一个PviUnlinkRequest响应

PviUnlink

PviUnlinkRequest / PviUnlinkResponse功能的同步变体

PviChgLinkRequest

请求改变事件数据的用户信息

PviChgLinkResponse

读取一个PviChgLinkRequest响应

PviChgLink

PviChgLinkRequest / PviChgLinkResponse功能的同步变体

PviUnlinkAll

释放所有被指定为用户消息的某个Windows句柄或回调指针的链接对象

PviReadRequest

请求对一个现有的PVI对象进行读取访问。读取访问的类型是由访问类型决定的。

PviReadArgumentRequest

请求对一个现有的PVI对象进行带参数数据的读取访问。读取访问的类型是由访问类型决定的。

PviReadResponse

读取一个PviReadRequest或PviReadArgumentRequest响应或PVICOM事件的事件数据

PviRead

PviReadArgumentRequest / PviReadResponse功能的同步变体

PviWriteRequest

请求对一个现有的PVI对象进行写入访问。写入访问的类型是由访问类型决定的。

PviWriteResponse

读取一个PviWriteRequest响应

PviWriteResultResponse

读取一个带有结果数据的PviWriteRequest响应

PviWrite

PviWriteRequest/PviWriteResponse功能的同步变体

PviGetResponseInfo

读取关于响应或事件数据的信息

PviGetNextResponse

读取下一个响应或事件数据的用户信息(仅针对PVIFUNCTION用户信息)。

PviGetVersion

读取PVICOM的版本字符串

带或不带实例句柄的函数

在PVICOM接口中实现了两个函数组。

1.带有实例句柄的函数("PviX...")。

PVICOM接口必须用 PviXInitialize 函数进行初始化  。然后,只有以 "PviX... "开头的函数才能被使用。

2.没有实例句柄的函数("Pvi...")。

PVICOM接口必须用 PviInitialize 函数进行初始化  。然后不能使用以 "PviX... "开头的函数。

使用实例句柄的函数允许  在同一时间内操作 多个 通信实例 。每个实例句柄定义了一个通信实例,它控制着与PVI管理器的客户/服务器通信连接。这意味着,一个应用程序可以同时与几个PVI管理器进行通信(远程 通信类型)。如果不使用实例句柄的函数被调用,那么只有一个通信实例存在。那么,应用程序只能与一个PVI管理器进行通信。一般来说,一个应用程序也可以对同一个PVI管理器设置多个通信实例。然而,应该注意的是,在几个实例上的数据传输比只在一个实例上的数据传输要长。

异步和同步函数

名称中带有 "请求 "或 "响应 "字样的PVICOM函数(如PviReadRequest、PviXWriteRequest、PviReadResponse、PviXWriteResponse等)允许异步处理请求,因此也可以称为异步PVICOM函数。当一个PVI请求正在执行时,应用程序可以发送另一个PVI请求或处理其他任务。

同步PVICOM函数处理发送请求数据,等待响应,并在一个函数内读取响应数据。由于同步函数在内部使用异步函数,所以它们不会节省任何运行时间。然而,在PVICOM应用程序中,它们的使用要容易得多,因为程序不需要担心用户信息和分配请求和响应。一般来说,异步和同步函数也可以混合在一起。

在使用同步PVICOM函数时要注意以下几点。

1.同步PVICOM函数不具有多线程能力。这意味着两个同步函数或一个同步和一个异步函数不能同时从不同的线程中调用。如果请求是通过不同的通信实例发出的,这也适用。

2.当客户/服务器连接中断时,应用程序会停留在PVICOM函数中,直到通信超时结束(见 通信实例)。如果应用程序只使用一个线程,那么在这段时间内整个应用程序不能被操作。

3.如果此时正在运行一个同步函数,那么指定的通信实例的指定链接对象都不能被释放。

4. 不能用同步函数读取RESPONSE_INFO结构

同步函数只能用于测试程序、简单的可视化应用或小型PVICOM应用,如演示程序。如果PVICOM函数需要从多个线程中调用,那么你应该只使用异步PVICOM函数。对于 "远程 " 通信类型 或高速应用推荐使用异步PVICOM函数

不允许在PVICOM函数中处理异常(如try/catch组合)。PVICOM函数配备了用于通信控制和同步访问的内部机制。如果这些机制的顺序被打断,那么就会导致未定义的PVICOM行为。PVICOM函数中的异常也可能是由于指定了错误的函数参数(例如,不正确的缓冲区指针)造成的。由于这个原因,在调用PVICOM函数之前应该检查关键的指针参数,以便操作顺利进行。