<< 点击显示目录 >> 主页 PVI通信 > PVI帮助信息 > PVI base system > PVICOM interface > User messages > Operation |
如果PVI管理器(服务器) 向PVICOM 通信实例 (客户端)发送响应 或 事件数据 ,那么该数据将被暂时存储在客户端,并以用户消息的方式通知应用程序。
然后,应用程序必须对 用户消息作出反应 ,并调用相应的PVICOM响应函数(除了用户消息作为数据的回调)。一旦发生这种情况,数据被读取,客户端的数据内存区域被释放。如果应用程序 "忘记 "调用响应函数,那么数据就会保留并占用通信实例中的内存。
PviInitialize 或PviXInitialize函数的初始化参数LM和RETR 可以影响对某些用户信息的控制。
User message type |
LM parameter |
RETR parameter |
Windows message |
限制窗口信息的数量。 |
重复窗口信息。 |
PVIFUNCTION |
无意义。 |
无意义。 |
PVICALLBACK_DATA |
无意义。 |
重复回调。 |
PVICALLBACK |
限制回调的数量。 |
重复回调。 |
PVICALLBACK_ASYNC |
无意义。 |
无意义。 |
初始化参数LM可以用来限制每个通信实例的用户信息数量。如果限制被启用(限制值>0),那么这并不意味着用户消息会丢失。相反,它指的是它们在时间上的分布方式。设置为 "LM=100 "意味着PVICOM最多向应用程序发送100条用户信息。只有当应用程序对已经发送的用户信息做出反应并调用相应的PVICOM响应函数时,才会再发送一条用户信息。如果设置为 "LM=1",每条新的用户信息只有在前一条用户信息被处理后才会发送。如果应用程序 "忘记 "调用响应函数,那么该应用程序就不会再收到任何用户信息。因此,设置 "LM=1 "非常适用于测试应用程序。由于这个原因,这是PVI接口默认使用的设置。然而,其缺点是用户信息被延迟了。
只需要限制 "Windows消息 "和 "PVICALLBACK "用户消息。每出现一次这些类型的用户消息,就会发送一条Windows消息。 然而,Windows消息的缓冲区是有限的。一旦它满了,用户信息就会丢失。限制用户消息可以有效地防止Windows消息缓冲区的溢出。在实践中,100(Windows CE/Windows 95的 "LM=100")和500(Windows XP的 "LM=500")之间的数值已经被证明是有效的。如果一个应用程序的用户信息数量足够少(例如,活动的PVI对象的数量<100),这个限制可以被关闭。设置 "LM=0 "可以关闭该限制。
RETR初始化参数(以秒为单位)可用于设置用户信息的重复次数。如果一条用户信息没有通过调用相应的 "响应 "函数得到确认,那么同一用户信息在时间过后被重新发送。这个过程重复进行,直到应用程序确认了用户消息。为了保持请求和响应数据的时间顺序,LM参数必须被设置为1("LM=1")。
原则上,只有在调试Visual Basic 5.0应用程序时才需要重试用户消息。如果应用程序的执行被断点停止,那么回调函数(用户消息)就不会被执行。当使用较新版本的Visual Basic或其他编程语言时,应关闭用户消息的重复("RETR=0")。