制作opc服务器,力控服务器怎样做为OPC服务器,供其他OPC客户端程序访问

制作opc服务器,力控服务器怎样做为OPC服务器,供其他OPC客户端程序访问publicvoidListAll(Guidcatid,outOpcServers[]serverslist){serverslist=null;Dispose();Guidguid=newGuid(13486D51-4821-11D2-A494-3CB306C10000);Typetypeoflist=Type.GetTypeFromCLSID(guid);OPCL…

大家好,又见面了,我是你们的朋友全栈君。

public void ListAll(Guid catid, out OpcServers[] serverslist)

{

serverslist = null;

Dispose();

Guid guid = new Guid(13486D51-4821-11D2-A494-3CB306C10000);

Type typeoflist = Type.GetTypeFromCLSID(guid);

OPCListObj = Activator.CreateInstance(typeoflist);

ifList = (IOPCServerList)OPCListObj;

if (ifList == null)

Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT);

ifList.EnumClassesOfCategories(1, ref catid, 0, ref catid, out EnumObj);

if (EnumObj == null)

Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT);

ifEnum = (IEnumGUID)EnumObj;

if (ifEnum == null)

Marshal.ThrowExceptionForHR(HRESULTS.E_ABORT);

int maxcount = 300;

IntPtr ptrGuid = Marshal.AllocCoTaskMem(maxcount * 16);

int count = 0;

ifEnum.Next(maxcount, ptrGuid, out count);

if (count 1)

{ Marshal.FreeCoTaskMem(ptrGuid); return; }

serverslist = new OpcServers[count];

byte[] guidbin = new byte[16];

int runGuid = (int)ptrGuid;

for (int i = 0; i count; i++)

{

serverslist[i] = new OpcServers();

Marshal.Copy((IntPtr)runGuid, guidbin, 0, 16);

serverslist[i].ClsID = new Guid(guidbin);

ifList.GetClassDetails(ref serverslist[i].ClsID,

out serverslist[i].ProgID, out serverslist[i].ServerName);

runGuid += 16;

}

Marshal.FreeCoTaskMem(ptrGuid);

Dispose();

}

取消

评论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151317.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Allure报告开发自定义插件

    Allure报告开发自定义插件allure官网文档 https://docs.qameta.io/allure/alluregithub https://github.com/allure-framework/allure2当报告无法满足当前项目的需求,需要自定义内容来展示在报告中,即需要开发自己的自定义插件最终结果图:demo的结果是新增了一个MyTab目录栏,(demo未做有意义数据和css样式)…

    2022年7月26日
    22
  • javaweb教务管理系统源码_java做一个学生管理系统

    javaweb教务管理系统源码_java做一个学生管理系统刚学完javaweb,做个项目练手与巩固所学的知识,同时分享自己写的这个教务管理系统,同样也是为自己记下笔记。为以后复习有帮助。该系统没有用到框架的知识,一共花了7天写出来。所以非常适合javaweb初学者教务管理系统javaweb项目运行环境:window系统,ApacheTomcatv7.0.84、JDK1.8开发环境:J2EEeclipse、navicatformysql运用的技术…

    2022年10月16日
    4
  • javascript操作元素的css样式

    javascript操作元素的css样式

    2021年12月6日
    45
  • 防暴力激活成功教程密码的脚本「建议收藏」

    防暴力激活成功教程密码的脚本「建议收藏」前几天,突然发现日志文件/var/log/auth.log(ubuntu)或者/var/log/secure(centos),存在好多尝试激活成功教程用户密码的现象,如下脚本通过获取到日志文件的IP地址,加入到/etc/hosts.deny文件中,拒绝该IP地址的尝试登陆服务器。#1.定义变量,获取日志中刷选的IP地址DIR_file=/var/log/auth.logIP_list=`awk’/…

    2022年8月22日
    4
  • Oracle去重查询实例

    Oracle去重查询实例Oracle去重查询实例今天工作中遇到了一个关于去重的查询,琢磨了半天,终于想明白了,这里简单记录一下。distinct函数说到去重,可能第一反应就是distinct函数,但其实distinct只是针对单一字段的去重有效。例如我想查库中所有的不重复的空号手机数量,如下即可selectcount(distinctn.phonenumber)fromIVR_NO_EXISTn这样查出来一共有295136个空号之后我想查出每天识别出的不重复的空号有多少,开始没想太多,直接写了sel

    2025年6月10日
    4
  • padstart方法_PADS 2.4打开PCB显示已停止工作

    padstart方法_PADS 2.4打开PCB显示已停止工作之前两天搞得头皮发麻,有个需求是写个版本比较的方法,比如’10.5.4’版本是否大于’9.52.1’版本。正常的思路是使用split去截取几段,然后做递归比较。如下://版本对比constsort=(item1,item2)=>{if(item1[0]>item2[0]){returntrue}elseif(item1…

    2022年9月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号