private void rake(HObject hoImage, out HObject hoRegions, HTuple hvElements, HTuple hvDetectHeight,
                      HTuple hvDetectWidth, HTuple hvSigma, HTuple hvThreshold, HTuple hvTransition,
                      HTuple hvSelect, HTuple hvRow1, HTuple hvColumn1, HTuple hvRow2, HTuple hvColumn2,
                      out HTuple hvBeginRow, out HTuple hvBeginCol)
    {
        HDevProcedure     rakeProc = new HDevProcedure("rake");
        HDevProcedureCall rakeProcCall;

        rakeProcCall = new HDevProcedureCall(rakeProc);
        rakeProcCall.SetInputIconicParamObject("Image", hoImage);
        rakeProcCall.SetInputCtrlParamTuple("Elements", hvElements);
        rakeProcCall.SetInputCtrlParamTuple("DetectHeight", hvDetectHeight);
        rakeProcCall.SetInputCtrlParamTuple("DetectWidth", hvDetectWidth);
        rakeProcCall.SetInputCtrlParamTuple("Sigma", hvSigma);
        rakeProcCall.SetInputCtrlParamTuple("Threshold", hvThreshold);
        rakeProcCall.SetInputCtrlParamTuple("Transition", hvTransition);
        rakeProcCall.SetInputCtrlParamTuple("Select", hvSelect);
        rakeProcCall.SetInputCtrlParamTuple("Row1", hvRow1);
        rakeProcCall.SetInputCtrlParamTuple("Column1", hvColumn1);
        rakeProcCall.SetInputCtrlParamTuple("Row2", hvRow2);
        rakeProcCall.SetInputCtrlParamTuple("Column2", hvColumn2);
        rakeProcCall.Execute();
        // get output parameters from procedure call

        hoRegions  = rakeProcCall.GetOutputIconicParamXld("Regions");
        hvBeginRow = rakeProcCall.GetOutputCtrlParamTuple("ResultRow");
        hvBeginCol = rakeProcCall.GetOutputCtrlParamTuple("ResultColumn");

        rakeProcCall.Dispose();
        rakeProc.Dispose();
    }
Beispiel #2
0
        /// <summary>
        /// Initialize halcon procedures
        /// </summary>
        public static void InitializeProcedures()
        {
            hDevEngine.SetEngineAttribute("execute_procedures_jit_compiled", "true");
            hDevEngine.SetProcedurePath(Directory.GetCurrentDirectory());

            HDevProcedure hDevProcedureCheckColor = new HDevProcedure("CheckColor");

            hDevprocedureCallCheckColor = new HDevProcedureCall(hDevProcedureCheckColor);

            HDevProcedure hDevProcedureCreateLogos = new HDevProcedure("CreateLogos");

            hDevprocedureCallCreateLogos = new HDevProcedureCall(hDevProcedureCreateLogos);

            HDevProcedure hDevProcedureCheckLogos = new HDevProcedure("CheckLogos");

            hDevprocedureCallCheckLogos = new HDevProcedureCall(hDevProcedureCheckLogos);

            HDevProcedure hDevProcedureCheckText = new HDevProcedure("CheckText");

            hDevProcedureCallCheckText = new HDevProcedureCall(hDevProcedureCheckText);

            HDevProcedure hDevProcedureCheckShapes = new HDevProcedure("CheckShapes");

            hDevProcedureCallCheckShapes = new HDevProcedureCall(hDevProcedureCheckShapes);
        }
        void getOrigin(HObject Img, HObject Region_Binary, HObject Region_First, HObject Region_Second, HTuple HomMat2D_TransRegion)
        {
            HTuple RowProj = 0;
            HTuple ColProj = 0;
            HTuple Angle_  = 0;

            //Input
            HDevProcedure     getOrigin     = new HDevProcedure("create_origin_from_region");
            HDevProcedureCall getOriginCall = new HDevProcedureCall(getOrigin);

            getOriginCall.SetInputIconicParamObject("Image", Img);
            getOriginCall.SetInputIconicParamObject("Region_Binary", Region_Binary);
            getOriginCall.SetInputIconicParamObject("Region_First", Region_First);
            getOriginCall.SetInputIconicParamObject("Region_Second", Region_Second);
            getOriginCall.SetInputCtrlParamTuple("HomMat2D_TransRegion", HomMat2D_TransRegion);
            getOriginCall.SetInputCtrlParamTuple("showOrigin", "true");

            getOriginCall.Execute();

            //Output
            RowProj = getOriginCall.GetOutputCtrlParamTuple("RowProj");
            ColProj = getOriginCall.GetOutputCtrlParamTuple("ColProj");
            Angle_  = getOriginCall.GetOutputCtrlParamTuple("Angle");
            window.SetColor("green");
            HOperatorSet.GenCrossContourXld(out HObject cross, RowProj, ColProj, 100000, Angle_);
            cross.DispObj(window);
        }
