亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? opctest.cpp

?? 工業標準通訊OPC協議的客戶端測試源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// opctest.cpp
//
// (c) Copyright 1998 The OPC Foundation
// ALL RIGHTS RESERVED.
//
// DISCLAIMER:
//  This sample code is provided by the OPC Foundation solely to assist 
//  in understanding the OPC Specifications and may be used
//  as set forth in the License Grant section of the OPC Specification.
//  This code is provided as-is and without warranty or support of any sort
//  and is subject to the Warranty and Liability Disclaimers which appear
//  in the printed OPC Specification.
//
// CREDITS:
//  This code was generously provided to the OPC Foundation by
//  Al Chisholm, Intellution Inc.
//
// CONTENTS:
//
// Very simple example of an OPC Client program.
// It shows the proper use of most of the interfaces and methods
// including use of Variants and proper Freeing of returned memory!
//
// The main goal of the program is to try to call every method
// on every interface to show proper use of the method and proper freeing
// of returned parameters.
//
// The secondary goal of this program is to serve as a general purpose
// test program for OPC Custom Servers and to try to allow the User
// to perform a reasonable (but certainly not exhaustive) test of 
// the server behavior. It is NOT very user friendly in this regard.
// But it should still be fairly useful.
//
// This test program can be used to connect to and 
// test the basic functionality of any OPC Custom Server.
//
// Note that it creates 2 groups, adds 2 tags to each group,
// and reads the data for both tags.
// The idea is that if 1 works it proves very little
// but if '2' work then probably 'n' will work.
//
// What is missing from this version:
//   Some of the OPTIONAL interfaces are missing.
//   A few of the less commonly used methods are not tested.
//
//
// Modification Log:
//	Vers    Date   By    Notes
//	----  -------- ---   -----
//	0.00  11/18/96 ACC
//	      12/01/96 acc   add PersistFile, Enumerators, Item fuctions
//                       Separate INPROC and LOCAL server tests
//	0.01  02/08/97 acc   Fix memory leaks (see acc001)
//	0.02  02/28/97 acc   Add ability to enter server and node name
//                      and to enter ItemID and AccessPaths
//	                     and to connect via DCOM (CreateRemoteServer)
//                       Correct some error messages
// 0.90  05/03/97 acc   Add ConnectionPoint Capability (early)
//                       & many additional tests
// 1.0a  08/01/97 acc   add TryBrowse, remove server::enumunknown
// 2.00  09/01/97 acc   add TryParms, finalize connection points, ASYNCIO2
//                      fix bugs in TryItemReadWrite
//       11/10/97 acc   test sync read from both cache and device
//       01/14/98 acc   update per final spec.
//
//                      todo: add tests for NULL pointers and Strings where allowed
//                      to insure they marshall properly.
//

#include <stdio.h>
#include <conio.h>
#include "opccomn.h"	// Include the GENERIC OPC header file
#include "opcda.h"	// Include the GENERIC OPC header file
#include "wcsutil.h"
#include "OLECTL.h"
#include "COMCAT.h"


//---------------------------------------------------------
// Local Functions

void LocalInit(void);
void LocalCleanup(void);

IUnknown * CreateRemoteOPCServer(WCHAR* szProgID, WCHAR*szNodeName);
IUnknown * CreateInprocOPCServer(WCHAR* szProgID);
IUnknown * CreateLocalOPCServer(WCHAR* szProgID);

void ShowDAList(CATID);
void TryIUnknown(IUnknown * pOPC);
void TryOPCServer(IOPCServer * pOPC);
void TryPersistFile(IPersistFile * pOPC);
void TryGetErrorString(IOPCServer * pOPC);
void TryGetStatus(IOPCServer * pOPC);
void TryAddGroup(IOPCServer * pOPC);
void TryRemoveGroup(IOPCServer * pOPC);
void TryEnumString(IOPCServer * pOPC);
void TryGetByName(IOPCServer * pOPC, LPOLESTR name);
void TryEnumUnknown1(IOPCServer * pOPC);

void TryGSM( IOPCGroupStateMgt * pGRP1 );
extern	OPCHANDLE TryGetGroupState(IOPCGroupStateMgt * pGRP);

