<< 点击显示目录 >> 主页 PVI通信 > PVI帮助信息 > PVI base system > PVICOM interface > PVICOM functions > PviInitialize, PviXInitialize functions |
int PviInitialize (INT Timeout, INT RetryTime, LPCSTR pInitParam, LPVOID pRes)
int PviXInitialize (LPDWORD phPvi, INT Timeout, INT RetryTime, LPCSTR pInitParam, LPVOID pRes)
PviInitialize (ByVal Timeout As Long, ByVal RetryTime As Long, ByVal pInitParam As String, ByVal pRes As Long) As Long
PviXInitialize (ByRef phPvi As Long, ByVal Timeout As Long, ByVal RetryTime As Long, ByVal pInitParam As String, ByVal pRes As Long) As Long
Argument |
I/O |
说明 |
phPvi |
Out |
指向用于实例句柄的变量的指针。 为了避免出现未定义实例句柄的问题,实例句柄应该在应用程序中预先初始化为0(零)。如果该值为0,PVICOM会将实例句柄识别为无效,并返回一个适当的错误。 |
Timeout |
In |
客户端/服务器通信的超时,单位是秒 用这个函数参数指定的值作为初始化参数 COMT的默认设置 。如果不需要特别的预设,应该输入默认值0(空)。 |
RetryTime |
In |
PVICOM用户信息的重试时间为秒。 用这个函数参数指定的值作为初始化参数 RETR的默认设置 。如果不需要特别的预设,应该输入默认值0(空)。 |
pInitParam |
In |
指向一个以NULL为结尾的初始化参数字符串的指针。如果不需要初始化参数,那么可以指定NULL作为指针。 |
pRes |
|
保留用于扩展。应该始终为这个参数指定NULL。 |
值为0(null)表示初始化工作正确进行。除了0(null)以外的值表示有错误,返回值与实际发生的错误的代码相对应。
PviInitialize或PviXInitialize函数初始化了PVICOM接口,建立了一个PVICOM 通信实例,并启动了通信实例(客户端)与PVI管理器(服务器)的注册。一旦注册,通信实例(客户端)和PVI管理器(服务器)之间的通信连接就被打开。应该注意的是,客户端的注册只是启动。因此,从该功能返回并不能保证 客户机/服务器的稳定 通信。PVICOM通信实例可以 在 应用程序的 全局事件的帮助下发出通信连接的当前状态 。但要做到这一点,必须 在调用PviInitialize或PviXInitialize函数后, 用 PviSetGlobEventMsg 或PviXSetGlobEventMsg函数 激活所需的全局事件 。
与函数 "PviInitialize "不同,"PviXInitialize "可以被多次调用。每次调用都会建立一个新的通信实例。这允许一个PVICOM应用程序能够与不同计算机上的几个PVI管理器进行通信。如果用PviXInitialize设置了一个通信实例,那么随后必须用实例句柄(PviX...)调用PVICOM函数。参见 有无实例句柄的函数 部分。
如果初始化函数PviInitialize(或PviXInitialize)没有报告错误,那么发送请求基本上可以立即开始(请求和响应)。如果此时通信连接没有激活,那么所有的请求都在通信实例中缓冲。
初始化参数。
各个初始化参数在字符串中使用参数代码进行区分。
<ParameterName> = ["]<ParameterValue>["]
如果一个参数值有非字母数字的字符,则必须用("...")引号输入。各个参数条目之间至少要有一个空格。
Par. |
说明 |
客户端/服务器(应用程序/PVI管理器)通信的超时,单位为秒。 该超时也定义了生命迹象监测的时间。需要一个额外的时间来检测客户机/服务器连接的中断情况。为了确定检测到通信中断的总时间(最晚),这里指定的超时值必须是两倍的。如果超时为5,那么连接中断最早可以在5秒内检测到,最晚可以在10秒内检测到。如果连接中断发生在超时时间内,PVICOM接口就不承认它是中断。一旦连接被重新建立,数据传输就会继续。经常使用的值是:本地通信3-10秒,远程通信5-30秒。 值:1-3600,=0 ...使用的默认值为30秒。 在功能参数 "超时 "中指定的值可作为该参数的预设值。 |
|
PVICOM用户信息的重试时间为秒。 通常应使用该参数的默认设置("RetryTime=0")。 有关该参数的更多信息,请参见 用户信息操作 部分。 值:1 - 3600,<= 0 ...不重复。 在函数参数 "RetryTime "中指定的值可作为该参数的预设值。 |
|
LM |
对用户信息的限制。默认值:"LM=1"。 PVICOM应用基本上不需要改变这个参数的默认设置。然而,如果一个应用程序能够快速响应PVICOM的用户消息,那么一个较高的限制值("LM=100","LM=500")可以加速用户消息的执行。 关于这个参数的更多信息,请参见 用户信息操作 部分。 值:1 - 65535,<= 0 -> 无限制。 |
PT |
进程超时,单位是秒。默认值:"PT=0"。 这个超时可以用来监测 请求和响应之间的时间 。这个参数只适用于执行特殊任务的PVICOM应用。标准应用不需要监测,应使用默认设置(无超时监测)。 值: 1 - 3600, <=0 -> 无超时监控 |
IP |
TCP/IP地址或主机名。 如果指定了IP初始化参数,那么 PVICOM的通信就使用远程通信类型 。用这个参数可以指定服务器(PVI管理器)的TCP/IP地址(如 "IP=10.43.50.62")或主机名("IP=SystemPC1")。如果给出的是主机名,那么分配给该名称的IP地址就由系统决定。 |
PN |
TCP/IP端口号。默认:"PN=20000"。 这个参数只有在与IP参数一起使用时才需要。分配给PVI管理器的端口号需要在此指定(PVI管理器属性)。 值:1024 - 32767。 |
AS |
自动启动(仅适用于本地通信类型)。 1 ...PVI 管理器被启动(默认)。 0 ...PVI管理器不会自动启动,在调用该函数时必须已经启动。 关于启动程序的更多信息可以在 PVI管理器 部分找到 。 |
Visual C++的例子
应用程序和PVI管理器在同一台计算机上。
#include <PviCom.h>
int Initialize (HWND hWnd)
{
int Error;
// Create and initialize communication instance:
Error = PviInitialize (0, 0, "COMT=4 LM=1000", NULL);
if (Error != 0)
return (Error);
// Set global Event ARRANGE to generate PVI objects:
Error = PviSetGlobEventMsg (POBJ_EVENT_PVI_ARRANGE, hWnd, WM_USER+1, 0);
if (Error != 0)
return (Error);
return (0);
}
int Deinitialize ()
{
int Error;
// Free communication instance:
Error = PviDeinitialize ();
return (Error);
}
在这里,应用程序应该与两个PVI管理器通信,其中第一个PVI管理器在同一台计算机上,第二个PVI管理器在另一台计算机上。
#include <PviCom.h>
DWORD hPvi1 = 0;
DWORD hPvi2 = 0;
int Initialize (HWND hWnd)
{
int Error;
// Create and initialize communication instance 1:
Error = PviXInitialize (&hPvi1, 6, 0, "", NULL);
if (Error != 0)
return (Error);
// Set global Event ARRANGE to generate PVI objects for manager 1:
Error = PviXSetGlobEventMsg (hPvi1, POBJ_EVENT_PVI_ARRANGE, hWnd, WM_USER+1, 0);
if (Error != 0)
return (Error);
// Create and initialize communication instance 2:
Error = PviXInitialize (&hPvi2, 8, 0, "IP=10.43.50.62 PN=20001", NULL);
if (Error != 0)
return (Error);
// Set global Event ARRANGE to generate PVI objects for manager 2:
Error = PviXSetGlobEventMsg (hPvi2, POBJ_EVENT_PVI_ARRANGE, hWnd, WM_USER+2, 0);
if (Error != 0)
return (Error);
return (0);
}
int Deinitialize ()
{
int Error;
int LastError = 0;
if (hPvi1 != 0)
{
// Free communication instance 1:
Error = PviXDeinitialize (hPvi1);
if (Error != 0)
LastError = Error;
else
hPvi1 = 0;
}
if (hPvi2 != 0)
{
// Free communication instance 2:
Error = PviXDeinitialize (hPvi2);
if (Error != 0)
LastError = Error;
else
hPvi2 = 0;
}
return (LastError);
}