Beispiel #4
0
        //---------------------//
        #region Calib Handeye 11 point
        public static result handeye11point(HTuple lst_row, HTuple lst_col, HTuple lst_the, HTuple lst_robot_x, HTuple lst_robot_y)
        {
            //HDevEngine _procderduce = new HDevEngine();
            //string path_Procerduce = Application.StartupPath + "/HalconProcerduce";
            //_procderduce.SetProcedurePath(path_Procerduce);
            result rs = new result();

            try
            {
                HTuple HomMat_ImgtoWorld = new HTuple();
                HTuple HomMat_WorldtoImg = new HTuple();
                /// Set procedure for handeye program
                HDevProcedure     procedure_handeye      = new HDevProcedure("handeye_stationary_camera");
                HDevProcedureCall procedure_handeye_call = new HDevProcedureCall(procedure_handeye);
                procedure_handeye_call.SetInputCtrlParamTuple("listRow_Img", lst_row);
                procedure_handeye_call.SetInputCtrlParamTuple("listCol_Img", lst_col);
                procedure_handeye_call.SetInputCtrlParamTuple("listAgl_Img", lst_the);
                procedure_handeye_call.SetInputCtrlParamTuple("listX_Robot", lst_robot_x);
                procedure_handeye_call.SetInputCtrlParamTuple("listY_Robot", lst_robot_y);
                procedure_handeye_call.Execute();
                /// Process procedure and read result from out data
                HomMat_ImgtoWorld    = procedure_handeye_call.GetOutputCtrlParamTuple("HomMat_ImgtoWorld");
                HomMat_WorldtoImg    = procedure_handeye_call.GetOutputCtrlParamTuple("HomMat_WorldtoImg");
                rs.TCP_to_Tool       = procedure_handeye_call.GetOutputCtrlParamTuple("TCP_to_Tool");
                rs.Tool_to_TCP       = procedure_handeye_call.GetOutputCtrlParamTuple("Tool_to_TCP");
                rs.Agl_Master        = procedure_handeye_call.GetOutputCtrlParamTuple("thetaGet");
                rs.HomMat_ImgtoWorld = HomMat_ImgtoWorld;
                rs.HomMat_WorldtoImg = HomMat_WorldtoImg;
            }
            catch (Exception ex)
            {
            }
            return(rs);
        }