void TestGroup(void);

void TryItemFunctions(IOPCGroupStateMgt * pGRP);

void TryItemReadWrite(IOPCSyncIO *pSIO, int nItem, OPCHANDLE *sh);
void TryEnumItemAttributes(IOPCItemMgt * pOPC);

extern void TryIM( IOPCItemMgt * pIM);
extern void TryConnectionPoint(IOPCGroupStateMgt * pGRP, int nItem, OPCHANDLE *sh);	//V2.0
extern void TryDataObject(IOPCGroupStateMgt * pGRP, int nItem, OPCHANDLE *sh);
extern void TryBrowse(IOPCBrowseServerAddressSpace * pBAS);
extern void TryParams(IOPCItemProperties * pPRM);
extern void TryCOMN(IOPCCommon * pPRM);
extern int  TrySvrCPC(IConnectionPointContainer * pPRM);

void	report( char*n, HRESULT r);
void	DumpVariant(VARIANT *v);



// Global interface to the COM memory manager
IMalloc *pIMalloc;

// Some Global Strings for use in Group/Item Testing
//
WCHAR	*ItemIDs[2] = {0,0};
WCHAR	*AccessPaths[2] = {0,0};
VARTYPE	dtype[2];
OPCHANDLE g_sh[2];		// Returned Server Handles for the Items
BOOL add_done = 0;


// Global list of available server interfaces
//
IUnknown *gpOPC = 0;
IOPCServer *gpOPCS = 0;
IConnectionPointContainer *gpOPC_CPC = 0;
IOPCCommon *gpOPCCOMN = 0;
IOPCBrowseServerAddressSpace *gpOPCBA = 0;
IOPCItemProperties *gpOPCPRM = 0;
IOPCServerPublicGroups *gpOPCPG = 0;
//IEnumUnknown * gpOPCEU = 0;
IPersistFile * gpOPCPF = 0;


// Catagory IDs (in opc_cats.c)
//
EXTERN_C const CATID CATID_OPCDAServer10;
EXTERN_C const CATID CATID_OPCDAServer20;

