当前位置: 首页 > news >正文

【301】IDL与C#混合编程

目录:

  • 一、COM_IDL_CONNECT
    • 1. 添加组件
    • 2. 组件初始化
    • 3. 功能调用
    • 4. 数据传递
  • 二、IDLDrawWidget组件

  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#混合编程技术

相关文章:

  • 小总结
  • 【18】万魂杀服务器开发之SDK接入
  • 12c broker fast-start failover - ORA-16820解决
  • Nginx配置——区分PC或手机访问不同域名
  • Eclipse MicroProfile 1.3现已发布
  • VTP的模式(思科)
  • 掀开图片显示介绍的css效果
  • JS判断某变量是否为某数组中的一个值的3种方法
  • Hook技术--Activity的启动过程的拦截
  • AR和VR持续升温,2020年市场规模将达1500亿美元
  • 【转】给Java说句公道话
  • 你可能不知道的Shell
  • Nginx 调优经验记录
  • 怎样解题表
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • 08.Android之View事件问题
  • nginx 负载服务器优化
  • select2 取值 遍历 设置默认值
  • vue:响应原理
  • Vue学习第二天
  • 订阅Forge Viewer所有的事件
  • 技术胖1-4季视频复习— (看视频笔记)
  • 网络应用优化——时延与带宽
  • 一个SAP顾问在美国的这些年
  • 译自由幺半群
  • 与 ConTeXt MkIV 官方文档的接驳
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 最简单的无缝轮播
  • Android开发者必备:推荐一款助力开发的开源APP
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 大数据全解:定义、价值及挑战
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​Linux·i2c驱动架构​
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (+4)2.2UML建模图
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Java数据结构)ArrayList
  • (NSDate) 时间 (time )比较
  • (学习日记)2024.01.09
  • (转)关于多人操作数据的处理策略
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Framework 4.6.2改进了WPF和安全性
  • .Net MVC4 上传大文件,并保存表单
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET关于 跳过SSL中遇到的问题
  • @EventListener注解使用说明
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @拔赤:Web前端开发十日谈
  • [android] 看博客学习hashCode()和equals()