Beispiel #5
0
        public static HTuple GetBitFromPLC(HTuple Dxxx, HTuple GetIndexBit, HTuple socket)
        {
            HTuple data = -1;

            try
            {
                HDevProcedure     getDataPlc     = new HDevProcedure("Melsoft_3E_Revc");
                HDevProcedureCall getDataPlcCall = new HDevProcedureCall(getDataPlc);
                HDevProcedure     GetBitPlc      = new HDevProcedure("Get_Bit_Of_Word");
                HDevProcedureCall GetBitPlcCall  = new HDevProcedureCall(GetBitPlc);
                //_getDataPLC.SetInputCtrlParamTuple(["String","Destination","Lenght","Socket"],
                getDataPlcCall.SetInputCtrlParamTuple("Data_Type", "Word");
                getDataPlcCall.SetInputCtrlParamTuple("Destination", Dxxx);
                getDataPlcCall.SetInputCtrlParamTuple("Lenght", 1);
                getDataPlcCall.SetInputCtrlParamTuple("Socket", socket);
                getDataPlcCall.Execute();
                data = getDataPlcCall.GetOutputCtrlParamTuple("Data_Tuple");
                GetBitPlcCall.SetInputCtrlParamTuple("Data", data);
                GetBitPlcCall.SetInputCtrlParamTuple("Order_Tuple", GetIndexBit);
                GetBitPlcCall.Execute();
                data = GetBitPlcCall.GetOutputCtrlParamTuple("Out_Tuple");
            }
            catch (Exception ex)
            {
                data = "Error";
            }
            return(data);
        }
        private void LoadBtn_Click(object sender, System.EventArgs e)
        {
            // load program and access procedure calls
            try
            {
                HDevProgram Program = new HDevProgram(ProgramPathString);

                HDevProcedure InitAcqProc          = new HDevProcedure(Program, "init_acquisition");
                HDevProcedure ProcessImageProc     = new HDevProcedure(Program, "detect_fin");
                HDevProcedure VisualizeDetailsProc =
                    new HDevProcedure(Program, "display_zoomed_region");

                InitAcqProcCall          = new HDevProcedureCall(InitAcqProc);
                ProcessImageProcCall     = new HDevProcedureCall(ProcessImageProc);
                VisualizeDetailsProcCall = new HDevProcedureCall(VisualizeDetailsProc);
            }
            catch (HDevEngineException Ex)
            {
                MessageBox.Show(Ex.Message, "HDevEngine Exception");
                return;
            }

            // enable InitAcq button and disable Load button
            InitAcqBtn.Enabled = true;
            LoadBtn.Enabled    = false;
        }
    private void spoke(HObject hoImage, out HObject hoRegions, HTuple hvElements, HTuple hvDetectHeight,
                       HTuple hvDetectWidth, HTuple hvSigma, HTuple hvThreshold, HTuple hvTransition,
                       HTuple hvSelect, HTuple hvRoiRows, HTuple hvRoiCols, HTuple hvDirect,
                       out HTuple hvResultRow, out HTuple hvResultColumn, out HTuple hvArcType)
    {
        HDevProcedure     rakeProc = new HDevProcedure("spoke");
        HDevProcedureCall rakeProcCall;

        rakeProcCall = new HDevProcedureCall(rakeProc);
        rakeProcCall.SetInputIconicParamObject("Image", hoImage);
        rakeProcCall.SetInputCtrlParamTuple("Elements", hvElements);
        rakeProcCall.SetInputCtrlParamTuple("DetectHeight", hvDetectHeight);
        rakeProcCall.SetInputCtrlParamTuple("DetectWidth", hvDetectWidth);
        rakeProcCall.SetInputCtrlParamTuple("Sigma", hvSigma);
        rakeProcCall.SetInputCtrlParamTuple("Threshold", hvThreshold);
        rakeProcCall.SetInputCtrlParamTuple("Transition", hvTransition);
        rakeProcCall.SetInputCtrlParamTuple("Select", hvSelect);
        rakeProcCall.SetInputCtrlParamTuple("ROIRows", hvRoiRows);
        rakeProcCall.SetInputCtrlParamTuple("ROICols", hvRoiCols);
        rakeProcCall.SetInputCtrlParamTuple("Direct", hvDirect);
        rakeProcCall.Execute();
        // get output parameters from procedure call

        hoRegions      = rakeProcCall.GetOutputIconicParamRegion("Regions");
        hvResultRow    = rakeProcCall.GetOutputCtrlParamTuple("ResultRow");
        hvResultColumn = rakeProcCall.GetOutputCtrlParamTuple("ResultColumn");
        hvArcType      = rakeProcCall.GetOutputCtrlParamTuple("ArcType");

        rakeProcCall.Dispose();
        rakeProc.Dispose();
    }
    private void pts_to_best_line(out HObject hoLine, HTuple hvBeginRow,
                                  HTuple hvBeginCol,
                                  int activeNum,
                                  out HTuple hvResultBeginRow,
                                  out HTuple hvResultBeginCol,
                                  out HTuple hvResultEndRow,
                                  out HTuple hvResultEndCol)
    {
        HDevProcedure     ptsProc = new HDevProcedure("pts_to_best_line");
        HDevProcedureCall ptsProcCall;

        ptsProcCall = new HDevProcedureCall(ptsProc);
        ptsProcCall.SetInputCtrlParamTuple("Rows", hvBeginRow);
        ptsProcCall.SetInputCtrlParamTuple("Cols", hvBeginCol);
        ptsProcCall.SetInputCtrlParamTuple("ActiveNum", activeNum);
        ptsProcCall.Execute();
        // get output parameters from procedure call

        hoLine           = ptsProcCall.GetOutputIconicParamObject("Line");
        hvResultBeginRow = ptsProcCall.GetOutputCtrlParamTuple("Row1");
        hvResultBeginCol = ptsProcCall.GetOutputCtrlParamTuple("Col1");
        hvResultEndRow   = ptsProcCall.GetOutputCtrlParamTuple("Row2");
        hvResultEndCol   = ptsProcCall.GetOutputCtrlParamTuple("Col2");

        ptsProcCall.Dispose();
        ptsProc.Dispose();
    }