//---------------------------------------------------------
// main
void main(void)
{
	HRESULT r2, r3, r5, r6, r7, r8, r9;
	int loop, sdr;

	printf("Al Chisholm's OPC Client Demo/OPC Custom Server Test Program V2.xx\n");
	printf("Provided by Intellution Inc.\n");

	LocalInit();

	// Check for and show registered Data Access Servers
	//
	printf("DA 1.0 Servers...\n");
	ShowDAList(CATID_OPCDAServer10);
	printf("DA 2.0 Servers...\n");
	ShowDAList(CATID_OPCDAServer20);

	// Allow the user to run the test several time...
	//
	while(1)
	{
		CHAR c;
		CHAR buffer[82] = {80};
		CHAR *nptr, *pptr;
		WCHAR *node = 0;
		WCHAR *progid = 0;

		while(kbhit())getch();

		printf("Enter Server type I(inproc),L(local),R(remote), X(exit)\n");
		pptr = gets(buffer);
		c = *pptr;
		if(c == 'x') break;
		if(c == 'X') break;

		// read the common info we need for all of the tests
		//
		printf("Enter Server PROGID\n");
		pptr = gets(buffer);
		progid = WSTRFromSBCS(pptr, 0);
		

		while(kbhit())getch();
		switch(c)
		{
		case 'i':
		case 'I':
			gpOPC = CreateInprocOPCServer(progid);
			break;

		case 'l':
		case 'L':
			gpOPC = CreateLocalOPCServer(progid);
			break;

		case 'r':
		case 'R':
			printf("Enter Server NodeName\n");
			nptr = gets(buffer);
			node = WSTRFromSBCS(nptr, 0);
		
			gpOPC = CreateRemoteOPCServer(progid, node);
			break;

		default:
			break;
		}

		if(gpOPC)
		{
			printf("\nChecking Supported Server Interfaces...\n");
			// See what interfaces are supported
			//
			r2 = gpOPC->QueryInterface(IID_IOPCServer, (void**)&gpOPCS);
			r3 = gpOPC->QueryInterface(IID_IPersistFile, (void**)&gpOPCPF);
			r5 = gpOPC->QueryInterface(IID_IOPCServerPublicGroups, (void**)&gpOPCPG);
			r6 = gpOPC->QueryInterface(IID_IOPCBrowseServerAddressSpace, (void**)&gpOPCBA);
			r7 = gpOPC->QueryInterface(IID_IOPCItemProperties, (void**)&gpOPCPRM);
			r8 = gpOPC->QueryInterface(IID_IOPCCommon, (void**)&gpOPCCOMN);
			r9 = gpOPC->QueryInterface(IID_IConnectionPointContainer, (void**)&gpOPC_CPC);

			report("IUnknown.................... ", S_OK);
			report("IOPCServer.................. ", r2);
			report("IPersistFile................ ", r3);
			report("IOPCServerPublicGroups...... ", r5);
			report("IOPCBrowseServerAddressSpace ", r6);
			report("IOPCItemProperties.......... ", r7);
			report("IOPCCommon.................. ", r8);
			report("IConnectionPointContainer... ", r9);

			printf("\n");
		}

		loop = 1;
		if(gpOPC) while(loop)
		{

			// Try using the custom IOPCServer interface if present
			// and also the IDispatch interface if present
			printf("\nTest Server Interfaces...\n");
			printf("0= IUnknown...\n");
			printf("1= OPCServer...\n");
			printf("2= PersistFile...\n");
//			printf("3= IEnumUnknown...\n");
			printf("4= OPCServerPublicGroups...\n");
			printf("5= OPCBrowseServerAddressSpace...\n");
			printf("6= OPCItemProperties...\n");
			printf("7= OPCCommon...\n");
			printf("8= ConnectionPointContianer...\n");
			printf("x= Exit...\n\n");

			pptr = gets(buffer);
			c = *pptr;
			switch(c)
			{
			case '0':
				if(gpOPC)TryIUnknown( gpOPC );
				break;
			case '1':
				if(gpOPCS)TryOPCServer( gpOPCS );
				break;
			case '2':
				if(gpOPCPF)TryPersistFile( gpOPCPF );
				break;
//			case '3':

			case '4':
				printf("This test not yet implemented\n");
				break;
			case '5':
				if(gpOPCBA)TryBrowse( gpOPCBA);
				break;
			case '6':
				if(gpOPCPRM)TryParams( gpOPCPRM);
				break;
			case '7':
				if(gpOPCCOMN)TryCOMN( gpOPCCOMN);
				break;
			case '8':
				if(gpOPC_CPC) sdr = TrySvrCPC( gpOPC_CPC);
				if(sdr) 
				{
					// If shutdown request - remove groups and release server
					// Sample server will wait up to 10 seconds for this then exit anyway.
					// This 'getch' allows us to test this feature.
					//
					printf("Hit Enter to Remove Groups and release all interfaces\n");
					getch();
					TryRemoveGroup(gpOPCS);
					loop = 0;
				}
				break;
			case 'x':
				loop = 0;
				break;
			}
		}

		// Free the interfaces
		//
		if(gpOPC) gpOPC->Release();
		if(gpOPCS) gpOPCS->Release();
		if(gpOPCPF) gpOPCPF->Release();
		if(gpOPCBA) gpOPCBA->Release();
		if(gpOPCPRM) gpOPCPRM->Release();
		if(gpOPCPG) gpOPCPG->Release();
		if(gpOPCCOMN) gpOPCCOMN->Release();
		if(gpOPC_CPC) gpOPC_CPC->Release();


		WSTRFree(progid, 0);
		progid = 0;
		WSTRFree(node, 0);
		node = 0;

		WSTRFree(ItemIDs[0], 0);
		ItemIDs[0] = 0;
		WSTRFree(ItemIDs[1], 0);
		ItemIDs[1] = 0;

		WSTRFree(AccessPaths[0], 0);
		AccessPaths[0] = 0;
		WSTRFree(AccessPaths[1], 0);
		AccessPaths[1] = 0;
	}

	LocalCleanup();

	printf("Done...\n");
	getch();
	exit(0);
}



//---------------------------------------------------------
//
//
void	report( char*n, HRESULT r)
{
	printf("\t%s - ", n);
	if(FAILED(r)) printf("NOT SUPPORTED(%lx)\n", r);
	else printf("Supported\n");
}


