User messages

<< 点击显示目录 >>

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

User messages

PVI使用用户消息  向PVICOM通信实例中的响应或事件数据的存在发出信号 ,以便PVI 应用。

一个用户消息是用三个参数定义的。

1.消息指针/手柄

2.消息编号

3.消息参数

在32位PVI版本(PviCom.dll)中,参数 "消息指针/手柄 "和 "消息参数 "的大小为4字节,在64位PVI版本(PviCom64.dll)中为8字节。

带有8字节(64位)参数的用户信息仅由3.50版本的PVI管理器(PviMan.exe文件版本)或更高版本支持。这适用于PVI管理器的32位和64位版本。因此,在3.50版和更高版本中,64位的应用程序(使用PviCom64.dll)也可以与32位的PVI管理器(本地或远程)进行通信。然而,它不可能与旧版本的PVI管理器进行通信。对于32位的应用程序(使用PviCom.dll),没有任何限制。

用户信息可以作为Windows消息或回调函数发送,也可以通过PVICOM应用程序的循环函数调用发送。发送PVICOM应用程序的响应或事件数据的引用(wParam)(作为带数据的回调的用户消息除外)。要读取响应或事件数据,必须调用相应的响应函数,并且必须将该引用作为参数发送。

User messages

Type

描述

Windows message

-

使用Windows消息发出信号。使用响应函数读取响应或事件数据。

Message function

PVIFUNCTION

循环调用PVI函数 PviGetNextResponse。一个系统事件可以被用作信号。使用响应函数读取响应或事件数据。

Callback with data

PVICALLBACK_DATA

使用回调函数的信号。使用回调函数传输响应或事件数据。

Callback without data

PVICALLBACK

使用回调函数的信号。使用响应函数读取响应或事件数据。

Asynchronous callback

PVICALLBACK_ASYNC

使用异步回调函数的信号。使用响应函数读取响应或事件数据。

一个PVICOM应用程序也可以在一个通信实例中混合使用窗口消息和回调(有或没有数据)。例如,事件数据可以作为Windows消息注册到应用程序中,而响应数据则作为回调。请记住,当它们被混合时,处理的顺序会发生巨大的变化。消息函数和异步回调不应该在一个通信实例中与其他类型混合。

User message type

使用方法

Windows message

具有开放(可访问)窗口的应用程序。为具有对话框或视图窗口的Visual C/C++应用程序进行了优化。

PVIFUNCTION

有或没有窗口的应用程序。对控制台应用、驱动应用、服务器应用以及PVI通信在其自身线程中进行的应用(多线程应用)进行了优化。

PVICALLBACK_DATA

有或没有开放窗口的应用程序。对Visual Basic应用程序进行了优化。

PVICALLBACK

如PVICALLBACK_DATA。

PVICALLBACK_ASYNC

有或没有窗口的应用程序。这个变体已经过时,被用户消息类型PVIFUNCTION所取代。

在实践中,用户消息作为消息函数提供了最好的性能。窗口消息和带数据的回调也是可以接受的选择。最差的性能通常与异步回调和无数据回调有关。然而,差异相对较小,而且只发生在较大的应用程序(500-1000个活动变量或更多)与大量数据相结合的情况下。初始化参数LM和RETR的设置也会影响性能,这取决于使用的用户信息类型。为了获得最佳性能,请使用设置 "LM=0 RETR=0"(见 "用户信息操作"一节)。

 

本节的主题:

Operation

Windows message

Message function

Callback with data

Callback without data

Asynchronous callback