当前位置: 首页 > news >正文

OPC客户端设计

1. 开发环境配置

  要安装和开发OPC程序,安装必要的OPC代理/存根(Proxy/Stub)DLL是必需的,这些文件提供了OPC接口的数据结构定义,可以使OPC客户端程序和服务器程序之间进行有效的通信。

  所有文件必须安装在客户端机器和服务器端机器上。要将这些文件放置在system32系统文件夹下。

需要文件:

  这些文件包括:

  opc_aeps.dll    //警报与时间服务器代理/存根

  opccomn_ps.dll   //公用的代理/存根(主要服务器都需要)

  opchda_ps.dll   //历史数据存取代理/存根

  aprxdist.exe     //运行环境需要

  opcenum.exe      //服务器类别搜索组建程序(都需要),如果没有,就无法在注册表中进行注册

安装方法:

  将上述文件全部复制到windows\system32目录下。

  安装代理/存根:

    REGSVR32 opcproxy.dll

    REGSVR32 opccomn_ps.dll

    REGSVR32 opc_aeps.dll

    REGSVR32 opchda_ps.dll

  安装opcenum.exe

    opcenum /regserver

 

//CComPtr: Smart pointer

CComPtr<IOPCServerList> pOPCServerList;

 

//Creates a single uninitialized object of the class associated with a specified CLSID.
hr = pOPCServerList.CoCreateInstance( CLSID_OpcServerList );

 

//A specified class is not registered in the registration database. Also can indicate that the type of server you requested in the CLSCTX enumeration is not registered or the values for the server types in the registry are corrupt.

//to register, you need to run opcenum.exe

if(REGDB_E_CLASSNOTREG == hr)
  return FALSE;

if( FAILED( hr ) )
  return FALSE;

 

The return value of function CoCreateInstance:
 
ValueDescription

S_OK

An instance of the specified object class was successfully created.

REGDB_E_CLASSNOTREG

A specified class is not registered in the registration database. Also can indicate that the type of server you requested in the CLSCTX enumeration is not registered or the values for the server types in the registry are corrupt.

CLASS_E_NOAGGREGATION

This class cannot be created as part of an aggregate.

相关文章:

  • 委托、Lambda表达式、事件系列07,使用EventHandler委托
  • 推荐一款 chrome SSH 插件 - Secure Shell
  • AngularJS中有关Directive的汇总
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • 复合格式化 AppendFormat 字符
  • BZOJ 2337 XOR和路径(高斯消元)
  • Adas术语简称
  • extern c 谈
  • 转载 一堂价值39万元的课,把她看完,你一定会有所获!
  • 关于centos联网的问题
  • 第二章 Java内存区域与内存溢出异常
  • java 用进程调用外部命令并获取返回结果
  • 购物狂欢节的背后,是谁在让你在吃土?
  • Hadoop之HDFS中NameNode的工作机制
  • 目录操作常用命令
  • 10个最佳ES6特性 ES7与ES8的特性
  • AngularJS指令开发(1)——参数详解
  • fetch 从初识到应用
  • 包装类对象
  • 开源地图数据可视化库——mapnik
  • 前端之React实战:创建跨平台的项目架构
  • 新书推荐|Windows黑客编程技术详解
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 阿里云API、SDK和CLI应用实践方案
  • # C++之functional库用法整理
  • ()、[]、{}、(())、[[]]命令替换
  • (2022 CVPR) Unbiased Teacher v2
  • (5)STL算法之复制
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (规划)24届春招和25届暑假实习路线准备规划
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)JAVA中的堆栈
  • ***检测工具之RKHunter AIDE
  • .apk文件,IIS不支持下载解决
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .form文件_一篇文章学会文件上传
  • .libPaths()设置包加载目录
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET CORE Aws S3 使用
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 分布式技术比较
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net 提取注释生成API文档 帮助文档
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net的C#语言取月份数值对应的MonthName值
  • /var/spool/postfix/maildrop 下有大量文件
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ 数据结构 - C++] AVL树原理及实现
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C puzzle book] types