VP引导定位软件-平移九点标定 一 确定通讯协议 Calib, X, Y, 第几个点 Calib, 140 , 10 , 1 Calib, 140 , - 10 , 2 Calib, 140 , - 30 , 3 Calib, 160 , 10 , 4 Calib, 160 , - 10 , 5 Calib, 160 , - 30 , 6 Calib, 180 , 10 , 7 Calib, 180 , - 10 , 8 Calib, 180 , - 30 , 9 二 定义全局变量 /// <summary> /// 软件模式 /// Location :定位模式 /// Calib :九点标定 /// Rotate :旋转标定 /// </summary> public static string SoftModel= "Location" ; /// <summary> /// 轴的物理位置X /// </summary> public static double Real_X= 0 ; /// <summary> /// 轴的物理位置Y /// </summary> public static double Real_Y= 0 ; 三 通讯解析上位机数据 // 解析数据,设置软件模式 GlobalParameters. SoftModel= msg. Split ( ',' ) [ 0 ] ; if ( GlobalParameters. SoftModel== "Calib" ) { // 如果是第一个点,则清空之前的数据 if ( Convert. ToInt32 ( msg. Split ( ',' ) [ 3 ] ) == 1 ) { // AlgorithmService.Instance.ClearNPCali(); } GlobalParameters. Real_X= Convert. ToDouble ( msg. Split ( ',' ) [ 2 ] ) ; GlobalParameters. Real_Y= Convert. ToDouble ( msg. Split ( ',' ) [ 3 ] ) ; } // 触发拍照(在上位机或者PLC发送这个通讯信息的时候,我们进行解析以后,进行拍照) CameraService. Instance. SnapImage ( ) ; 四 算法实现
/// <summary> /// 当前toolblock /// </summary> private CogToolBlock mToolBlock; private CogToolBlock DetectCircle_ToolBlock; public VpAlgo ( ) { mToolBlock= CogSerializer. LoadObjectFromFile ( @".\Algo\myToolBlock.vpp" ) as CogToolBlock ; DetectCircle_ToolBlock= CogSerializer. LoadObjectFromFile ( @".\Algo\九点标定圆定位TB.vpp" ) as CogToolBlock ; } public void DetectCircle ( ICogImage img, out double ImageY, out double ImageX) { // 输入图像 DetectCircle_ToolBlock. Inputs[ "img" ] . Value= img; // 执行 DetectCircle_ToolBlock. Run ( ) ; // 获取圆心X、Y ImageY= ( double ) mToolBlock. Outputs[ "X" ] . Value; ImageX= ( double ) mToolBlock. Outputs[ "Y" ] . Value; } 五 流程实现