Beispiel #9
0
        //---------------------//
        #region Create origin from region
        public static result create_origin(HObject Img, HObject Region_Binary, HObject Region_First, HObject Region_Second, HTuple HomMat2D_TransRegion)
        {
            result rs      = new result();
            HTuple RowProj = 0;
            HTuple ColProj = 0;
            HTuple Angle_  = 0;

            //Input
            HDevProcedure     getOrigin     = new HDevProcedure("create_origin_from_region");
            HDevProcedureCall getOriginCall = new HDevProcedureCall(getOrigin);

            getOriginCall.SetInputIconicParamObject("Image", Img);
            getOriginCall.SetInputIconicParamObject("Region_Binary", Region_Binary);
            getOriginCall.SetInputIconicParamObject("Region_First", Region_First);
            getOriginCall.SetInputIconicParamObject("Region_Second", Region_Second);
            getOriginCall.SetInputCtrlParamTuple("HomMat2D_TransRegion", HomMat2D_TransRegion);
            getOriginCall.SetInputCtrlParamTuple("showOrigin", "true");

            getOriginCall.Execute();

            //Output
            RowProj = getOriginCall.GetOutputCtrlParamTuple("RowProj");
            ColProj = getOriginCall.GetOutputCtrlParamTuple("ColProj");
            Angle_  = getOriginCall.GetOutputCtrlParamTuple("Angle");

            rs.RowProj = RowProj;
            rs.ColProj = ColProj;
            rs.Angle_  = Angle_;
            return(rs);
        }
Beispiel #10
0
 public static void dev_display_pills_example_dataset_preview(
     )
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_display_pills_example_dataset_preview.Value.CreateCall())
     {
         call.Execute();
     }
 }
Beispiel #11
0
 public static void Init_Acquisition(
     out HTuple AcqHandle)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _Init_Acquisition.Value.CreateCall())
     {
         call.Execute();
         AcqHandle = GetParameterHTuple(call, "AcqHandle");
     }
 }
Beispiel #12
0
 public static void dev_display_model_output_image(
     HTuple ExampleInternals)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_display_model_output_image.Value.CreateCall())
     {
         SetParameter(call, "ExampleInternals", ExampleInternals);
         call.Execute();
     }
 }
Beispiel #13
0
 public static void dev_display_screen_run_program(
     HTuple ExampleInternals)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_display_screen_run_program.Value.CreateCall())
     {
         SetParameter(call, "ExampleInternals", ExampleInternals);
         call.Execute();
     }
 }
Beispiel #14
0
 public static void dev_display_raw_image(
     HTuple WindowHandleImages)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_display_raw_image.Value.CreateCall())
     {
         SetParameter(call, "WindowHandleImages", WindowHandleImages);
         call.Execute();
     }
 }
Beispiel #15
0
 public static void dev_close_example_windows(
     HTuple ExampleInternals)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_close_example_windows.Value.CreateCall())
     {
         SetParameter(call, "ExampleInternals", ExampleInternals);
         call.Execute();
     }
 }
Beispiel #16
0
 public static void astart_classfication(
     out HTuple ClassificationClassID)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _astart_classfication.Value.CreateCall())
     {
         call.Execute();
         ClassificationClassID = GetParameterHTuple(call, "ClassificationClassID");
     }
 }
 public static void Init_Data_Code2D_Max(
     out HTuple DataCodeHandle)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _Init_Data_Code2D_Max.Value.CreateCall())
     {
         call.Execute();
         DataCodeHandle = GetParameterHTuple(call, "DataCodeHandle");
     }
 }
