WTclientWord格式.docx
- 文档编号:4457598
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:22
- 大小:25.70KB
WTclientWord格式.docx
《WTclientWord格式.docx》由会员分享,可在线阅读,更多相关《WTclientWord格式.docx(22页珍藏版)》请在冰点文库上搜索。
EventsSpecificationsavailablefromtheOPCFoundationweb-siteathttp:
//www.opcfoundation.org.
CreatingaCustomOPCClientusingWTclient.DLL
LinkWTclient.libwiththeApplication
WTclient.libcontainstheexportdefinitionsfortheDLL’sAPI.IncludethisfilewiththeprojectfilesforthecustomapplicationandincludeWTclientAPI.hwiththosemoduleswhichwillbemakingcallsintotheDLL.IfprogramminginVisualBasic,includethemodule1.basfromtheVBA_example,(suppliedwiththedemo),intoyourproject.
DCOMInitialization
BeginningwithWTClient.DLLVersion2.0,itisnowtheClientApplication’sresponsibilitytoproperlyinitializeDCOM.PriortoVersion2.0,WTClient.dllperformedDCOMandSecurityinitializationintheDLLMainfunctionandcalledCoUninitializewhenthedllwasunloaded.Thispresentedsomeproblemsduetotheload-orderofvariousWindowsdll’s.Theseinitializationcallshavebeenmovedtoanewexportedfunction,(WTclientCoInit()),thattheuserapplicationcancallduringthestartupofthemainexecutablethread.WTclientCoInit()initializesDCOMasmulti-threadedandusesdefaultsecurity.YourapplicationmaychoosetoperformDCOMinitializationitselfratherthanusingtheexportedfunction.Ineithercase,yourapplicationMUSTcallCoUninitialize()whenterminating.
ObtainingtheListofOPCServers
WTclient.dllexportstwofunctionsthatallowthecontrollingapplicationtoobtainalistofavailableOPCServers.
intNumberOfOPCServers(BOOLUseOPCENUM,LPCSTRMachineName);
BOOLGetServerName(intindex,LPSTRBuffer,intBufSize);
OPCENUMisacomponentsuppliedbytheOPCFoundationtoallowprospectiveclientapplicationstoobtainalistofavailableserversonthelocalorremotemachine.Unfortunately,atthetimeofthiswriting,theoperationofOPCENUMisnotconsistantacrossallplatforms.WTclient.dllallowstheapplicationtoattempttousetheOPCENUMcomponenttoobtainthelistofServers,ortobypassOPCENUMandobtainthelistbyscanningthelocalcopyoftheWindowsRegistry.IfOPCENUMisused,youcanpassthenameofaremotemachineto
obtaintheremoteserverlist.
OncethenumberofservershasbeenreturnedfromWTclient.dll,theapplicationcaniteratethroughthelistofnamesbycalling:
AusersuppliedcharacterbufferreceivesanamefromtheServerlistasidentifiedbyapassedindex.BufSizeidentifiesthelengthoftheusersuppliedcharacterbufferandpreventsthedllfromloadinganamethat'
stoolong.GetServerNamereturnsTRUEifavalidServernameisreturnedinBuffer,otherwisethereturnvalueisFALSE.
AcomplementarysetoffunctionsallowtheapplicationtoobtainalistofavailableAlarms&
EventsServers.
intNumberOfOPC_AEServers(LPCSTRMachineName);
BOOLGetOPC_AEServerName(intindex,char*pBuf,intBufSize);
EstablishinganOPCConnection
HANDLEConnectOPC(LPCSTRMachineName,LPCSTRServerName,BOOLEnableDLLBuffering);
HANDLEConnectOPC1(LPCSTRMachineName,LPCSTRServerName,BOOLEnableDLLBuffering);
HANDLEConnectOPC_AE(LPCSTRMachineName,LPCSTRServerName);
ThisfunctionreturnsavalidHANDLEifaconnectioncouldbeestablishedtotheOPCServerdefinedbyMachineNameandServerName.Multiplesimultaneousconnectionstodifferentserversmaybeestablished,andthereturnedHANDLEidentifiestheconnectionforfuturecallstocreategroupsanditems.PassingaNullStringastheMachineNameparameteridentifiesthelocalmachine.WTclientwillattempttheconnectionusingtheOPC2.0ConnectionPointInterface.Ifnotavailable,itwillrevertthetheOPC1.0DataObjectInterface.
WTclient.dlloperatesinbasicallytwomodes.Thefirstisusedwiththoseapplicationswhichsupport'
C-Style'
callbackfunctions.Inthiscase,nobufferingisperformedinsidethedll.AsdatachangenotificationsarereceivedfromtheconnectedOPCServer,callbacksareusedtopassthenewinformationtothecontrollingapplication,(refertoEnableOPCNotificationbelow)
Forthoseapplicationsdesignedusingtoolswhichdonotsupportcallbackfunctions,(suchasVisualBasic5.0),WTclientmaybeconfiguredtomaintainalistofallOPCItems,(Tags),createdbytheapplication.AsdatafromtheServerchanges,thecorrespondingtagvalueinthedll'
slistwillbeupdated.Thecontrollingapplicationmayreadthevalueofatagatanytime,(refertoReadOPCItembelow).
ConnectOPC1willalwaysattemptanOPC1.0connection.
ConnectOPC_AEwillestablishaconnectiontotheOPCAlarms&
EventsServerspecifiedbyMachineNameandServerName.
voidDisconnectOPC(HANDLEhConnect);
voidDisconnectOPC_AE(HANDLEhConnect);
Whenanapplicationterminates,itisresponsiblefordisconnectingfromanattachedServer.TheDisconnectOPC(),(orDisconnect_OPCAE()),functionwillprovideacleanshutdownoftheconnectiondefinedbyhConnect.
ObtainingalistofServerTagNames
intNumberOfOPCItems(HANDLEhConnect);
BOOLGetOPCItemName(HANDLEhConnect,intindex,char*pBuf,intBufSize);
ThesetwofunctionsoperatesimilarlytothosewhichallowyoutoobtainthelistofServernames.NumberOfOPCItems()returnsthetotalnumberofuniquetagssupportedbyaconnectedOPCServer.IncrementallycallingGetOPCItemNamewillstepthroughalltheavailabletagnamestoallowthecontrollingapplicationtoselectanitemorpresentaBrowselisttotheuser.NumberOfOPCItemswillbrowsethecompletelistofitemnamesfromtheserverandpresentthelistina‘FLAT’format.
BOOLGetNameSpace(HANDLEhConnect,WORD*pNameSpace);
BOOLBrowseTo(HANDLEhConnect,LPCSTRNodeName);
charSetWTclientQualifier(charqualifier);
intBrowseItems(HANDLEhConnect,WORDFilter);
Toprovidebetteraccesstoaserverwithahierarchicalnamespace,theWTClientdllprovidesfunctionstoallowtheapplicationtobrowseitemnamesdirectlyfromtheserver.GetNameSpaceallowstheapplicationtodeterminethenamespaceoftheserver.BrowseTomovesthecurrentbrowsepositiontothenamespecified,andBrowseItemsfillstheinternalnamearraywithnodenamesfromtheserver.BrowseTomaybeusedwitheitherOPC_LEAFtoreadtheleafnamesofOPC_BRANCHtoreadthebranchnamesimmediatelybelowthecurrentbrowseposition.ThenamesmaythenberetrievedusingtheGetOPCItemNamefunction.TheWtClientDLLmaintainsasinglenamearrayforusebyNumberOfOPCItemsandBrowseItemssotheapplicationmustbecarefulwhenbrowsingtheservernamespace,nottooverwritevaluesfromapreviouscall.Duringiteractionofthehierarchicaltree,theallitemnamesmustbecopiedintolocalstorageimmediatelyaftercallingBrowseItems.
CallingBrowseItemsfromtheRootpositionusingOPC_FLATbehavesidenticallytoNumberOfOPCItems().
SetWTclientQualifierallowstheapplicationtochangethedelimitingcharacterusedtoparsethenodesofahierarchicalnamespace.Thedefaultdelimiterexpectedbytheclientdllis‘.’,however,someserversusethe‘.’characteraspartofthenodename.
BOOLSetBrowseFilters(HANDLEhConnect,LPCSTRUserString,VARTYPEDataType,DWORDAccessType);
BrowsefiltersmaybesetbytheapplicationtoeffectthenumberofOPCItemsreturnedfromtheserver.
Theapplicationmaychoosetoretrieveonlythoseitemsofacertaindatatypeoraccessrights.
BOOLQualifyItemName(HANDLEhConnect,LPCSTRItemName,BYTE*pQualifiedName,
intBufSize);
Whenbrowsingtheservernamespaceusingtheabovefunctions,leafnamesarereturnedforeachnodeofthehierarchicaltree.ThisfunctionallowstheapplicationtoobtainthefullyqualifieditemnameasrequiredfortheAddOPCItemfunctions.
CreatingOPCGroupsandTags
HANDLEAddOPCGroup(HANDLEhConnect,LPCSTRName,DWORD*pRate,float*pDeadBand);
voidRemoveOPCGroup(HANDLEhConnect,HANDLEhGroup);
WTclient.dllexportstwofunctionswhichallowyoutocreateandremoveanOPCGroup.TheAddOPCGroup()functionreturnsahandletouniquelyidentifythegroup,andmustbesuppliedtootherWtclientfunctionstoreferencetags,etc.ThevaluespassedtoAddOPCGroupasparametersaredeterminedbythecontrollingapplicationandarespecifictoeachGroup.ThenameisarbitraryandnotusedbytheServer.pRateisapointertothedesiredrefreshrate,(inmilliseconds),thattheserverusestoprovideupdatesbacktotheclient.TheactualrateisreturnedfromtheserverinpRate.
BOOLChangeOPCGroupState(HANDLEhConnect,HANDLEhGroup,BOOLActive));
ThedefinedOPCGroupmaybeactivated,(Active=TRUE),ordeactivated,(Active=FALSE),usingthisfunction.
HANDLEAddOPCItem(HANDLEhConnect,HANDLEhGroup,LPCSTRItemName);
HANDLEAddOPCItemWithPath(HANDLEhConnect,HANDLEhGroup,
LPCSTRPathName,LPCSTRItemName);
voidRemoveOPCItem(HANDLEhConnect,HANDLEhGroup,HANDLEhItem);
ToaddanitemtoadefinedOPCGroup,simplycalloneoftheAddOPCItemfunctionswiththegroup'
shandleandthetagnameand/o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WTclient