//---------------------------------------------------------
// LocalInit													z
// This is generic initialization for a task using COM
void LocalInit(void)
{
	HRESULT	r1;
	// General COM initialization...
	//
	r1 = CoInitialize(NULL);

	if (FAILED(r1))
	{
		printf("Error from CoInitialize\n");
		exit(1);
	}

	// This is for DCOM
	//
	r1 = CoInitializeSecurity(
			NULL,   //Points to security descriptor 
			-1,     //Count of entries in asAuthSvc 
			NULL,   //Array of names to register 
			NULL,   //Reserved for future use 
			RPC_C_AUTHN_LEVEL_NONE,    //The default authentication level for proxies
			RPC_C_IMP_LEVEL_IMPERSONATE,//The default impersonation level for proxies
			NULL,                      //Reserved; must be set to  NULL 
			EOAC_NONE,                 //Additional client or server-side capabilities
			NULL                       //Reserved for future use 
			);
	if (FAILED(r1))
	{
		printf("Error from CoInitializeSecurity: %lx\n", r1);
//		CoUninitialize();
//		exit(1);
	}

	// Also get access to the COM memory manager
	//
	r1 = CoGetMalloc(MEMCTX_TASK, &pIMalloc);

	if (FAILED(r1))
	{
		printf("GetMalloc failed\n");
		CoUninitialize();
		exit(1);
	}
}



