C#通過COM組件調用IDL的pro程序


如果在“COM_IDL_connectLib.COM_IDL_connect oComIDL = new COM_IDL_connectLib.COM_IDL_connect();”步驟提示“...80040154沒有注冊類...”,則需要在管理員權限下利用regsvr32命令注冊“...\Exelis\IDL85\resource\bridges\export\COM\COM_idl_connect.dll”組件,如下圖:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FloodMonitor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, MouseEventArgs e)
        {
//新建COM_IDL_CONNECT對象 COM_IDL_connectLib.COM_IDL_connect oComIDL
= new COM_IDL_connectLib.COM_IDL_connect(); //對象初始化————必不可少 oComIDL.CreateObject(0, 0, 0); string infile = @"G:\Temp\應用示范子系統\Flood\S1A_IW_GRDH_1SDV_20180907T100312_20180907T100337_023591_0291E9_9B89_Cal_EC_Sub4.dat"; string outfile = @"G:\Temp\應用示范子系統\Flood\S1A_IW_GRDH_1SDV_20180907T100312_20180907T100337_023591_0291E9_9B89_Cal_EC_Sub4_Water.dat"; string tempfile = @"G:\Temp\應用示范子系統\Flood\S1A_IW_GRDH_1SDV_20180907T100312_20180907T100337_023591_0291E9_9B89_Cal_EC_Sub4_PCA2.dat"; oComIDL.ExecuteString(".compile E:\\IDLWORK_8.5\\Application_Demonstration\\source\\FloodMonitor.pro"); //執行主成分分析 oComIDL.ExecuteString("ret = FloodMonitor('" + infile + "','" + tempfile + "', error=error)"); object objRet1 = oComIDL.GetIDLVariable("ret"); string ret1 = objRet1.ToString(); if (String.Equals(ret1, "1")) { MessageBox.Show("主成分分析完成!"); } else { object objError = oComIDL.GetIDLVariable("error"); string error = objError.ToString(); MessageBox.Show("主成分分析失敗!" + error); } //設置閾值 string threshold = "4.95"; //閾值分割 oComIDL.ExecuteString("ret = FloodMonitor_GetFlood('" + tempfile + "'," + threshold + ",'" + outfile + "')"); object objRet2 = oComIDL.GetIDLVariable("ret"); string ret2 = objRet2.ToString(); if (String.Equals(ret2, "1")) { MessageBox.Show("洪水覆蓋范圍提取完成!"); } else { object objError = oComIDL.GetIDLVariable("error"); string error = objError.ToString(); MessageBox.Show("洪水覆蓋范圍提取失敗!" + error); } oComIDL.DestroyObject(); } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM