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 _OA\3.**\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# 二次开发手册

 

更多精彩,码上关注

 

 

posted @ 2020-06-12 13:17  莱立佰  阅读(1800)  评论(1编辑  收藏  举报