//---------------------------------------------------------
// CreateServer REMOTE
// Create the requested OPC Server - DCOM enabled!
IUnknown*	CreateRemoteOPCServer(WCHAR*szProgID, WCHAR*szNodeName)
{
	CLSID clsid;
	HRESULT r1, r2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女精品一区二区三区| 欧美日韩一区二区三区在线| 久久er99精品| 免费成人结看片| 欧美96一区二区免费视频| 亚洲在线观看免费视频| 一区二区三区四区在线| 亚洲欧美另类图片小说| 亚洲欧美乱综合| 亚洲精品欧美综合四区| 亚洲最大色网站| 亚洲黄色av一区| 亚洲午夜在线电影| 亚洲第一成人在线| 丝袜亚洲精品中文字幕一区| 免费成人美女在线观看.| 青草av.久久免费一区| 久久精品国产亚洲5555| 国产一区二区三区观看| 成人夜色视频网站在线观看| 成人做爰69片免费看网站| 波多野洁衣一区| 一本一道综合狠狠老| 欧美在线一二三四区| 欧美群妇大交群中文字幕| 日韩美女在线视频| 久久久久免费观看| 自拍偷自拍亚洲精品播放| 亚洲美女在线一区| 亚洲成人av福利| 久久精品国产精品亚洲红杏| 国产91丝袜在线播放九色| 国产ts人妖一区二区| 99久久免费精品| 欧美人xxxx| 久久精品免费在线观看| 亚洲精品国产第一综合99久久 | 国产精品理伦片| 一区二区视频在线| 美女视频网站久久| 粉嫩av亚洲一区二区图片| 91蝌蚪porny| 欧美一区二区三区白人| 国产日产欧美一区| 亚洲一二三四区| 激情国产一区二区| 一本一道久久a久久精品| 91精品国产综合久久精品麻豆 | 中文字幕中文字幕在线一区| 亚洲国产综合人成综合网站| 激情欧美一区二区三区在线观看| 99久久综合精品| 欧美一级国产精品| 亚洲欧洲日韩av| 久久国产精品第一页| 99久久精品国产观看| 欧美一区二区免费视频| 一区二区中文视频| 日韩成人一级片| 成人的网站免费观看| 欧美另类变人与禽xxxxx| 久久久亚洲国产美女国产盗摄| 一区二区三区欧美日韩| 在线亚洲人成电影网站色www| 日韩欧美aaaaaa| 亚洲色图欧洲色图| 国产一区二区在线影院| 欧美日韩亚洲综合在线 | 蜜臀国产一区二区三区在线播放| 成人av资源下载| 精品毛片乱码1区2区3区| 一区二区三区精品久久久| 国产精品一区二区在线播放| 欧美日韩夫妻久久| 亚洲精品你懂的| 成人手机电影网| 精品嫩草影院久久| 日本在线不卡一区| 在线视频一区二区三| 日本一区二区三区dvd视频在线 | 成人v精品蜜桃久久一区| 欧美一区二区久久久| 亚洲主播在线观看| 99久久精品免费| 国产欧美一区二区在线| 美腿丝袜在线亚洲一区| 欧美色大人视频| 怡红院av一区二区三区| 成人激情动漫在线观看| 26uuu色噜噜精品一区| 日本不卡的三区四区五区| 在线一区二区三区四区五区| 国产精品不卡一区二区三区| 国产精品一二三在| 久久这里都是精品| 精东粉嫩av免费一区二区三区| 欧美日本在线看| 亚洲第一会所有码转帖| 欧美在线播放高清精品| 一个色在线综合| 色爱区综合激月婷婷| 自拍偷自拍亚洲精品播放| 成人av在线一区二区三区| 国产欧美精品区一区二区三区 | 国产精品欧美久久久久无广告| 国产综合久久久久久久久久久久 | 亚洲欧美国产三级| 色综合天天综合网天天看片| 中文字幕在线观看不卡| 国产盗摄视频一区二区三区| 久久久综合视频| 国产成人在线网站| 国产欧美日韩三级| 国产91在线观看| 国产精品视频yy9299一区| 99久久国产综合色|国产精品| 国产精品久久免费看| 91丝袜美腿高跟国产极品老师 | 国产一区二区三区免费看 | 亚洲人一二三区| 欧美在线视频全部完| 亚洲成人免费视| 91精品国产麻豆| 激情小说亚洲一区| 国产欧美日韩在线视频| 91丨porny丨最新| 亚洲制服丝袜av| 日韩一区二区三区四区| 韩国中文字幕2020精品| 日本一区二区三区四区在线视频| www.66久久| 亚洲福利一二三区| 美女视频网站黄色亚洲| 久久精品一区八戒影视| 91影视在线播放| 五月天亚洲精品| 久久久精品2019中文字幕之3| www.激情成人| 午夜日韩在线观看| 久久日一线二线三线suv| 成人一区二区三区视频在线观看 | 蜜臀久久99精品久久久画质超高清 | 丝瓜av网站精品一区二区| 日韩欧美的一区二区| 国产丶欧美丶日本不卡视频| 亚洲女女做受ⅹxx高潮| 91精品国产91久久综合桃花| 国产福利一区二区三区在线视频| 亚洲欧美视频一区| 日韩一区二区三区免费看 | 亚洲国产精品自拍| 亚洲精品在线一区二区| 成人av资源下载| 七七婷婷婷婷精品国产| 国产精品免费网站在线观看| 欧美三级电影网站| 国产精品亚洲成人| 亚洲国产一二三| 日本一区二区不卡视频| 欧美日韩国产成人在线免费| 国产成人一级电影| 午夜精品久久久久久| 国产亚洲一区字幕| 欧美男男青年gay1069videost| 国产成人在线观看| 日韩中文欧美在线| 亚洲色图视频免费播放| 日韩精品一区二区在线| 在线观看视频一区二区| 国产成人在线视频免费播放| 天天操天天干天天综合网| 国产精品女同一区二区三区| 日韩午夜精品电影| 色欧美片视频在线观看 | 在线综合视频播放| 91论坛在线播放| 国产福利一区二区三区视频 | 免费在线观看精品| 一区二区三区美女| 中文字幕欧美区| 精品国产一区久久| 欧美一区二区三区婷婷月色| 91蝌蚪porny成人天涯| 国产成人精品影视| 久久爱www久久做| 日韩福利视频网| 亚洲一区二区四区蜜桃| 中文字幕在线一区二区三区| 久久新电视剧免费观看| 日韩一二三区不卡| 在线不卡免费欧美| 欧美性生活大片视频| 色婷婷综合久久久久中文一区二区| 国产精品一区二区黑丝| 九九久久精品视频| 六月婷婷色综合| 日本91福利区| 日韩国产欧美视频| 亚洲成av人片在www色猫咪| 亚洲人成人一区二区在线观看|