Beispiel #18
0
 public static void start_classification(
     HObject start,
     out HTuple ClassificationLabelIDResult)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _start_classification.Value.CreateCall())
     {
         SetParameter(call, "start", start);
         call.Execute();
         ClassificationLabelIDResult = GetParameterHTuple(call, "ClassificationLabelIDResult");
     }
 }
Beispiel #19
0
 public static void get_example_inference_images_COPY_1(
     HTuple ImageDir,
     out HTuple ImageFiles)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _get_example_inference_images_COPY_1.Value.CreateCall())
     {
         SetParameter(call, "ImageDir", ImageDir);
         call.Execute();
         ImageFiles = GetParameterHTuple(call, "ImageFiles");
     }
 }
Beispiel #20
0
 public static void dev_open_example_legend_window(
     HTuple ExampleInternals,
     HTuple WindowWidth)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_open_example_legend_window.Value.CreateCall())
     {
         SetParameter(call, "ExampleInternals", ExampleInternals);
         SetParameter(call, "WindowWidth", WindowWidth);
         call.Execute();
     }
 }
 public static void Proc_Mul_Testing_MultiThread(
     HTuple NumberInput1,
     HTuple NumberInput2,
     out HTuple NumberOutput)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _Proc_Mul_Testing_MultiThread.Value.CreateCall())
     {
         SetParameter(call, "NumberInput1", NumberInput1);
         SetParameter(call, "NumberInput2", NumberInput2);
         call.Execute();
         NumberOutput = GetParameterHTuple(call, "NumberOutput");
     }
 }
Beispiel #22
0
 public static void dev_example_init(
     HTuple ShowExampleScreens,
     HTuple UsePretrainedModel,
     out HTuple ExampleInternals)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _dev_example_init.Value.CreateCall())
     {
         SetParameter(call, "ShowExampleScreens", ShowExampleScreens);
         SetParameter(call, "UsePretrainedModel", UsePretrainedModel);
         call.Execute();
         ExampleInternals = GetParameterHTuple(call, "ExampleInternals");
     }
 }
Beispiel #23
0
        private void LoadHalconEnginee()
        {
            HOperatorSet.SetSystem("filename_encoding", "utf8");

            string CurrentPath = Directory.GetCurrentDirectory();

            MyEngine.SetProcedurePath(CurrentPath);

            string ProgramPathString = Directory.GetCurrentDirectory() + @"\ini\MeasureSize.hdev";
            string ProcedureCallName = "MeasureSizeLibrary";

            Program       = new HDevProgram(ProgramPathString);
            Procedure     = new HDevProcedure(Program, ProcedureCallName);
            ProcedureCall = new HDevProcedureCall(Procedure);
        }
Beispiel #24
0
 public static void check_data_availability(
     HTuple ExampleDataDir,
     HTuple PreprocessParamFileName,
     HTuple TrainedModelFileName,
     HTuple UsePretrainedModel)
 {
     AddResourcePathToProcedurePath();
     using (HDevProcedureCall call = _check_data_availability.Value.CreateCall())
     {
         SetParameter(call, "ExampleDataDir", ExampleDataDir);
         SetParameter(call, "PreprocessParamFileName", PreprocessParamFileName);
         SetParameter(call, "TrainedModelFileName", TrainedModelFileName);
         SetParameter(call, "UsePretrainedModel", UsePretrainedModel);
         call.Execute();
     }
 }
Beispiel #25
0
        private void LoadBtn_Click(object sender, System.EventArgs e)
        {
            try
            {
                HDevProcedure Procedure = new HDevProcedure("detect_fin");
                ProcCall = new HDevProcedureCall(Procedure);
            }
            catch (HDevEngineException Ex)
            {
                MessageBox.Show(Ex.Message, "HDevEngine Exception");
                return;
            }

            // enable Execute button
            LoadBtn.Enabled    = false;
            ExecuteBtn.Enabled = true;
        }
        public static void Cam1Procedure(HDevProcedureCall m_CamProcedureCall, HTuple hv_hWindowHandle, HObject ho_ImageInput, out HObject ho_Contours)
        {
            try
            {
                m_CamProcedureCall.SetInputIconicParamObject("Image", ho_ImageInput);
                m_CamProcedureCall.SetInputCtrlParamTuple("threshold", 128);

                m_CamProcedureCall.Execute();

                ho_Contours = m_CamProcedureCall.GetOutputIconicParamObject("Contours");
            }
            catch (Exception df)
            {
                HOperatorSet.GenEmptyObj(out ho_Contours);

                // Fun_LogData("视觉处理异常!异常信息:" + df.ToString());
            }
        }
