欢迎使用OM_OPCClt.dll。QQ是:250561779
OM_OPCClt开发API介绍
一、 简介
OM_OPCClt.dll是根据OPC DA
1. 使用STL撰写。
2. 使用Unicode字符集,源码可方便地移植到WinCE平台下
3. 支持WinCE平台
4. 可连接OPC DA 2.0 和 1.0服务器
二、 API介绍
1. HRESULT OMCoInit()
初始化COM库
2. void OMCoUninit()
反初始化COM库
====================================================
3. HRESULT NumberOfOPCServers(LPCWSTR szMachineName, int *num)
枚举机器上安装的OPC服务器
szMachineName: 要枚举服务器的机器名
num: 返回OPC服务器的数目
4. HRESULT GetOPCServerName(int nIndex, WCHAR *pBuf, int nBufSize)
获取OPC服务器的ProgID
nIndex: OPC服务器的位置,其值在0~(num-1)之间
pBuf: 存储获取的OPC服务器的ProgID
nBufSize: 缓冲区的大小
5. HRESULT ConnectOPCServer(LPCWSTR szMachineName, LPCWSTR szServerName, HANDLE hClient, HANDLE *phConnect)
与OPC服务器建立连接
szMachineName: 要连接的服务器所在的机器位置
szServerName: OPC服务器的ProgID
hClient: Client传递的句柄,当有Shutdown回调时会回传此句柄
phConnect: 存储对应服务器的句柄
6. HRESULT EnableShutdownCallback(HANDLE hConnect, SHUTDOWNPROC lpCallback)
设置Shutdown回调,当Server关闭时会产生此回调
hConnect: OPC服务器的句柄
lpCallback: 产生回调时执行的函数
7. HRESULT GetSvrStatus(HANDLE hConnect, OPCSERVERSTATUS *pSvrStatus, int nVendorInfoBufSize)
获取服务器的状态信息
hConnect: OPC服务器的句柄
pSvrStatus: 存储服务器的状态信息
nVendorInfoBufSize: 指示存储VendorInfo的缓冲区的大小
8. HRESULT DisconnectOPCServer(HANDLE hConnect)
与OPC服务器断开连接
hConnect: 指向相应服务器的句柄
====================================================
9. HRESULT NumberOfOPCItems(HANDLE hConnect, int *num)
获取Server地址空间中定义的Item数目
hConnect: 对应服务器的句柄
num: 存储返回的Item数目
10. HRESULT GetOPCItemName(HANDLE hConnect, int nIndex, WCHAR *pBuf, int nBufSize)
获取Item的标志符
hConnect: 对应服务器的句柄
nIndex: Item的位置,范围在0~(num-1)之间
pBuf: 存储Item标志符的缓冲区地址
nBufSize: 指示缓冲区大小
11. HRESULT SetBrowseFilters(HANDLE hConnect, LPCWSTR szFilterCriteria, VARTYPE vtDataTypeFilter, DWORD dwAccessRightsFilter)
设置获取Item过滤器,此函数应在NumberOfOPCItems之前调用,适用于DA 2.0 Server
hConnect: 对应服务器的句柄
szFilterCriteria: Server端定义的过滤字符串
vtDataTypeFilter: Item类型过滤
dwAccessRightsFilter: 访问权限过滤
12. HRESULT SetBrowseFiltersEx(HANDLE hConnect, LPCWSTR szNameFilter, LPCWSTR szVendorFilter)
设置获取Item过滤器,此函数应在NumberOfOPCItems之前调用,适用于DA 3.0 Server
hConnect: 对应服务器的句柄
szNameFilter: Item名称过滤
szVendorFilter: Server端自定义的过滤字符串
13. HRESULT GetNameSpaceType(HANDLE hConnect, OPCNAMESPACETYPE *pNameSpaceType)
获取服务器地址空间的类型
hConnect: 对应服务器的句柄
pNameSpaceType: 存储服务器地址空间的类型
14. HRESULT BrowseTo(HANDLE hConnect, LPCWSTR szNodeName)
移动到地址空间指定的节点位置
hConnect: 对应服务器的句柄
szNodeName: 移动到节点位置的名称
NULL:回到根节点
NUL String:返回上一级节点
非空字符串:进入下一级指定的节点
15. HRESULT NumberOfNodeItems(HANDLE hConnect, OPCBROWSETYPE enFilter, int *num)
获取地址空间当前层节点的数目
hConnect: 对应服务器的句柄
enFilter: 节点过滤
num: 存储节点的数目
16. HRESULT GetNodeItemName(HANDLE hConnect, int nIndex, WCHAR *pBuf, int nBufSize)
获取节点名称
hConnect: 对应服务器的句柄
nIndex: 节点的位置,范围在0~(num-1)之间
pBuf: 存储节点的名称
nBufSize: 缓冲区的大小
16. HRESULT QualifyItemName(HANDLE hConnect, LPCWSTR szItemName, WCHAR *pItemID, int nBufSize)
获取节点完整的名称,如Device.Group.Node1
hConnect: 对应服务器的名称
szItemName: 由GetNodeItemName返回的节点名称
pItemID: 存储节点的ID
nBufSize: 缓冲区的大小
====================================================17. HRESULT AddOPCGroup(HANDLE hConnect, LPCWSTR szName, BOOL bActive, DWORD *pUpdateRate, LONG *pTimeBias, float *pDeadband, HANDLE *phGroup)
添加组到服务器
hConnect: 对应服务器的句柄
szName: 组的名称
bActive: 活动状态
pUpdateRate: 更新速率,同时也返回Server修正过后的更新速率
pTimeBias: 时间偏置
pDeadband: 更新变化范围
phGroup: 返回组对应的句柄
18. HRESULT EnableDataCallback(HANDLE hConnect, HANDLE hGroup, DATACALLBACKPROC lpCallback)
设置DataCallback回调
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
lpCallback: 回调发生时执行的函数
19. HRESULT RemoveOPCGroup(HANDLE hConnect, HANDLE hGroup)
删除指定的组
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
20. HRESULT GetGroupState(HANDLE hConnect, HANDLE hGroup, WCHAR *pName, int nNameLen, DWORD *pUpdateRate, BOOL *pActive, LONG *pTimeBias, float *pPercentDeadband)
获取组的属性
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
pName: 组的名称
nNameLen: 缓冲区的大小
pUpdateRate: 更新速率
pActive: 活动状态
pTimeBias: 时间偏置
pPercentDeadband: 更新变化范围
21. HRESULT SetGroupState(HANDLE hConnect, HANDLE hGroup, DWORD *pUpateRate, BOOL bActive, LONG *pTimeBias, float *pPercentDeadband)
设置组的属性
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
pUpdateRate: 更新速率
bActive: 活动状态
pTimeBias: 时间偏置
pPercentDeadband: 更新变化范围
22. HRESULT RefreshOPCGroup(HANDLE hConnect, HANDLE hGroup, OPCDATASOURCE dwSource = OPC_DS_CACHE)
刷新组内数据项的值
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
dwSource: 数据刷新方式
23. HRESULT SetGroupName(HANDLE hConnect, HANDLE hGroup, LPCWSTR szName)
更改组的名称
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
szName: 组的名称
====================================================
24. HRESULT AddOPCItem(HANDLE hConnect, HANDLE hGroup, LPCWSTR szName, LPCWSTR szAccessPath, VARTYPE *pCanonicalType, HANDLE hClient, HANDLE *phItem)
添加数据项到服务器
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
szName: 要添加数据项的ID
szAccessPath: 访问路径
pCanonicalType: 订阅的数据类型,同时返回规范的数据类型
hClient: Client传递的句柄,DataCallback回调时会回传此句柄
phItem: 返回数据项的句柄
25. HRESULT RemoveOPCItem(HANDLE hConnect, HANDLE hGroup, HANDLE hItem)
删除指定的数据项
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
hItem: 对应数据项的句柄
26. HRESULT ReadOPCItem(HANDLE hConnect, HANDLE hGroup, HANDLE hItem, VARIANT *pValue, FILETIME *pTimeStamp, DWORD *pQuality, OPCDATASOURCE dwSource = OPC_DS_CACHE, BOOL DoAsync = FALSE)
读取数据项的值
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
hItem: 对应数据项的句柄
pValue: 返回值
pTimeStamp: 返回时间
pQuality: 返回品质
dwSource: 读取的源
DoAsync: 是否使用异步方式
27. HRESULT WriteOPCItem(HANDLE hConnect, HANDLE hGroup, HANDLE hItem, VARIANT *pVal, BOOL DoAsync = FALSE)
写数据项的值
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
hItem: 对应数据项的句柄
pVar: 要写的值
DoAsync: 是否采用异步方式
28. HRESULT ChangeOPCItemState(HANDLE hConnect, HANDLE hGroup, HANDLE hItem, BOOL bActive)
改变数据项的活动状态
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
hItem: 对应数据项的句柄
bActive: 数据项的活动状态
29. HRESULT GetOPCItemInfo(HANDLE hConnect, HANDLE hGroup, LPCWSTR szName, VARTYPE *pType, DWORD *pAccessRights)
获取数据项的信息
hConnect: 对应服务器的句柄
hGroup: 对应组的句柄
szName: 要获取信息的数据项的ID
pType: 返回数据项的规范类型
pAccessRights: 返回数据项的访问权限
30.HRESULT GetErrorString(HANDLE hConnect, HRESULT ErrorCode, WCHAR *pBuf, int nBufSize)
返回错误码对应的错误信息
hConnect: 对应的服务器句柄
ErrorCode: 错误代码
pBuf: 存储错误信息的缓冲区
nBufSize: 缓冲区的大小
大家好:
OPCClient不用有偿购买,MatrikonOPC开发的OPCExplorer是免费的,而且我们已在欧美中东世界各地销售很多年,功能强大而且稳定。您可以到下面这个网址看看:http://www.matrikonopc.com/products/opc-desktop-tools/opc-explorer.aspx; 点击“download now”下载一个自己试试就知道了。如果有问题的话,欢迎联系我:jane.zhang@matrikonopc.com. 祝好!
JaneMatrikonOPC