目录:


  C# (C Sharp)是微软公司在2000年6月发布的一种新的编程语言。C#与Java有很多的相似之处,包括了诸如单一继承、界面、与Java几乎同样的语法,和编译成中间代码再运行的过程。它又借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。

  IDL则一直是应用程序开发和科学家进行可视化与分析的首选语言。因为它功能强大,简单易学,很少的几行代码就能实现其他语言很难实现的功能,所以它是进行科学数据分析、可视化表达和跨平台应用开发的高效软件和理想工具。作为第四代语法简单、面向矩阵运算的计算机语言,IDL拥有丰富的分析工具包。同时支持遥感图像处理软件ENVI的二次开发,使得利用IDL进行ENVI二次开发实现数据处理分析和可视化程序变得非常容易。

一、COM_IDL_CONNECT
 
1. 添加组件

  如下图,首先在“引用”出点击右键,如下图所示点击“添加引用”

  

  可以通过 COM 标签找到“COM_IDL_connectLib”直接添加

    

  也可以直接浏览文件,如下面所示的地址,点击“COM_idl_connect.dll”文件

  

2. 组件初始化

  代码如下所示:

COM_IDL_connectLib.COM_IDL_connectClass oCom = new COM_IDL_connectLib.COM_IDL_connectClass();
oCom.CreateObject(0, 0, 0);
3. 功能调用

  COM_IDL_CONNECT 组件具备 IDL 命令行的执行功能,即方法 ExecuteString (string strCommand),其中 strCommand 是命令字符串。

  如果是 pro 源码文件,需要先编译再调用。

oCom.ExecuteString(String.Format(".compile '{0}data_query.pro'", root_dir));
oCom.ExecuteString("data_query, input, output, year");

  root_dir 为路径字符串,第2行中 input、output、year 为相应的参数,调用与 IDL 中一样。

4. 数据传递

  COM_IDL_CONNECT 组件具备 SetIDLVariable 和 GetIDLVariable 这样的方法进行数组数据的共享及程序的调用。

//设置变量,可以传递到执行代码中
oCom.SetIDLVariable("path_input", cmbox_input.Text);
oCom.SetIDLVariable("path_output", cmbox_output.Text);
oCom.SetIDLVariable("year", year); //设置后的变量,可以直接像 IDL 中的变量一样使用
oCom.ExecuteString(String.Format(".compile '{0}data_query.pro'", root_dir));
oCom.ExecuteString("data_query, input, output, year"); //获取 IDL 文件中的系统变量
file_path = oCom.GetIDLVariable("!filepath").ToString();
二、IDLDrawWidget组件
 

参考:idl与c#的数据传递方法研究com_idl_connect

参考:IDL与C#混合编程技术

【301】IDL与C#混合编程的更多相关文章

  1. IDL与C#混合编程技术

    C# (C Sharp)是微软公司在2000年6月发布的一种新的编程语言.C#与Java有很多的相似之处,包括了诸如单一继承.界面.与Java几乎同样的语法,和编译成中间代码再运行的过程.它又借鉴了D ...

  2. matlab和c++混合编程---matlab和vs的环境配置问题及方法和步骤(转载)

    matlab和c++混合编程---方法和步骤 matlab和c++混合编程---matlab和vs的环境配置问题 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序 ...

  3. 如玫瑰一般的PHP与C#混合编程

    故事背景是这样的,有一套项目,服务器端是用C#写的,为了完成某种事情,它需要使用到一个组件,这个组件很小但很重要,很不巧的是,这个这个组件是用PHP语言写的,如果为了使用这个组件而专门搭建一个PHP的 ...

  4. C和C++混合编程中的extern "C" {}

    引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...

  5. C# 托管和非托管混合编程

    在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难.   最直接的实现托管与非托管编程的方法就是 ...

  6. [转载:]C#与Fortran混合编程之本地调用Fortran动态链接库

    前言 C#发展到现在,已是一门相当完善的语言,他基于C语言风格,演化于C++.并依靠强大的.NET底层框架.C#可以用来快速构建桌面及Web应用.然而在我们的实际工作中,尽管C#已经非常完善,但还是不 ...

  7. C#Matlab混合编程类 初始化问题解决方法

    ************** 异常文本 ************** System.TypeInitializationException: “myPlus.matClass”的类型初始值设定项引发异 ...

  8. 国内第一部C#.Net调用Matlab混合编程视频教程

       本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 Matlab和C#混合编程文章目录:[目录]Matlab和C#混合编程文章目录 一.视频说明 2014年的5.1,我将这套视频教 ...

  9. 【5.1送礼】国内第一部Matlab和C#.Net混合编程视频教程【免费】

                  本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新    Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 上一次写博客很久了 ...

随机推荐

  1. getServletContext()方法详解

    javax.servlet.ServletContext接口 一个servlet上下文是servlet引擎提供用来服务于Web应用的接口.Servlet上下文具有名字(它属于Web应用的名字)唯一映射 ...

  2. BZOJ1113 Poi2008 海报PLA【单调栈】【水】

    BZOJ1113 Poi2008 海报PLA Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250 ...

  3. SQl_update,case_when,end

    627.Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and ...

  4. 使 WPF 支持触摸板的横向滚动

    微软终于开始学苹果一样好好做触摸板了(就是键盘空格键下面那一大块).然而鉴于以前没有好好做,以至于 WPF 程序甚至都没有对触摸板的横向滚动提供支持(竖向滚动是直接使用了 MouseWheel,汗-- ...

  5. 【java基础】Java运算符优先级

    Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 ...

  6. Sprint第一个冲刺(第三天)

    一.Sprint介绍 今天我们完成了简单登录界面及美化的任务,完成了此次整个Sprint的百分之十五. 下面是实验截图: 二.Sprint周期 看板: 燃尽图:

  7. matplotlib ----- 清空图片

    关闭单个图: fig = plt.figure(0) # 新图 0 plt.savefig() # 保存 plt. close(0) # 关闭图 0   关闭所有图不用管 fig 号码 fig = p ...

  8. openresty && hashids&& redis 生成短链接

    1. 原理     a. 从redis 获取需要表示的短链接的id( redis incr)     b. hashids 编码 id     c. openresty  conteent_by_lu ...

  9. C#机器学习插件 ---- AForge.NET

    目录 简介 主要架构 特点 学习之旅 简介 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能, ...

  10. oracle之 12.1.0.1.0 C 在 linux 7 上安装报错处理

    环境说明:-- os[root@host-172-16-3-132 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) - ...