Beispiel #27
0
        private void LoadBtn_Click(object sender, System.EventArgs e)
        {
            try
            {
                HDevProcedure Procedure = new HDevProcedure("Calibrate");
                ProcCall = new HDevProcedureCall(Procedure);

                HDevProcedure ProcChkLight = new HDevProcedure("checkLight");
                ProcChkLightCall = new HDevProcedureCall(ProcChkLight);
            }
            catch (HDevEngineException Ex)
            {
                MessageBox.Show(Ex.Message, "HDevEngine Exception");
                return;
            }


            // enable Execute button
            LoadBtn.Enabled  = false;
            StartBtn.Enabled = true;
        }
Beispiel #28
0
        //C:/Program Files/MVTec/HALCON-13.0/procedures/
        public Vision()
        {
            try
            {
                InitSaveImageFilePath();
                string path = System.Environment.CurrentDirectory + "\\Programs";
                //视觉引擎加载过程
                myEngine.SetProcedurePath(path);
                //视觉脚本程序加载
                HDevProgram myProgram = new HDevProgram(path + "\\Main.hdev");
                //将过程挂载到视觉脚本

                //cam1ProcedureCall1 = new HDevProcedureCall(new HDevProcedure(myProgram, "TileImage"));
                cam1ProcedureCall2 = new HDevProcedureCall(new HDevProcedure(myProgram, "HS9Operate"));
                //cam1ProcedureCall3 = new HDevProcedureCall(new HDevProcedure(myProgram, "TileImage3"));
                OpenCameraAsync();
            }
            catch (Exception ex)
            {
                GlobalVar.AddMessage(ex.Message);
            }
        }
Beispiel #29
0
        public static HTuple SendDataFromPLC(HTuple Data_Type, HTuple Data_Send, HTuple Dxxx, HTuple socket)
        {
            HTuple data = -1;

            try
            {
                HDevProcedure     setDataPlc     = new HDevProcedure("Melsoft_3E_Send");
                HDevProcedureCall setDataPlcCall = new HDevProcedureCall(setDataPlc);
                setDataPlcCall.SetInputCtrlParamTuple("Data_Type", Data_Type);
                setDataPlcCall.SetInputCtrlParamTuple("Data_Tuple", Data_Send);
                setDataPlcCall.SetInputCtrlParamTuple("Destination", Dxxx);
                setDataPlcCall.SetInputCtrlParamTuple("Socket", socket);
                setDataPlcCall.Execute();
                data = setDataPlcCall.GetOutputCtrlParamTuple("CCode");
            }
            catch (Exception ex)
            {
                data = "Error";
            }

            return(data);
        }
Beispiel #30
0
        public static HTuple  RecDataFromPLC(HTuple Data_Type, HTuple Dxxx, HTuple lenght, HTuple socket)
        {
            HTuple data = -1;

            try
            {
                HDevProcedure     getDataPlc     = new HDevProcedure("Melsoft_3E_Revc");
                HDevProcedureCall getDataPlcCall = new HDevProcedureCall(getDataPlc);
                //_getDataPLC.SetInputCtrlParamTuple(["String","Destination","Lenght","Socket"],)
                getDataPlcCall.SetInputCtrlParamTuple("Data_Type", Data_Type);
                getDataPlcCall.SetInputCtrlParamTuple("Destination", Dxxx);
                getDataPlcCall.SetInputCtrlParamTuple("Lenght", lenght);
                getDataPlcCall.SetInputCtrlParamTuple("Socket", socket);
                getDataPlcCall.Execute();
                data = getDataPlcCall.GetOutputCtrlParamTuple("Data_Tuple");
            }
            catch (Exception ex)
            {
                data = "Error";
            }
            return(data);
        }