• WinCC OA-C#-开发一个EricManager


    Hello,小伙伴们大家好,最近在忙着制作新的博客及web,更新稍微慢了点,不过不要担心,答应大家的二次开发课程一定会来的,请大家关注我们哦

    今天给大家说一下WinCC OA 使用C#开发一个manager的方法,同时给大家详解一下官方的demo

    开发环境搭建

    安装 visual studio 2019 社区版,ps 社区版是免费的哦

    image

    勾选 .NET 及C++ 两个模块 进行安装

    image

    创建manager

    根据自己系统运行相应的命令行工具,笔者的系统环境为Win10 64 bit

    (注意:安装的2019 时候会连带VS2017 一起安装)

    1)新增环境变量API_ROOT 指向WinCC OA安装目录下的api文件夹

    image

    2)使用管理员身份运行上图命令行工具

    image

    3)切换目录到WinCC _OA3.**api文件夹

    image

    4) 先使用checkAPIenv测试下开发环境  我这边测试 环境均为good

    image

    5) 使用命令newWCCOACSharpManager.cmd新建ericTest manager

    image

    6) Now,在WinCC OA的api文件夹下 WinCC  OA 帮我们创建了一个ericTest 项目

    image

    7) 使用 VS 2019 打开ericTest 项目

    image

    简单给大家分析下 Program.cs 代码

    // 改程序作用是监听 DPE1的值,当DPE1的值改变的时候 设置 DPE2
        class Program
        {
            static void Main(string[] args)
            {
                // 创建Manager
              OaManager myManager = OaSdk.CreateManager();
                // 初始化Manager 配置
                myManager.Init(ManagerSettings.DefaultApiSettings, args);
                // 开启Manager  同时连接OA 项目
                myManager.Start();
                //配置dpNameSet关联ExampleDP_Arg2. 配置dpNameConnect关联ExampleDP_Arg1.
                // Read from config File Section myCsTest. 
                // ReadString(section, key, defaultval)
              OaConfigurationFile file = new OaConfigurationFile();
              string dpNameSet = file.ReadString("myCsTest", "dpNameSet", "ExampleDP_Arg2.");
              string dpNameConnect = file.ReadString("myCsTest", "dpNameConnect", "ExampleDP_Arg1.");
                // Get Access to the ProcessValues
              var valueAccess = myManager.ProcessValues;
                // 创建valueAccess的订阅对象
                var mySubscription = valueAccess.CreateDpValueSubscription();
                // 将dpNameConnect 添加到订阅对象中
                mySubscription.AddDp(dpNameConnect);
                // 添加订阅触发的代理方法
                mySubscription.SingleValueChanged += (vcsender, vce) =>
                {
                    // vce.Value can be null in error case 
                    if(vce.Value == null)
                      return;               
                    Console.WriteLine("Received value: " + vce.Value.DpValue.ToString() + " for DPE: " + vce.Value.DpName.ToString());
                    //将值设置到dpNameSet
                    valueAccess.SetDpValue(dpNameSet, vce.Value.DpValue.ToDouble());
                    Console.WriteLine("Set value: " + vce.Value.DpValue.ToString() + " also on DPE: "+dpNameSet);
                };
                // If FireChangedEventForAnswer is set to true, the ValueChanged Event is alsed fired for the first answer
              mySubscription.FireChangedEventForAnswer = true;
                // Start the subscription and as an additional option wait for the first anwer as result value
              mySubscription.StartAsync();
    
        }
    }</span></pre></div>
    

    7) 编译程序,将release后的程序copy 到bin文件夹

    image

    8)新建WCCOAericTest manager 设置手动启动

    image

    9) 启动Manager 测试ExampleDP_Arg2. /ExampleDP_Arg1.

    image

    OK  很成功 更多函数 请参阅 WinCC OA C# 二次开发手册

    更多精彩,码上关注

     

     

  • 相关阅读:
    Spring--IOC
    神奇的小东西
    视图层发起请求的方式
    jdbc “贾琏欲执事”
    线程的五种状态
    java的<<左移,>>右移,>>>无符号右移
    直接插入排序(单链表排序)
    单链表相关知识以及指针引用相关知识
    将一个数n分解为若干个从小到大排列的质数的积 ,求质数因子
    最小二乘法
  • 原文地址:https://www.cnblogs.com/indus-eric/p/13098815.html
Copyright © 2020-2023  润新知