zoukankan      html  css  js  c++  java
  • VisionMaster4.0.0二次开发教程(每日更新博客)

    author:ld_dragon

    date:2021.07

    wx:dsflsj745200

    环境配置

    1 项目属性设置

    1.创建winform项目后 点开项目菜单中的属性配置 
    	选择框架为4.6.1的
        生成页面 去除首选32位勾选
        修改输出路径为 VisionMaster下的Application文件夹
    

    2 环境变量绑定

    1.在App.config下粘贴代码 以绑定环境变量
    
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <!--启动服务形式(0代表默认系统服务, 1代表exe方式启动)-->
        <add key="StartServerByExe" value="0" />
        <!--远程Server地址,用于连接不同主机中的server-->
        <!--<add key="ServerSetting" value="127.0.0.1:5556" />-->
        <add key="ClientSettingsProvider.ServiceUri" value="" />
      </appSettings>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
      </startup>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <probing privatePath="myLibs;myLibsNewtonsoft.Json;3rdLib;3rdLibSystem;3rdLibMsgPack;3rdLibLog4Net;3rdLibICSharpCode;3rdLibOpenCv;GateWay" />
          <dependentAssembly>
            <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <system.web>
        <membership defaultProvider="ClientAuthenticationMembershipProvider">
          <providers>
            <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
          </providers>
        </membership>
        <roleManager defaultProvider="ClientRoleProvider" enabled="true">
          <providers>
            <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
          </providers>
        </roleManager>
      </system.web>
    </configuration>
    

    3 控件导入

    1.首先打开vs工具箱>右键点击所有windows>选择项
    2.点击浏览>VisionMaster4.0.0/Application/myLibs> VMControls.Winform.Release.dll>确定
    

    4 动态库引用

    1.添加VM SDK相关动态库
        右键引用>添加引用>浏览>Application>myLibs 添加七个文件
    2.防止VM动态库混乱 修改七个动态库文件的 复制本地 属性为False
    
    动态库七个文件:
    	Apps.ColorFun.DLL
        VM.Core.dll
        VM.PlatformSDKCS.dll
        VMControls.Interface.dll
        VMControls.RenderInterface.dll
        VMControls.Winform.Release.dll
        VMFBase.dll
    

    方案加载执行结果显示

    1.添加2个button按钮为 加载方案 执行方案
    2.添加VMRenderControl控件
    3.添加ListBox控件显示执行结果信息
    

    1 加载方案Code

    // 加载方案buttonCode
    // 引用程序集
    using VM.Core;
    using VM.PlateformSDKCS;
    

    重点:对于方案的所有操作都集中于 VmSolution这个基类中!

     private void button2_Click(object sender, EventArgs e)
            {
                string message;
                VmSolution.Import(@"C:UserswangpDesktopcircleFind.sol",""); // 导入方案 属性path为路径 password为密码
                message = "Load Sol Success!";
                listBox1.Items.Add(message); // 添加消息到listbox中
                listBox1.TopIndex = listBox1.Items.Count - 1; // 将消息显示最前面一行
            }
    

    2 控制方案执行Code

     private void button1_Click(object sender, EventArgs e)
            {
                // 想要执行方案中的流程,需要定义一个流程对象
                VmProcedure process = (VmProcedure)VmSolution.Instance["流程1"];
                // 定义完成后需要执行一次
                Task.Run(()=> {
                    process.Run(); // process 执行一次
                });
            }
    
    1 流程执行完成后 就需要显示圆查找模块的结果
    2 引用添加 VisionMaster/Application/Module(sp)/x64/location/IMVSCircleFindModu
    
    private void button1_Click(object sender, EventArgs e)
            {
                // 使用模块时候 需要定义对象
                IMVSCircleFindModuCs.IMVSCircleFindModuTool circleFind = (IMVSCircleFindModuCs.IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
                // 显示
                vmRenderControl1.ModuleSource = circleFind;
    
                // 想要执行方案中的流程,需要定义一个流程对象
                VmProcedure process = (VmProcedure)VmSolution.Instance["流程1"];
                // 定义完成后需要执行一次
                Task.Run(()=> {
                    process.Run(); // process 执行一次
                });
                // 流程执行完成后 就需要显示圆查找模块的结果
            }
    

    3 运行结果获取

    vm二次开发中获取错误码定位可能出现的问题

    private void button2_Click(object sender, EventArgs e)
    {
    	string message;
    	try
    	{
    		VmSolution.Import(@"C:UserswangpDesktopcircleFind.sol", ""); // 导入方案 属性path为路径 password为密码
            message = "Load Sol Success!";
            listBox1.Items.Add(message); // 添加消息到listbox中
            listBox1.TopIndex = listBox1.Items.Count - 1; // 将消息显示最前面一行
    	}
    	catch(VmException ex) // 所有错误集中VmException
    	{
    		message = "load Sol Faile" + Convert.ToString(ex.errorCode,16);  // 将ex.errorCode 改为16进制显示
    		listBox1.Items.Add(message); // 添加消息到listbox中
    		listBox1.TopIndex = listBox1.Items.Count - 1; // 将消息显示最前面一行
    	}   
    }
    
     private void button3_Click(object sender, EventArgs e)
            {
                // 使用模块时候 需要定义对象
                IMVSCircleFindModuCs.IMVSCircleFindModuTool circleFind = (IMVSCircleFindModuCs.IMVSCircleFindModuTool)VmSolution.Instance["流程1.圆查找1"];
                if (circleFind == null) {
                    return; // 如果圆查找为空 那么返回
                }
                textBox1.Text = circleFind.ModuResult.OutputCircle.CenterPoint.X.ToString("0.00");
                textBox2.Text = circleFind.ModuResult.OutputCircle.CenterPoint.Y.ToString("0.00");
                textBox3.Text = circleFind.ModuResult.OutputCircle.Radius.ToString("0.00");
            }
    
    趁自己还没死 多折腾折腾
  • 相关阅读:
    转换方法
    数组去重
    js常见兼容
    封装cookie
    常用函数封装
    手绘 代码
    Python变量和数据类型,类型转换
    语句块的概念及注释符的使用
    ipython和pip,模块安装方法
    第一个python程序
  • 原文地址:https://www.cnblogs.com/lddragon/p/15020690.html
Copyright © 2011-2022 走看看