#include <atlbase.h>
#import "pisdkcommon.dll" no_namespace
#import "piTimeServer.dll" no_namespace
#import "pisdk.dll" no_namespace
//获取点的描述
void GetTagDescriptor(_bstr_t bServer, _bstr_t bTagName, _variant_t &vDesc)
{
try
{
// navigate through the PISDK
IPISDKPtr pSDK(__uuidof(PISDK));
ServersPtr pServs = pSDK->GetServers();
ServerPtr pServ = pServs->GetItem(bServer);
PIPointsPtr pPts = pServ->GetPIPoints();
PIPointPtr pPt = pPts->GetItem(bTagName);
PointAttributesPtr pAtts = pPt->GetPointAttributes();
PointAttributePtr pDesc = pAtts->GetItem(_bstr_t("descriptor"));
vDesc = pDesc->GetValue();
}
// Check for errors thrown by smart pointers
catch(_com_error e)
{
_tprintf(_T("Error %x occurred. Message was %s\n"), e.Error(), (char *)e.Description());
}
// Check for non COM errors being thrown
catch(...)
{
_tprintf(_T("Non-COM error"));
}
}
//获取点的值
void GetTagValue(_bstr_t bServer, _bstr_t bTagName, _variant_t &vValue)
{
try
{
CTime dtStart,dtEnd;
//BoundaryTypeConstants btType;
// navigate through the PISDK
IPISDKPtr pSDK(__uuidof(PISDK));
ServersPtr pServs = pSDK->GetServers();
ServerPtr pServ = pServs->GetItem(bServer);
PIPointsPtr pPts = pServ->GetPIPoints();
PIPointPtr pPt = pPts->GetItem(bTagName);
_PIDataPtr pData = pPt->GetData();
_PIValuePtr pValue = pData->GetSnapshot();
vValue = pValue->GetValue();
}
// Check for errors thrown by smart pointers
catch(_com_error e)
{
_tprintf(_T("Error %x occurred. Message was %s\n"), e.Error(), (char *)e.Description());
}
// Check for non COM errors being thrown
catch(...)
{
_tprintf(_T("Non-COM error"));
}
}
分享到:
相关推荐
通过分析和学习这样的VC源代码,开发者可以掌握如何在C++环境中有效地管理和控制操作系统进程,这对于系统级编程和开发系统工具至关重要。同时,了解这些基础知识也有助于提升对Windows系统底层运作的理解。在实际...
在实际开发中,你可能需要根据需求调整`CreateProcess`函数的参数,例如,如果需要在后台启动进程而不显示窗口,可以设置`dwCreationFlags`为`CREATE_NO_WINDOW`。同时,确保正确管理和释放所有句柄,防止资源泄露。...
在VC++ 6.0开发环境中,MFC(Microsoft Foundation Classes)是一个强大的库,它为Windows应用程序提供了一种简化的方法,使得程序员可以更容易地利用Windows API进行开发。本实例主要探讨的是如何在单文本文档中...
在Windows操作系统中,进程是程序执行的实例,每个运行中的应用程序都对应一个或多个进程。VC++(Visual C++)作为Microsoft开发的一款强大的C++集成开发环境,可以用来创建和控制进程。本篇文章将深入探讨如何使用...
根据提供的文件信息,本文将详细解析如何使用Visual C++(简称VC)来编写一个实现风车转动效果的程序。此程序主要涉及Windows编程基础、图形绘制技术以及基本数学计算等知识点。 ### Windows编程基础 #### 程序...
在标签中提到的“VC 源码-数据库实例”,可能是指在实际项目中,我们可能需要将这些倾斜的文本应用于数据库查询结果的显示,例如,创建一个带有倾斜标题的表格。在这种情况下,你需要结合数据库操作,如ODBC或ADO...
本实例"图形编程实例--graph"聚焦于图形的旋转、平移和缩放操作,这些是图形用户界面(GUI)和游戏开发中的基础概念。在VC++环境下,这些操作通常涉及Windows API函数或DirectX库。 首先,让我们详细了解一下图形的...
在计算机科学中,进程是正在执行的程序的一个实例,拥有独立的内存空间和系统资源。在Windows系统中,每个运行的应用程序或服务都是一个进程。当我们说“打开命令行程序”时,实际上是在创建一个新的cmd.exe进程。 ...
在C++编程中,Visual C++(简称VC)是一个强大的开发环境,尤其对于初学者来说,掌握一些常用的VC操作和技巧可以极大地提高编程效率。以下是一些关键知识点的总结: 1. **创建项目与工程** - **新建项目**:在VC中...
在Windows开发环境中,多进程(Multi-Process)是一种编程模型,它允许同时运行多个独立的程序实例,每个实例都有自己的内存空间和系统资源。在本文中,我们将深入探讨多进程的概念,以及如何在Visual C++(简称VC)...
在VC++编程环境中,进程通信是一项关键技能,它允许不同进程之间交换数据和信息。...在实际开发中,根据需求,可以进一步优化和扩展这个模型,比如增加错误处理、异步通信等机制,以提高程序的稳定性和效率。
本节旨在让大家对VC++、VS2010和MFC有基本的概念上的认识,后面鸡啄米会带大家进入VS2010/MFC的世界,让大家轻松的开发各种包含窗口、图形等的可视化程序
`varioushvb`可能是指一个开发者的用户名或者是代码库的名字,而`Vc`通常指的是Visual C++,微软的C++编译器和集成开发环境。这个项目提供的源码是实现离散余弦变换的具体实例,且经过了测试,这意味着它们可以被...
本文将针对标题和描述中提到的VC学习中的常见问题进行详细解答。 1. 获取应用程序实例句柄: 应用程序的实例句柄通常保存在`CWinApp::m_hInstance`成员变量中。你可以通过调用`AfxGetInstanceHandle()`函数来获取...
在VC++编程环境中,开发人员经常需要执行操作系统级别的命令,如磁盘操作、网络通信或者系统管理等。这些任务可以通过调用Windows API中的`CreateProcess`函数来实现,该函数可以启动新的进程并控制它的执行。本文将...
在VC6.0或后续的VC版本中打开dsw工程文件,你可以编译并运行代码,观察结果并与理论知识进行比较。通过实践,你可以更好地理解傅里叶变换的工作原理及其在实际问题中的应用。 总之,傅里叶变换的C++实现不仅涉及...
### VS2008 VC++ XML操作指南 #### 一、环境配置与SDK安装 ...这些内容涵盖了安装SDK、注册DLL、配置开发环境以及编写基本的XML操作代码等关键知识点,有助于读者理解和实践在C++中操作XML文档的具体方法。
这些较短序列的计算由一系列经过高度优化的C代码片段完成,这些代码片段被称为 **solvers** 。solvers由一个名为 **planner** 的组件管理和组合,形成一个完整的计算路径,即 **plan** 。 2. **最优计划选择**:...
在VC++编程环境中,开发人员经常需要实现一个功能,即从自己的程序中启动另一个已安装在用户系统上的应用程序。这个过程通常称为“进程启动”或“打开应用程序”。本篇文章将详细探讨如何在VC++中实现这一功能,以及...