VisionPro中ToolBlock工具允許用戶添加系統默認(bool、int、double等)數據類型以及VisionPro自定義(CogImage8Grey、ICogImage等)數據類型,常見數據類型的添加入下圖所示。
但是,有時需要在ToolBlock輸出端添加List等相對復雜的數據類型。例如,返回當前匹配工具獲取到的多個產品的XY坐標以及角度。首先,每個變量需要存儲X、Y、A三個維度的信息。其次,每張圖像中可能含有多個產品且產品個數不確定。具體實現方式如下:
添加List的程序集以及命名空間
創建List 對象
在初始化函數中創建CogToolBlockTerminal 對象與創建的List對象進行綁定,用CogToolBlockTerminal類的Add方法添加到ToolBlock的輸出終端。
在GroupRun中對List實例對象進行數據的修改
using System; using System.Collections; using System.Drawing; using System.IO; using System.Windows.Forms; using Cognex.VisionPro; using Cognex.VisionPro.ToolBlock; using System.Collections.Generic; public class CogToolBlockAdvancedScript : CogToolBlockAdvancedScriptBase { private Cognex.VisionPro.ToolBlock.CogToolBlock mToolBlock; List<Tuple<double,double,double>> MatchedPosition= null; public override bool GroupRun(ref string message, ref CogToolResultConstants result) { foreach(ICogTool tool in mToolBlock.Tools) mToolBlock.RunTool(tool, ref message, ref result); //此處添加對MatchedPosition的訪問與修改 return false; } public override void Initialize(Cognex.VisionPro.ToolGroup.CogToolGroup host) { base.Initialize(host); this.mToolBlock = ((Cognex.VisionPro.ToolBlock.CogToolBlock)(host)); if(MatchedPosition== null) { MatchedPosition = new List<Tuple<double,double,double>>(); } if(!mToolBlock.Outputs.Contains("MatchedPosition")) { CogToolBlockTerminal m = new CogToolBlockTerminal("MatchedPosition", MatchedPosition.GetType()); mToolBlock.Outputs.Add(m); } } }
轉自:
VisionPro之ToolBlock輸出添加復雜輸出類型_dongxin_ming的博客-CSDN博客