<< 点击显示目录 >> 主页 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消息发出信号。使用响应函数读取响应或事件数据。 |
|
PVIFUNCTION |
循环调用PVI函数 PviGetNextResponse。一个系统事件可以被用作信号。使用响应函数读取响应或事件数据。 |
|
PVICALLBACK_DATA |
使用回调函数的信号。使用回调函数传输响应或事件数据。 |
|
PVICALLBACK |
使用回调函数的信号。使用响应函数读取响应或事件数据。 |
|
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"(见 "用户信息操作"一节)。
本节的主题: