C#连接IDL

COM_IDL_CONNECT组件调用方式

一、调用组件

步骤1 新建C#窗口应用程序。

步骤2 添加引用,在添加引用添加名为:“com_idl_connect.dll”文件(...\Exelis\IDL83\resource\bridges\export\COM)。步骤3  添加界面组件,在Form窗体上添加Button控件。

步骤4  在Button控件添加响应函数代码如下:

步骤5 这代码也就相当于在IDL控制台中输入ExecuteString中的内容:

IDL->window,1,title='C# call IDL'

IDL->plot,sin(findgen(200)/200

    步骤6 接下来需要用C#来调用IDL控制台之类的语句都可以在ExecuteString函数中完成。特别需要注意的是“,”的省略与否。最好是在C#定义个string类型先保存要在IDL控制台输入的字符串语句,在调试过程中,string类型没有错的话再带入ExecuteString函数之中即可。

二、传递数据

    如果在IDL编写了一个.pro文件代码,现在需要在C#调用.pro文件进行:数据(C#)->(调用).pro->数据运算(.pro)->数据传出(C#)。这个过程经历了数据传入->数据运算->数据传出的过程,本质上是对IDL的控制台调用IDL的.pro文件得到返回值。下面输入一个实例来表达整个过程。

步骤1 用IDL编写.pro文件代码如下图。并将文件复制保存在当前C#工程的Debug目录下面。

步骤2 在C# Button控件编写响应函数如下代码所示:


传递出来的参数就是在object当中。在这个过程当中很容易出现调用错误,特别的多写或者少写空格之类的,就会出现如下面错误:


修改方法:对c#中currentcommand的字符内容直接丢到IDL控制台中跑一边,如果达到你想要的步骤效果,即成功,这样一步一步调试可以很安全地调用成功。

步骤3 传递数组变量

数组变量可正常按照C#的数组赋值方法设置n位数组变量,通过SetIDLVariable函数赋值到IDL的变量当中。直接贴代码如下:


三、小结

    以上操作基本满足了C#界面显示、IDL算法设计联合调用的需求,在遥感图像处理等方面,即利用IDL直接调用ENVI中的函数,可以通过在IDL控制台尝试调用已有的ENVI功能的.pro文件,然后在C#中通过ExecuteString函数直接仿IDL控制台的模式一一调用传参出来可视化显示即可。

    本文是第一篇博文,无排版、纯手打,仅是学习过程中的一些自我小结,做的一些小Demo也可以在书上找到,但是自己亲试可用,在这个调试的过程中遇到一些小问题需要注意的事项与大家分享。

猜你喜欢

转载自blog.csdn.net/weian4913/article/details/80543741