<< 点击显示目录 >> 主页 PVI通信 > 应用例程 > Windows > PVICOM_C++ > PVICOM读写结构体变量 |
1. 结构变量更整洁
结构变量更有利于查找和管理,程序更清晰的程序代码。
2. 创建 PVI 结构变量
//////////////////////////////////////////////////////////////////////
// PVI variable object PV1:
if (! m_NamePv1.IsEmpty ())
{
PObjPvName = PObjName + PVICHR_PATH + m_NamePv1;
PObjDesc.Format ("CD=\"%s\" %s", m_ConnectPv1,m_ParamPv1);
// create a temporary variable object and a link object:
/////////////////////////////////////////////////////////////////////////
// Pv1:VisIO:
CString temp = "VT=struct";
int i;
for( i=0; i<15; i++) // 60
{
temp+=" {. VT=i32}"; // 15 个 i32, 60 个字节
}
/////////////////////////////////////////////////////////////////////////
for( i=0; i<4; i++) // 8
{
temp+=" {. VT=u16}"; // 4 个 u16, 8 个字节
}
/////////////////////////////////////////////////////////////////////////
for( i=0; i<64; i++)
{
temp+=" {. VT=u8}"; // 64 个 u8, 64 个字节
}
// IDC_PVAR1 是 LPARAM 类型, 对应每一个创建的对象.
ErrCode = PviCreate (&hPvar1, PObjPvName, POBJ_PVAR,PObjDesc, CWnd::m_hWnd, WM_PVI_EVENT,IDC_PVAR1,temp);
if (ErrCode != NULL)
{
hPvar1 = NULL;
DemoMessage ("Can't create variable (PV1) objekt \"%s\" (%u)",PObjName, ErrCode);
}
}
3. 读取 PVI 结构变量
/////////////////////////////////////////////////////////////////////////////
// PVI 读事件驱动:
/////////////////////////////////////////////////////////////////////////////
LRESULT CTchjView::OnPviEvent(WPARAM wParam, LPARAM lParam)
{
char pszDataBf[80];
int ErrCode;
/////////////////////////////////////////////////////////////////////////
// lParam:变量所对应事件: LPARAM 对应创建的对象, 此处是 IDC_PVAR1.
switch (lParam)
{
case IDC_PVAR1:
ErrCode = PviReadResponse (wParam, &VisIO, sizeof (PANELIO));
////////////////////////////////////////////////////////////////
// 从 PCC 中读该变量失败:
if (ErrCode != NULL)